|hcs consulting group.
|we make complex systems simple
working slower continued....
normally, i am the one who is brought in to fix a computer mess....not create one! i never had a project fail like this. what the heck happened?
i took 3 weeks off in the month of december (last year) to rest up, and try and figure out why this project got into such trouble. the above explanation about speed of code development was my conclusion. since deadlines were fast approaching, the quality of code design began to slip as i attempted to write more code at a faster rate. in fact i was writing more code, but it was not nearly re-usable and well designed. since the code was of poorer quality then my estimates as to how long certain tasks would take were also incorrect (and they in turn affected more modules of code). only take were also incorrect (and they in turn affected more modules of code). only when i reduced the rate at which i developed code did in fact the rate at which the project move forward *increase*.
slow down and you work faster! neat huh?
a good implementation of a design allows one to "zone" in. poor code prevents developers from "finding the zone". i was wondering why i was having such a hard time "finding the zone" when writing code. some tasks that should have taken a day were taking 3, or even 4 days. when a developer can? find the zone, then productivity drops down to a snails pace. poor code and poor implementation of a design means that the developer(s) cannot get into the zone.
there have been quite a few books that have mentioned that removing deadlines seems to *increase* the rate at which developers write code. in the real world we can? just develop with no deadlines. however the conclusion that is actually being made here was not really to remove deadlines...but to simply slow down the process until a very high level of work is being done. so, the real answer here is not to remove deadlines...but to keep the quality of code being written at a very high level. extreme programming is receiving a lot of coverage in the developer community right now as a means to increase programmer productivity. extreme programming simply means that two developers work together and share a single computer screen (ie: they share the same workstation). extreme programming probably works because each person is actually doing less work...and has more time for better design/implementation
working slower also hints as to why so much of the open source software is of such increadable high quality. a very large portion of open source software is written at the correct speed, and the resulting quality shows.
tuning and playing with the rate at which development occurs is not to be overlooked in any software project.
slowing down the rate of development gives the mind more time to "think design". have you ever been stuck on a design for a few days? you will notice that those several days seem very frustrating and very unproductive. however once your mind "sees" the design that is going to work...then you are able to produce code like a hungry snow blower working on a snow bank in january.
just how do most software developers work?
that idea of "seeing" the design or having a mental picture of the design is required before one can really zone in. without this mental conceptual view then no real high rate of development will occur. in fact, for some no development will occur until the mind "sees" the picture. my point here is that when you slow down the rate of development, then the mind has more time to get that "view". once the mind has that view then writing code is like finally starting up the snow blower (or, for you southern people...the lawn mower).
i also want to stress that this slowing down is not to remove any and all pressures. we are not talking about sitting around and drinking coffee all day. the amount that you slow things down can be very small, and result in large gains in developer productivity. however, sometimes you must slow down so much that you must stop all together. that means taking a break.
by the way, i did finish the critical parts of the code and the company started using the system for this season. it has had amazingly few bugs and none critical so far. the company is so happy with the system that they threw me a nice free ski trip to the mountains (the above ski resort picture is actually from that trip).
HTTP Error 503. The service is unavailable.