Tuesday, September 4, 2007

incremental development

When years ago, I first introduced RUP based software development life cycle into the software organization I worked for, the first main hurdle we had to take was moving towards iterative developent. To many developers and managers this was a shockwave very hard to deal with. Eventually, it all worked out. Probably because iterative is much like waterfall, but than a series of little waterfalls instead of one big waterfall.
Did we increased our capability maturity by doing this? Yes we did. And honestly speaking, we were quite happy with the result. This success was probably making the next step more difficult.
The next step was the real paradigm shift: incremental development. Convincing people who did big-upfront-design driven development all of their life to switch to incremental developent is not an easy task at all. Those people live and dream in terms of future proof designs and database models before the first line of code is written. It took a lot of energy and hand-holding coaching action before people were ready to give incremental development a try.
Recent experiences in another company proved the same findings. It's very hard to make people leave the tought that big up front design is the only viable option there is. I even discovered that it's even more easy to "sell" them agile practices as TDD or even pair programming, than to change their ideas on how to come to a decent design and architecture. The positive side of it is that it's worth the investment. Once they experienced it's working - even for their projects (as people are always convinced that the things they are working on is the most complex matter one can imagine, and that these practices are not suited to deal with this level of complexity ;-) - they never want to go back to the old paradigm. But it's a hurdle that is not easy to take. It requires courage of the involved people and coaching from someone who's been there to make it happen.