Làm thế nào Scrum có thể thích nghi với môi trường học thuật?


15

Tôi hiện đang làm việc với một giáo sư tại trường đại học của tôi để phát triển chương trình giảng dạy mới cho các khóa học về Kỹ thuật phần mềm và Thiết kế Capstone được cung cấp trong trường đại học của tôi.

Cho đến gần đây, cả hai khóa học đều sử dụng mô hình thác nước độc quyền, và do đó sinh viên đã dành phần lớn thời gian để viết các báo cáo dài. Sau nhiều áp lực từ tôi, giáo sư của tôi đã quyết định đưa Scrum vào chương trình giảng dạy Kỹ thuật phần mềm trong học kỳ vừa qua.

Nửa đầu của học kỳ vẫn là thác nước, với các sinh viên viết báo cáo thiết kế 40 trang và các tài liệu đặc tả phần mềm. Giữa học kỳ, tất cả các đội được yêu cầu phát hành bản demo các ứng dụng của họ. Vào thời điểm đó, khóa học chuyển sang Scrum, với hai lần chạy nước rút 3 tuần. Bây giờ chúng tôi đang cố gắng tìm ra cách loại bỏ hoàn toàn thác nước và tạo ra một chương trình giảng dạy dựa trên Scrum độc quyền.

Thật không may, chúng tôi đã gặp một vài sự không tương thích giữa Scrum và các sinh viên:

  • Các cuộc họp Scrum hàng ngày là gần như không thể cho sinh viên. Ngay cả trong lớp học, thật bất tiện cho sinh viên khi tổ chức các cuộc họp Scrum vì giáo sư thường giảng bài.
  • Ước tính điểm / giờ là khó khăn, vì sinh viên thiếu kinh nghiệm và do đó không thể dự đoán chính xác thời gian một cái gì đó sẽ mất bao lâu.
  • Scrum hoạt động tốt nhất với các nhà phát triển đồng thời, toàn thời gian, nhưng sinh viên thì không. Nhiều nhất, sinh viên dành 15-20 giờ mỗi tuần cho khóa học, và việc tổ chức các cuộc họp công việc có thể vô cùng khó khăn. Các đội có thể có tối đa 10 sinh viên (và luôn có một hoặc hai người chậm chạp).
  • Giáo sư thèm tài liệu! Tôi chưa từng nghe về bất kỳ báo cáo Scrum nào chỉ là các biểu đồ tồn đọng và biểu đồ (mà tôi không chắc sẽ đủ để xoa dịu các học giả).
  • Sinh viên thường cho rằng nhanh nhẹn có nghĩa là "Nhảy ngay vào và bắt đầu viết mã mà không cần nhìn lại". Điều này dẫn đến một số mã khủng khiếp nhất có thể tưởng tượng. Do đó, tôi đang tìm cách để thực thi thiết kế phù hợp mà không yêu cầu tài liệu 50 trang hoặc một đống sơ đồ UML.

Với những vấn đề này, bạn nghĩ giáo sư của tôi và tôi có thể điều chỉnh Scrum như thế nào để hoạt động trong môi trường học thuật (và chúng ta thậm chí có nên bận tâm với Scrum ngay từ đầu không)? Ngoài ra, vẫn còn giá trị để dạy mô hình thác nước?

Cảm ơn trước cho bất kỳ thông tin phản hồi!


2
Âm thanh như thể bạn đang cố gắng thực hành SCRUM thay vì dạy các nguyên tắc cơ bản về cách thức hoạt động của nó
CodeART

Câu trả lời:


3

Tôi sẽ do dự để loại bỏ Thác nước trên bảng rất nhanh.

Mặc dù nó là một mô hình thiếu sót để thực sự xây dựng các hệ thống phần mềm, nhưng đó không phải là một mô hình giảng dạy tồi để hướng dẫn các thực hành tốt cho từng giai đoạn của vòng đời. Bất kể mô hình quy trình mà bạn áp dụng cho dự án, bạn vẫn thực hiện các yêu cầu kỹ thuật, kiến ​​trúc và thiết kế hệ thống, thực hiện, thử nghiệm, phát hành và bảo trì (bao gồm cả tái cấu trúc và nâng cao). Sự khác biệt là cách các giai đoạn này được tổ chức và tiến hành, nhưng tất cả các hoạt động vẫn diễn ra.

