Posted by Colin on November 28, 2009
If you made furniture, would you sell it without polishing it?
If you made a car, would you sell it without giving it a glossy coat of paint?
No?
Then why is it accectable to release code without that same level of perfection?
To me, refactoring is an essential step of the development phase that gives your code that polish, that gloss of paint. Yet, it is often overlooked.
Only after doing something do you really gain a good understanding of what you have done. It is at this point you can make your code really do it’s job well and reduce its technical debt for the future.
Posted by Colin on November 22, 2009
Many of you will have heard of Brook’s law – “Adding manpower to a late software project makes it later”. I’d like to explore the opposite action: removing manpower from a late software project.
80% of the work done by 20% of the people
From my personal experiences I have seen many projects where most of the work is done by a minority of people (the experts on the team). With the rest of the team either being inexperienced (and we accept that they have to get experience before they can become the minority), managing the team, or, in the worst case, dead wood.
I have also heard this observation made my many other people.
Hypothesis: Removing manpower from a late software project makes it earlier
Remove the dead wood
Most companies suffer from dead wood, we all know who they are but for some reason they still float around. Get them off your late running projects.
Ideally, stop them being dead wood when you move them to a different project.
Remove the Inexperienced
This reduces the time taken by the experts to correct mistakes, educate and train the inexperienced.
On a late project this makes sense. In a normal project – this is shooting yourself in the foot. You need to keep training your inexperienced folks if you hope to have more experts in the future.
Remove the management
If you’ve just removed people from your project then you can probably remove a manager or two. This reduces the communication and hierarchy overhead.
Overall Gains
By removing all these people you will have just sped up your experts by reducing their communication overheads and the time they are having to spend looking after other people. You’ve also given them more time by reducing the number of managers they have to explain things to.
You’ve probably not lost much either – as these other people weren’t directly contributing anyway.
Thoughts?
I’ve not had the opportunity to see this done before and it is pure speculation. But, I’d be interested to hear from anyone who has had experience of this.