Đây là phần 2 của bản hướng dẫn về dự án Capstone:

Capstone là dự án “thực” được công ti trong công nghiệp trao cho sinh viên đại học khi họ ở năm cuối trong trường. Mục đích chính là để giúp cho sinh viên học mọi kĩ năng họ cần làm tốt khi họ làm việc trong công nghiệp phần mềm. Trong những kĩ năng này, làm việc tổ là kĩ năng quan trọng nhất. Mọi dự án trong công nghiệp đều là công việc tổ cho nên làm sao sinh viên học được cách làm việc cùng nhau là rất quan trọng cho thành công của họ về sau trong cuộc sống.

Một trong những hoạt động đầu tiên trong dự án Capstone là kĩ năng kiểm điểm của từng thành viên để nhận diện cách từng người có thể đóng góp tốt nhất cho dự án. Cùng nhau tổ phải xác định vai trò, trách nhiệm cho từng thành viên tổ. Trong khi không ai trong tổ là “ông chủ”, vai trò của người quản lí dự án được cần tới để phối hợp, lập kế hoạch, và theo dõi dấu vết các hoạt động của tổ. Người quản lí dự án (PM) giữ cho tổ được hội tụ và đảm bảo rằng công việc được thực hiện đúng thời gian. PM phải kiểm điểm công việc của từng thành viên, để chắc rằng họ đáp ứng yêu cầu và chất lượng. PM làm việc chặt chẽ với mọi thành viên tổ để giám sát các hoạt động của tổ và đảm  bảo rằng các cuộc họp của tổ là hiệu quả và hiệu lực. PM cũng xác định, thu thập và phân tích độ đo dự án để chắc chất lượng và hiệu năng của dự án đáp ứng mong đợi của khách hàng. PM phải chắc rằng mọi phần mềm được tổ phát triển đều được kiểm thử kĩ lưỡng và được làm tài liệu. Đây là vai trò quan trọng nhất trong dự án Capstone cho nên tổ phải lựa chọn người có kĩ năng nhất cho vai trò này (Lưu ý: Đôi khi vai trò này có thể được quay vòng cho từng pha phát triển cho nên mọi người sẽ có cơ hội để làm nó).

Bên cạnh PM, có các vai trò khác mà các thành viên tổ cũng phải nhận diện như người quản lí cấu hình (SCM), người đảm bảo chất lượng phần mềm (SQA), người quản lí kiểm thử v.v.. Vì có nhiều pha phát triển, các thành viên tổ có thể lần lượt chuyển các vai trò cho nhau qua từng pha. Chẳng hạn, thành viên này giả định giữ vai trò SQA trong pha thiết kế rồi chuyển cho người khác làm SQA trong pha tiếp (Lưu ý: Đây là bài tập tốt trong làm việc tổ, sinh viên phải làm việc cùng nhau và chia sẻ trách nhiệm. Cách họ làm việc cùng nhau, cách họ phân phối công việc trong tổ sẽ xác định liệu dự án Capstone sẽ thành công hay không). Thỉnh thoảng, sinh viên không đồng ý lẫn nhau thì giáo sư phải bước vào và phân công vai trò cho từng thành viên. Trong trường hợp đó, điều đó rõ ràng là một chỉ báo rằng mọi thành viên đã không học được về làm việc tổ và điều đó có thể là rủi ro chính. Giáo sư phải nhắc nhở sinh viên về quyết tâm của họ với làm việc theo tổ. Thỉnh thoảng, có những kĩ năng mà tổ cần nhưng không có. Trong trường hợp đó giáo sư có thể phân công cho các thành viên tổ học những kĩ năng này. (Chẳng hạn, tổ quyết định dùng cách tiếp cận mau lẹ agile nhưng họ không có kĩ năng của thầy Scrum cho nên ai đó phải học kĩ năng này để thực hiện vai trò này.)