Tôi cho rằng việc bạn chuyển từ Waterfall sang Scrum ở giữa dự án không phải là ý tưởng hay nhất. Chìa khóa thành công của Scrum là một dự án dài hạn. Ba đến năm lần chạy nước rút đầu tiên là nhóm giải quyết một vận tốc, tìm hiểu quá trình và trải qua quá trình phát triển đội. Mặc dù bạn đang thực hiện các chuyển động, nhưng nó không thực sự là Scrum vào thời điểm đó. Ngoài ra, cố gắng tạo ra một chương trình giảng dạy dựa trên Scrum độc quyền có lẽ là một ý tưởng tồi vì Scrum không phải là viên đạn bạc - tốt hơn là dạy các cách thực hành tốt nhất thay vì một phương pháp duy nhất. Trong lực lượng lao động, không phải tất cả các dự án sẽ sử dụng Scrum. Trên thực tế, trong một số môi trường, Scrum sẽ gây bất lợi cho sự thành công của dự án.

Bạn đã tìm thấy vấn đề với Scrum trong môi trường học thuật và một số vấn đề khó giải quyết thỏa đáng.

Vấn đề không nằm trong danh sách không tương thích của bạn là việc ước tính là khó khăn. Vâng, đúng vậy. Nhưng cách duy nhất để có được ước tính tốt hơn là ước tính và so sánh thực tế với ước tính. Học sinh nên ước tính kích thước, thời gian và nỗ lực bằng cách sử dụng các phương tiện khác nhau (điểm câu chuyện, dòng mã nguồn, giờ, trang, giờ người) để họ sẵn sàng hơn để làm điều đó sau khi tốt nghiệp và gia nhập lực lượng lao động.

Nhu cầu về tài liệu là một cái gì đó có thể được giải quyết từ cả quan điểm của giáo sư và quan điểm của các sinh viên. Các phương pháp Lean cho chúng ta biết rằng tài liệu không tăng thêm giá trị cho nhóm hoặc khách hàng là lãng phí (về thời gian và chi phí). Tuy nhiên, một số tài liệu là cần thiết để đạt được một số mục tiêu của cả sinh viên và giáo sư (khách hàng / khách hàng) cho các mục đích khác nhau. Nhìn chung, nó có vẻ như là một cơ hội để dạy quy trình may và quản lý dự án định lượng (có vai trò ngay cả trong các phương pháp nhanh).

Đối với các cuộc họp và lên lịch Scrum, có hai ý tưởng nảy ra trong đầu tôi. Đầu tiên là điều này chỉ ra rằng Scrum có thể không phải là quy trình tốt nhất để sử dụng trong môi trường học thuật. Không có "mô hình quy trình tốt nhất" duy nhất cho các dự án phần mềm, với các yếu tố như lịch trình, nhân sự, khả năng hiển thị và kinh nghiệm của nhóm phát triển (trong số những người khác).

Nhìn chung, tôi khuyên bạn nên nhấn mạnh các thực tiễn tốt, quy trình may và cải tiến quy trình so với các phương pháp đơn lẻ. Điều này sẽ cho phép bạn có hiệu quả nhất đối với mọi người tham gia các khóa học, và đưa họ đến nhiều phương pháp quy trình khác nhau và hiểu những cách thực hành tốt nhất cho một tập hợp các điều kiện nhất định.


Vì bạn đang làm việc để xây dựng một chương trình giảng dạy đại học, tôi sẽ cung cấp một cái nhìn tổng quan ở mức độ cao về cách chương trình giảng dạy kỹ thuật phần mềm tại trường đại học mà tôi theo học phù hợp với nhau.

Đây là một kỹ thuật phần mềm giới thiệu đã đi qua dự án theo mô hình thác nước, với các bài giảng trong mỗi giai đoạn tương ứng với các cách khác nhau để tiến hành các hoạt động của giai đoạn đó. Các đội đã tiến bộ qua các giai đoạn với cùng một tỷ lệ. Có những ranh giới được xác định rõ ràng phù hợp với mô hình giảng dạy cho một nhóm người không có kinh nghiệm tối thiểu làm việc trong các nhóm để xây dựng phần mềm. Trong suốt khóa học, các tài liệu tham khảo đã được thực hiện cho các phương pháp khác - các phương pháp nhanh khác nhau (Scrum, XP), Quy trình hợp nhất Rational, Mô hình xoắn ốc - liên quan đến các ưu điểm và nhược điểm của chúng.

