Programming together in a group is a bit like living together in the same house or sharing the same apartment. It can be fun if all work together. It can be frustrating and annoying, too. Others will get upset if you don’t clean up the kitchen (and do not leave clean code), mess things up or if you change their things. In an apartment- or flat-sharing community, it is often the shared rooms like kitchen and bathrooms that cause the most trouble.
To be more precise, software engineers or software architects who work together are a bit like architects who live together in the house they are building. It works best if everybody agrees on a central plan (if there is any) or if everyone works and “lives” in his own space, i.e. everyone has his own room(s), owned only by himself, where the others are not allowed to change things. If you are lucky, then the others may show you their rooms occasionally. Some shared regions like the main entrance, can be public, though. Basically, programming well with others is difficult, just like living together, because likes, tastes and preferences vary.
Since programmers are like little gods, almighty and all knowing entities in the world they have created, the clash begins already if two or more programmers with equal rights must work together. One wants a red room, the other a green. One wants wooden furniture, the other plastic. To find a compromise means to communicate and talk with each other. And this is an area were most programmers do not excel. I am not good at it, either. I think it is justified to say many have chosen to become a programmer in order to avoid too much idle talk and communication. This is were the difficulties begin..
(The picture is from Flickr user Annette Bouvain and shows a flat share)
Just as having “house rules” can be important for people sharing a house, establishing coding conventions can be a huge help for programmer’s working together. Yet just like with house rules, keeping adherence to coding conventions is often harder than establishing them.
Does anyone have any good recommendations for automated code convention checking, or other methods for ensuring good programming practices are being followed?
Interesting idea. Yes, “house rules” make sense, and they make it easier to “live” together. Too much rules, conventions and bureaucracy can take the fun out of programming though. I have not heard of automated code convention checking, I am not sure if it is possible or if it makes sense. But I guess it is possible to use code reviews for this purpose.
Good article, and separating work into little “rooms” for everyone to live in is a great idea. If everyone is just in one giant “room” it can just get too messy. My favorite part of the whole article though… “I think it is justified to say many have chosen to become a programmer in order to avoid too much idle talk and communication. This is were the difficulties begin..”.
Michael,
http://www.headhuntable.com – Show your coding talents to top tech companies