What's the most difficult part of a software project? Requirements? Testing? Development? Support? No, no, no, and no.
Communication is the most difficult aspect and here's an example.
First, I need to describe the team.
- The team I'm currently consulting on is comprised of 8 developers; 4 consultants and 4 FTEs.
- Generally, the consultants are the 'old guys' and the FTEs are the 'young guys'.
- A majority of the team was born and raised in the United States.
- Some team members went to college (ComSci/CIS/EE) some did not.
- In this case, all develoeprs are male.
- For the most part, the team is pretty cohesive and gets along well. Eveyone cares about writing good code (I've been on teams where that is *NOT* the case, which is far worse).
A couple of months ago, one team member pulled out a colloqualism Whac-a-mole while describing a development scenario. If you've ever been to a kid's birthday party at a pizza place with games or an arcade, one of the games is typically Whac-a-mole where you use a foam mallet to hit the mole which pops up from a hole. (See the wikipedia link for a far better description...). While the colloqualism was quite funny, one of the developers on the team didn't know what Whac-a-mole was, but didn't bring it up (probably in fear of getting teased, but that is a different issue).
About 2 weeks later, I was refactoring some code and ran across a comment related to this scenario. Here's a reproduction of the code (the variables and source has been changed to protect my client and the developer).
string s = DoFunkyLogic(); //WHACKAMO
The developer who didn't understand the colloquial language actually put this comment in the source code. For all I know, WHACKAMO might be a colloqualism for something else (urban dictionary didn't show me anything), but nevertheless, a communication schism exists for this scenario.
This particular instance is pretty benign, but if a simple example like this shows us anything, it shows that even something 90% of a team understands, the other 10% don't understand and this miscommunication could cause issues on the project (misunderstanding a feature, offending someone by accident, etc...)
Please, be a good teammate and don't WHACKAMO on your team!