Về các hoạt động, có các khóa học cụ thể để thảo luận về yêu cầu kỹ thuật, kiến ​​trúc và thiết kế (hai khóa học - một khóa tập trung vào thiết kế chi tiết sử dụng phương pháp hướng đối tượng và một khóa tập trung vào kiến ​​trúc hệ thống), một số khóa học tập trung vào thiết kế và triển khai khác nhau các lớp hệ thống (thời gian thực và hệ thống nhúng, hệ thống doanh nghiệp, hệ thống đồng thời, hệ thống phân tán, v.v.) và kiểm thử phần mềm.

Ngoài ra còn có ba khóa học dành riêng cho quy trình phần mềm. Quy trình kỹ thuật phần mềm và Quản lý dự án tập trung vào các thực tiễn tốt nhất để quản lý dự án phần mềm liên quan đến nhiều phương pháp. Một khóa học quy trình thứ hai dạy các phép đo, số liệu và cải tiến quy trình (nhấn mạnh CMMI, Six Sigma và Lean). Cuối cùng, có một khóa học quy trình dạy phát triển phần mềm linh hoạt (Scrum, Lập trình cực đoan, Crystal, DSDM đã thảo luận) bằng cách sử dụng một dự án được thực hiện bằng phương pháp Scrum.

Dự án capstone là một dự án hai phần tư được thực hiện cho một công ty tài trợ và được điều hành hoàn toàn bởi nhóm dự án sinh viên, với sự hướng dẫn từ cả các nhà tài trợ và cố vấn giảng viên. Mọi khía cạnh của cách tiến hành dự án là tùy thuộc vào sinh viên, trong bất kỳ ràng buộc nào được quy định bởi các nhà tài trợ. Thời hạn duy nhất bắt buộc của trường đại học là một bài thuyết trình tạm thời nửa chừng (10 tuần) vào dự án, một bài thuyết trình cuối cùng ở cuối và một bài thuyết trình poster bốn ngay trước khi kết thúc. Mọi thứ khác tùy thuộc vào nhà tài trợ và nhóm đồng ý.


3

Khi tôi học thạc sĩ về công nghệ phần mềm, có một khóa học gọi là Quy trình phần mềm xử lý XP, Scrum và các cách tiếp cận nhanh khác. Về cơ bản, toàn bộ lớp đã thành lập một công ty phần mềm giả định và được hướng dẫn phát triển một phần mềm khá công phu trong suốt thời gian khóa học diễn ra. Các bài giảng là về những thứ như thực hành XP, thực hiện các cuộc họp độc lập, v.v.

Hầu hết các sinh viên đã nghe về các kỹ thuật này và thường quan tâm đến việc áp dụng chúng. Tất nhiên, không có cách nào để buộc nhóm phải thực sự làm việc lặp đi lặp lại, v.v. nó đơn giản là cách dễ nhất và đáng tin cậy nhất để tạo ra bất cứ thứ gì có giá trị với một nhóm người và một lượng nhỏ thời gian.

Một điều cần nhớ: đảm bảo bạn chơi tốt khách hàng và thay đổi một số yêu cầu chính giữa chừng. Hoặc "quên" đề cập đến chúng ban đầu.


1

Vào thời điểm đó, khóa học chuyển sang Scrum, với hai lần chạy nước rút 3 tuần. Bây giờ chúng tôi đang cố gắng tìm ra cách loại bỏ hoàn toàn thác nước và tạo ra một chương trình giảng dạy dựa trên Scrum độc quyền.

Là mục đích để tạo điều kiện phát triển, hoặc để học Scrum, hoặc - tôi đoán - cả hai? Tôi sẽ xem xét các lần chạy nước rút ngắn hơn để tăng tốc quá trình học tập.

• Các cuộc họp Scrum hàng ngày gần như không thể đối với sinh viên. Ngay cả trong lớp học, thật bất tiện cho sinh viên khi tổ chức các cuộc họp Scrum vì giáo sư thường giảng bài.

Có lẽ bạn có thể thay thế đứng lên hàng ngày bằng một hình thức ít nghiêm ngặt hơn, khi nó hoạt động tốt nhất cho các sinh viên. Ngoài ra, không phải ai cũng cần tham gia vào mọi cuộc họp.

• Ước tính điểm / giờ là khó khăn, vì sinh viên thiếu kinh nghiệm và do đó không thể dự đoán chính xác thời gian một cái gì đó sẽ mất bao lâu.

