Search This Blog


Friday, December 18, 2009

Dude, Where's Your csproject and sln?

Source control is indispensable for any team with more than two members. There is literally no way to transfer code from one developers to another with just disk swap and copy. And if you happen to work on a development project with multiple developers and your team doesn't even have a decent source control, it's not hard to guess that most of your time will be wasted on yelling at each other, arguing who's breaking the code, and demanding for latest files.

What a terrible waste of your developer's precious time, and what a waste of your stackholders' money. Sometimes it's quite a bit of irony for developers to write code so that other people's life and work can be automated and at the same time, the level of automation in development is just bare minimum. This is simply scandalous.

Now, even if you already a source control, that doesn't mean that you are free from improvement, far from it. Some developers I know only check-in the source code, leaving the configuration file, csproject, solution file and all other perceived secondary files on their hard disk without proper backup. This is also not acceptable.

Think about this: when a new developer joins your team, he is expected to start working immediately. Don't expect him, ever to pickup the code from source control and then create the csproject files himself just in order to do a compilation. First, the idea of constructing csproject from the source files is just plain boring. Second, it involves a fair amount of guess work; how do you know which files to include and which files not to include? Third, it can take a long time just to figure out what are the external references. Not to mention that every time you include a new cs file, you still have to inform him to do the same work lest the build is broken.

Let's do a simple cost benefits analysis of not adding the csproject files into the source control. The initial csproject file construction: 4 hours on average ( it can take a significantly longer time if you have a large project). Every time a new file added: 2 minutes, the frequency of this happening: 1 per week.  That's 8 minutes per month per developers. But what about the time needed for the developers to get in and out of the zone of coding thanks to this tiny distraction? Probably half an hour. Multiplying this number with the number of developers and with the length of the project duration, you can see that the whole development effort is taking a toll simply because someone decided that the csproject and solution files are not worthy of a place in source control.

So, please, for the sake of everyone, do check-in your csproject and solution, now. And make sure that your daily build can build everything automatically, without manual intervention. Starting from checking out all the files from the source, and then proceed to run a compilation, finally finishing with installer packaging, everything must happen seamlessly.

No comments: