Can we build it? Yes, we can!
But can you build it again? and again? and, oh how about rebuilding that release we did 6 months ago for that weird client who wanted the application in Esperanto?
Oh? You swapped your machine over to Linux since then!
Oh? You have switched to mono!
Oh? You now use MonoDevelop!
I think that everyone knows that techies (developers especially) love installing new applications and widgets and open source projects and who knows what else on their machines.
I used to install trial versions of games onto my development machine. That was great fun until the day that visual studio would no longer worked. I guess that somebody got a bit overzealous with their uninstall program and started deleting libraries that they thought were not needed by other programs. The end result is that I spent a couple days reformatting the machine and reinstalling everything.
The developers favourite excuse when the testers come forward with a bug: “Well it works on my machine”
For those reasons and more, you need to have a machine that is dedicated to building your software. It needs to be a pristine and bare bones installation from the ground up. Access to the machine needs to be controlled and the fact that no one messes with the build machine needs to be hammered home.
You could even go so far as to use virtual machines for the build machine and keep different images (or at the least checkpoints) around for when you make changes to the build environment. While Microsoft does its best to not blow things up with patches, it does happen (XP SP3 ring any bells?).
While it is helpful to have a dedicated build person or team of builders, that isn’t so important. I feel that it is important that everyone on the development know how to build and install the software. If the developers are so focused on little pieces of code and unfamiliar with the big picture then trouble will be brewing down the line.
I like to designate one person as the build primary and let them deal with the details of building the code and distributing the build and maintaining the build notes. Since most people don’t like this job (and to ensure that everyone is familiar with the process), it is a good idea to rotate this on a regular basis. However, don’t assign the shiny new face as being in charge of builds; they don’t know the software, they don’t know the team, they don’t know the system environment; despite their brilliance and inspiration to do an excellent job they will mess up.Read Full Post | Make a Comment ( None so far )
Yes, it is a good question. It is something that I’ve been thinking about a lot over the last couple months. I’ve been a part of many different software teams over the years and while each team has their own strengths and weaknesses there hasn’t been one team that excelled in every area. That is to be an expected outcome of building a team from individuals that have foibles and personalities (and as you know programmers definitely have foibles and personalities).
However, that should not be an excuse to keep a team as it is and accept their current behaviour and performance as a given. You need to continually grow and learn and stretch the team. If you
remain static then you stagnant and can no longer react to the business market and are in danger of becoming an irritant to the powers that be.
When I first started thinking about this, the elements that first came to mind were concrete elements of software development that must be present just to perform the core task of producing software. They are things like testing and source control and written documents. This quickly progressed to some of the intangible skills that will transform a group of smart individuals into a high performing team of skilled and enthusiastic developers that will be a major asset to the success of a business.
Next post… Elements of a good teamRead Full Post | Make a Comment ( 1 so far )
Well I guess that it is time for me to get into the world of the 21st century. Blogging seems to be the great step forward in communication. Oh wait, that is so 2001. The great step forward is twitter and poking. It seems strange that to communicate effectively we need to give little witty remarks every couple minutes. I’ve had more than one friend give up on these new forms of communication because they feel stressed to continually come up with new and amusing status messages. But I digress, since when did blogs become a forum for social commentary?Read Full Post | Make a Comment ( 1 so far )