Ước tính thời gian lịch thậm chí còn khó khăn hơn, vì những lý do tương tự :-) Với các điểm câu chuyện, bạn không ước tính thời gian sẽ diễn ra: bạn ước tính kích thước tương đối của nó. Thời lượng có nguồn gốc.

• Scrum hoạt động tốt nhất với các nhà phát triển đồng thời, toàn thời gian, nhưng sinh viên thì không. Nhiều nhất, sinh viên dành 15-20 giờ mỗi tuần cho khóa học, và việc tổ chức các cuộc họp công việc có thể vô cùng khó khăn. Các đội có thể có tối đa 10 sinh viên (và luôn có một hoặc hai người chậm chạp).

Có thể thử với các đội nhỏ hơn? 10 là trên thang điểm cao hơn cho một nhóm Scrum. Tôi nghĩ bạn cũng có thể thành công với các nhóm phân phối toàn thời gian, nhưng tất nhiên điều đó khó hơn! Hãy để đó là một bài học trong chính nó.

• Giáo sư thèm tài liệu! Tôi chưa từng nghe về bất kỳ báo cáo Scrum nào chỉ là các biểu đồ tồn đọng và biểu đồ (mà tôi không chắc sẽ đủ để xoa dịu các học giả).

Scrum không cho biết loại tài liệu nào là bắt buộc. Như một vấn đề của thực tế, thậm chí không có biểu đồ phát sinh là bắt buộc. Điều này không có nghĩa là tài liệu bị cấm: nhóm nên xuất trình tài liệu cần thiết, bao gồm các báo cáo mà giáo sư cho là cần thiết.

• Học sinh thường cho rằng nhanh nhẹn có nghĩa là "Nhảy ngay vào và bắt đầu viết mã mà không cần nhìn lại". Điều này dẫn đến một số mã khủng khiếp nhất có thể tưởng tượng. Do đó, tôi đang tìm cách để thực thi thiết kế phù hợp mà không yêu cầu tài liệu 50 trang hoặc một đống sơ đồ UML.

Không chỉ sinh viên :-) Hầu hết các nhóm Scrum sử dụng các thực hành XP như TDD (Phát triển hướng thử nghiệm) và tái cấu trúc: Tôi đề nghị bạn kết hợp điều đó trong chương trình giảng dạy.

Ngoài ra, vẫn còn giá trị để dạy mô hình thác nước?

Có, trong hai lý do ít nhất: Thứ nhất, không chắc chắn các sinh viên của bạn sẽ sử dụng Scrum trong cuộc sống công việc của họ, và thứ hai, tôi tưởng tượng sẽ dễ hiểu hơn về bản chất của sự phát triển nhanh nếu bạn có thứ gì đó để so sánh.


0

Nghe có vẻ hơi giống với một chủ đề tôi đã chụp một lần.

Một vài suy nghĩ:

  • Bạn có thực sự có một cuộc họp scrum toàn đội không? Subeams sẽ làm việc?
  • Nếu "không nhìn lại" có nghĩa là không tái cấu trúc, thì hãy đánh giá bằng chứng tái cấu trúc?
  • Đánh giá sự phản ánh và tài liệu - yêu cầu học sinh duy trì một blog về các hoạt động của họ. (Đây thực sự là một kỹ năng khá hữu ích cho nơi làm việc - nhiều hơn so với hầu hết các tài liệu chính thức)
  • Nếu ước tính là xấu, hy vọng họ đang học - họ có thể theo dõi các biến thể giữa ước tính và thực tế, phản ánh về sự khác biệt và chứng minh rằng họ đã học được điều gì không?
  • Có những cách ít chính thức hơn để ghi lại một thiết kế sẽ phù hợp?
  • Skype hoặc Gchat hoặc một cái gì đó đủ cho một số cuộc họp scrum?

0

Lời khuyên của tôi là tách biệt và cô lập những gì bạn đang cố gắng dạy. Nếu đó là một khóa học về thiết kế phần mềm hoặc một số môn học kỹ thuật phần mềm khác (thuật toán hoặc không có gì), hãy tập trung vào đó. Nếu liên quan đến SCRUM trở thành một trở ngại (như bạn gợi ý) thì đừng bận tâm đến nó.

