PEBKAC

« Back to blog

A bunch of programmers

This past week, one of my professors released the requirements for an assignment. It was like my worst nightmare had come true, it was a team assignment. Yes, I hate team assignments. You never get to pick your team, you always end up with someone you're never comfortable with and the end project's grade always seems lower than you think you would get on your own. So I tried to get out of it. I posted a message on the unit's online board asking whether I can code up with project alone instead of in a 2 person team like specified in the requirements. I swear to God, I could've posted the reply myself. 

No. It is a team assignment. Working in teams is an important aspect of Software Engineering.

Agreed. 100%. Working in teams really is important. But, I'm not quite sure if "team" has the same meaning for this assignment and for Software Engineering. If you're working in a professional team at some respectable company, you'd be sure to find team mates with similar coding skills, a team manager and specified communication protocols. The 2 person teams for the assignments include none of this. You're matched with a random student, some who cannot code at all. Sometimes communication is huge problem, with late replies and endless excuses. Then there's always the difference in the level of enthusiasm. More often than not, the 2 member teams result in arguments regarding the project with no one available to resolve the matter. 

And then again, the 'team' is only supposed to look good on paper. There are no requirements about using VCS or about peer code reviews. You're never actually introduced to how teams actually work in the real world. Most of these projects end with one person completing most of it, and the other scoring a free ride. Or strict distinctions on modules to be coded by each member.

How can this be rectified? Simple, allow people to choose their teams, so they're working with people they're comfortable with (like a startup). Make sure the teams consist of more than 4 people. Make sure they use proper VCS hosted on the University servers (look for the checkins for individual contribution). Have requirements for proper peer code review and refactoring. You know, just try and make sure the teams imitate real software engineering teams as much as possible.