Developing software on your own is pretty simple. Building a whole system with a team requires some abilities, knowledge and tools to get going.
The big word here is sharing (just like many other concepts with computer, it is a word that keeps coming back). You have to share many different things to develop a software with other people. You have to share thoughts, models, source code, plans, various data, schemes and ideas.
Nothing beats real life one-to-one, one-to-many or many-to-many discussions. You might want to have a projector to show things and a board to write or draw things on, but that should not stop you from having that human communication where you interact with others. Some people thinks that 3D virtual conference software or any meeting software can totally replace the good old way of speaking with your teammates or colleagues. I am not one of them.
In the case that developers cannot see themselves in real life, you should have some pretty good communication system in place. Mailing lists, forums, blogs, instant messaging or a mix of some of those tools is a good start. Even if it is not practical see each programmer all the time, you should try to plan a moment in the week, in the month or in the year to see everyone and have a chat.
Than comes the code sharing. For the sake of efficiency, you should use a source code version control system. I like Subversion because I am comfortable with it and I like some tools that plugs in well with it. It does not really matter which one you use as long as it suits your needs and that you stick to it. You also have to be able to share code in an efficient way.
You should adopt an independent setup where each programmer and each person working with the development can have his own version of the application where they can totally screw it over to test it or for whatever reason. It makes developing easier. You do not want to be interrupted in your coding concentration because you are sharing a database with an other programmer and he just removed a field from a table you were working with.
Than comes all the management tools. You should have at least a simple way to track the progress of your project, if you are half done with it or not. There are so many tools in this realm that I would not know which one I would start with. It starts from the simple to do list manager and it goes to the ‘I will manage your whole life’ package. You might want to have a look somewhere in the middle.
You should also have a way to know what people are doing right now and to let people know what you are doing right now. This way, you can synchronize yourself not to work on the same thing at the same time. If you are really into web 2.0, you probably already know about Twitter. I used to change the status message in my Google Talk messenger to notify people of what I was doing.
I guess this is a start. I will think about what else might be interesting to have in a team oriented software development environment.
Post a Comment