Làm thế nào chúng tôi đã làm điều này khi tôi còn học đại học là có một khóa học dành riêng cho các phương pháp nhanh. Khóa học bao gồm một dự án phát triển sẽ được chạy theo SCRUM hoặc XP. Phần mềm thực tế sẽ được phân phối là không đáng kể, vì trọng tâm của khóa học không phải là lập trình hay thiết kế mà là quá trình. Lý do ở đây cũng giống như lý do tại sao bạn không nên kết hợp các môn học phát triển phần mềm "lõi cứng" với các môn học phương pháp vì người này có xu hướng làm lu mờ người kia và sinh viên hầu như không sẵn sàng hoặc không đủ kỹ năng để xử lý cả ở giai đoạn đó.

Việc cung cấp khóa học là những thứ như báo cáo kế hoạch chạy nước rút, báo cáo tiến độ hàng tuần, hồi cứu, báo cáo phát sinh cộng với mỗi tuần chúng tôi có tối thiểu hai phiên bao gồm một cuộc họp đứng lên / nhóm trong đó các TA sẽ lưu hành và lắng nghe.

Khóa học này cũng bao gồm TDD (Phát triển hướng thử nghiệm) và điều đó đã làm việc rất tốt.

Ngoài ra, vẫn còn giá trị để dạy mô hình thác nước?

Nó chắc chắn là như vậy. Nhiều công ty sử dụng các phiên bản của mô hình này cho các dự án của họ (PPS, RUP, PROPS, v.v.). Nhiều người tìm thấy (chính xác, theo ý kiến ​​của tôi) rằng SCRUM "thuần túy" phù hợp hơn cho việc bảo trì liên tục so với các dự án. SCRUM (và Agile nói chung) đòi hỏi sự linh hoạt nhất định về phạm vi và khả năng đàm phán các yêu cầu và giao hàng trên đường đi. Không phải tất cả các dự án đều hoạt động như vậy, chúng là nhị phân: phân phối X tại thời điểm Y, tất cả các dự án khác đều là thất bại.


0

Quan điểm của khóa học Kỹ thuật phần mềm học thuật là dạy cho các giai đoạn cơ bản của vòng đời phần mềm - phân tích, thiết kế, triển khai, kiểm tra cùng với việc sử dụng các tiêu chuẩn chất lượng phần mềm thực tế thay vì mã chất lượng bài tập về nhà thông thường.

Tuy nhiên, có giá trị trong việc chứng minh thực hành sử dụng quy trình không thác nước , tuy nhiên, vì lý do bạn cho rằng SCRUM không phải là một quy trình phù hợp - sinh viên học nhiều khóa mỗi học kỳ, nhiều người cũng có việc làm thực sự khi học, do đó bạn không thể có 100 % thành viên nhóm chuyên dụng hoặc tiến hành các cuộc họp hàng ngày.

Thay vào đó, hãy xem xét sử dụng một quy trình lặp ít linh hoạt hơn như UP (RUP).

Để hiển thị giá trị so với quá trình thác nước, thay đổi yêu cầu giữa các lần lặp. Điều này sẽ cho thấy sự khác biệt giữa UP và thác nước và gợi ý về giá trị của việc sử dụng các quy trình nhanh.

Chứng minh thác nước sau này sẽ là dư thừa vì UP bao gồm tất cả các giai đoạn của thác nước.

Vì các học kỳ tương đối ngắn, nên 2 lần lặp nhỏ sẽ thành hiện thực.

Cung cấp một khung rộng cho sinh viên sử dụng, vì trọng tâm của khóa học này không nên là chiều sâu của việc thực hiện, có những khóa học khác cho điều đó, thay vào đó nên nhấn mạnh các tiêu chuẩn mã hóa và kiểm tra đơn vị.

Trong các khóa học, các bài giảng dạy lý thuyết về một vài quy trình, ví dụ như thác nước, UP, XP, SCRUM và Kanban (cùng với các chủ đề khác, ví dụ như yêu cầu viết, UML, thử nghiệm, v.v.).

Đối với các sinh viên đã hoàn thành khóa học trên, hãy xem xét một hội thảo SCRUM riêng biệt như một khóa học tự chọn, mất một khoảng thời gian hai tuần toàn thời gian trong học kỳ mùa hè.


-1

Scrum hoạt động nếu bạn có một dự án dài hạn / học kỳ và lớp được chia thành 6 đến 10 nhóm người. Sau đó, bạn có thể dành 10 phút cuối cùng của giờ học cho cuộc họp scrum.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.