Sunday, March 19, 2023

How to succeed in group programming projects?


Group programming projects will test a student's technical skills and ability to work in a team. This post will discuss how to succeed in group programming projects. 

The Answer: Choose an excellent group leader!

In group projects, the role of the group leader is very important. Although technical expertise is a desired quality for a group leader, leadership skills, project management skills, and communication skills are more important to ensure the success of the group project. (I am speaking from experience here because I've always been selected as the group leader when I was an undergrad :) ). 

Common issues in group projects

* Technical skill level gap - some members are already good in programming, others are not
* Communication - team members have different expectations(one member wants a 1.0 while others want 1.25 only), work habits(night owls vs. early birds), etc.
* Schedule - cannot find a common time to meet and work on the project
* Code management - did not use git (When I was in college there was no git. I maintain the authoritative copy of our project source code on floppy disks :) )
* Procrastination - can cause delays, some group members are not working on tasks assigned to them (though everyone procrastinates)

Role of the group leader

In general, the role of the group leader is to handle the issues mentioned above.

* Set goals and processes - provide a sense of direction for the successful completion of the project, includes setting up the project code repository and project management tools
* Facilitate communication - identify channels of communication, set meetings, follow up, etc.  
* Assign tasks - based on the abilities of the members, members should be honest about their technical skill level
* Monitor progress - updates from group members, can be done through tools
* Provide assistance - technical, etc.  
* Manage conflicts - need to make decisions at some point
* Seek help(of prof) if needed
* Trust and respect the group members 
* Maintain a work log

Character of the group leader

A group member should not accept the nomination as group leader if he/she does not possess these qualities.

* Effective communicator 
* Collaborative - group leader should ensure that every member of the team can contribute, no matter how small the contribution is
* Adaptable - be able to make adjustments based on circumstances
* Positive and cool attitude 
* Accountable - and responsible
* Empathetic - "not everyone is as good(or bad) as you"
* Organized
* Accept the fact that a low project grade may be given because some group members did not deliver
* Accept the fact that a group member may be more technically skilled than he/she is - ask for suggestions, set aside the "ego" associated with being the group leader
* Must not expect that everyone in the group will be able to contribute 'equally' with the same level of 'complexity' of output 
 
Role of the group member

Of course without the contribution of group members the project will not move forward.  (May not always be true because a highly technical, grade-conscious, and introvert group leader may 'make buhat' the group but secretly fail everyone else in the team in the peer eval :) ). 

* Trust and respect the group leader - the group leader is doing a lot more stuff than group members
* Accept tasks that he/she is willing to commit to
* Commit to work on the assigned tasks
* Communicate with the group leader and other group members 
* Seek help(of prof) if needed
* Maintain a work log
* Accept the fact that a low project grade may be given because the group leader and other members did not deliver
* Accept the fact that the group leader and other members may not be technically skilled than he/she is - make suggestions, volunteer to work on more complex tasks
* Not be a freeloader


Appendix: Example work log



(Photo by Annie Spratt on Unsplash)