Tổ phải quyết định về số giờ mà họ phải làm việc cùng nhau như một tổ. Bởi vì các thành viên có thể có những giới hạn nào đó (một số có thể không có khả năng làm việc vào ngày nào đó, giờ nào đó, bởi vì có giờ trên lớp, hỗ trợ gia đình, hay các vấn đề khác liên quan tới tính sẵn có của họ). PM phải làm việc cùng tổ để tạo ra “lịch biểu tổ” để đặt ra thời gian mà tổ làm việc cùng nhau. Các thành viên tổ phải “đi làm” đúng giờ. Thỉnh thoảng việc vắng mặt trong công việc tổ là vấn đề. PM và tổ phải nhắc nhở các thành viên vắng mặt về cam kết với dự án. Nếu điều đó tiếp tục, PM phải báo cáo cho giáo sư. Trong trường hợp đó, sinh viên vắng mặt phải bị quản chế. Nếu vi phạm việc quản chế, sinh viên đó phải bị yêu cầu ra khỏi dự án (Điều này nghĩa là thất bại của lớp này. Không sinh viên nào có thể tốt nghiệp mà không hoàn thành dự án Capstone).

Trong các năm học, sinh viên làm việc trong tổ cho nên họ nên hiểu cách làm việc tổ. Tuy nhiên, dự án Capstone là lần đầu tiên nhiều người làm việc trên dự án “thực” cho nên điều quan trọng với họ là học cách xây dựng tổ hiệu quả. Thuộc vào một tổ là kết quả của phần tình cảm nhiều hơn bản thân bạn. Sinh viên phải học cách gạt sang bên bản ngã cá nhân của họ, quyền lợi riêng của họ, và làm việc hướng tới mục đích chung. Trong dự án Capstone, mọi thành viên phải đóng góp cho thành công của dự án. Họ phải tạo ra kết quả. Lúc bắt đầu dự án Capstone, giáo sư đặt những mong đợi và mục đích nào đó cho tổ nhưng từng thành viên cần hiểu tại sao họ phải làm việc như một tổ chứ không như cá nhân. Họ phải hiểu rằng đây là đào tạo cuối cùng của họ có tổ hợp mọi tri thức mà họ đã học trong ba năm trước và áp dụng vào dự án “thực”. Đây là cơ hội cho họ học để chuyển tri thức hàn lâm thành kĩ năng “thực”. Do đó, họ phải hiểu tầm quan trọng của hoạt động này và quyết tâm hoàn thành nó.

Sau khi các thành viên tổ đã đồng ý về vai trò và trách nhiệm của họ, tổ phải đánh giá tính khả thi về năng lực của nó để xây dựng sản phẩm phần mềm. Tổ có thể hoàn thành được dự án trong lịch biểu năm học của trường không? Dự án có thể thành công không? Có rủi ro hay khó khăn nào của dự án? Các thành viên tổ phải tự hỏi họ: “Chúng ta có người đúng trong dự án này không?” Các thành viên tổ có tri thức và kĩ năng để hoàn thành dự án này không? Nếu không, tổ đi đâu để có được sự giúp đỡ mà nó cần? Tổ có cảm thấy nó có sự hỗ trợ được cần tới để hoàn thành mục đích của nó không? Tổ có viễn kiến rõ ràng về sản phẩm và kế hoạch để hoàn thành dự án không? Tổ có xác định được mục đích của dự án, kết quả của nó, thời gian của nó không? Nó đo thế nào cho cả kết quả công việc của nó và qui trình tổ đi theo để hoàn thành nhiệm vụ của họ? Các thành viên tổ có hiểu vai trò và trách nhiệm của họ rõ không? Mối quan hệ và tính đảm nhiệm của tổ có được mọi thành viên hiểu không? Có qui trình được xác định để cho các thành viên tổ có thể tuân theo một cách nhất quán không? Các thành viên tổ có giữ tính đảm nhiệm lẫn nhau, quyết tâm và kết quả cho thời gian dự án không? Tổ có thiết lập các qui tắc ứng xử trong khu vực như giải quyết xung đột, ra quyết định và quản lí họp không? Các thành viên tổ có rõ ràng về ưu tiên của các nhiệm vụ của họ không? Các thành viên tổ có trao đổi rõ ràng và trung thực với nhau không? Các thành viên tổ có cảm thấy trách nhiệm và tính đảm nhiệm cho thành tựu của tổ không?

Nếu tổ là trung thực với nhau và có câu trả lời tích cực cho những câu hỏi này thì họ có thể bắt đầu dự án Capstone. Nếu họ vẫn có vấn đề hay câu hỏi thì họ phải thảo luận với giáo sư để xin hướng dẫn đúng. Bất kì vấn đề nào không giải quyết trước khi dự án bắt đầu có thể trở thành rủi ro và tác động lên thành công của dự án.

—-English version—-

A Guide to Capstone Project part 2

This is part 2 of the guide to Capstone project:

Capstone is a “Real” project given by companies in the industry to college students when they are in the last year of school. The main purpose is to help students learn all the skills they need to do well when they work in the software industry. Among these skills, teamwork is the most important one. All projects in industry are team works so how student learn to work together is very important to their success later in life.

One of the first activities in Capstone project is a skills review of each member to identify how each can best contribute to the project. Together the team must define roles, responsibilities for each team member. While nobody on the team is “The Boss,” a project manager role is needed to coordinate, plan, and track the team’s activities. The Project Manager (PM) keep the team focused and makes sure that the work gets done on time. The PM must review each member’s work, make sure that they meet the requirements and quality. The PM works closely with all team members to monitor the team’s activities and ensures that the team’s meetings are effective and efficient. The PM also defines, collects, and analyzes project metrics to make sure the project’s quality and performance meet the client’s expectation. The PM makes sure that all software developed by the team is thoroughly tested and documented. This is the most important role in Capstone project so the team must select the most skillful person for this role (Note: Sometime this role can be rotated for each development phase so everyone will have a chance to do it).

Beside the PM, there are other roles that team members must also identified such as Software Configuration manager (SCM), Software Quality Assurance (SQA), Testing manager etc.. Since there are several development phases, team members can take turn to switch roles with each other for each phase. For example, one member assumes the role of SQA during design phase then switch to others to do SQA in the next phase (Note: This is a good exercise in teamwork, students must work together and share responsibilities. How they work together, how they distribute works among the team will determine whether the Capstone project will be successful or not). Sometime, students do not agree with each other then professor must step in and assigns roles for each members. In that case, it is clearly an indication that members have not learned about teamwork and it could be a major risk. Professor must remind students about their commitment to teamwork. Occasionally, there are skills that the team need but does not have. In that case professor may assign team members to learn these skills. (For example, the team decide to use agile approach but they do not have the skills of Scrum master so someone have to learn this skill to perform this role).

The team must decide on the number of hours that they must work together as a team. Because member may have certain limitations (Some may not be able to work on certain days, certain time, because of classes, support family, or other issues relevant to their availability). The PM must work with the team to create a “Team Schedule” to set time that the team works together. Team members must “go to work” on time. Sometime absence from team work is an issue. The PM and the team must remind the absent member about the commitment to project. If it continues, PM must reported to the professor. In that case, the absent student must be put on probation. If violate the probation, that student must be asked to leave the project (This mean a failure of this class. No student can graduate without complete the Capstone project).

Throughout school years, students work in team so they should understand teamwork. However, Capstone project is the first time many are working on “real” project so it is important for them to learn how to develop an effective team. Belonging to a team is a result of feeling part of something larger than yourself. Students must learn to put aside their own ego, their own interests, and work toward a common goals. In Capstone project, every members must contribute to the success of the project. They must produce the results. At the beginning of Capstone, professor sets certain expectations and goals for the team but each member needs to understand why they must work as a team and not as individual. They must understand that this is their final training that combines all knowledges that they have learned in their past three years and apply in a “Real” project. This is an opportunity for them to learn to transfer their academic knowledge into “real” skills. Therefore, they must understand the important of this activity and commit to accomplish it.

After team members have agreed on their roles and responsibilities, the team must assess the feasibility of its capability to develop the software product. Can the team complete the project during this school calendar schedule? Is the project likely to be a success? What are the risks or difficulty of the project? Team members must ask themselves: “Do we have the right people in this project? Do team members have the knowledge and skills to complete this project? If not, where does the team go to get the help it needs? Does the team feel it has the support needed to accomplish its goals? Does the team have a clear vision of the product and plans to accomplish the project? Has the team defined its project goals, its outcomes, its timelines? How does it measures both the outcomes of its work and the process the team followed to accomplish their tasks? Do team members understand their roles and responsibilities well? Is the team’s relationship and accountability understood by all members? Is there a defined process so team members can consistently follow? Do team members hold each other accountable for project timelines, commitments and results? Do team members cooperate to accomplish the tasks? Has the team established rules of conduct in areas such as conflict resolution, decision making and meeting management? Are team members clear about the priority of their tasks? Do team members communicate clearly and honestly with each other? Do team members feel responsible and accountable for team achievements?

If the team is honest with each other and have positive answers for these questions than they can start the capstone project. If they still have some issues or questions then they must discuss with the professor for proper guidance. Any problems not resolve before the project begins may become a risk and impact the success of the project.