Archive for the 'Process' Category

Agility and Feedback

Friday, May 5th, 2006

For me the crucial difference differentiator of an Agile approach is the obsessive desire for feedback. Basically, if your reaction to an issue is to work out how you can get more, objective feedback faster then you are going towards the agile end of the spectrum; if it isn’t you are not.I will go out on a limb and suggest that the vast majority of system development failures are due to the lack of feedback at various phases of the development process.

This isn’t a new thought, it is as old as Kent Beck’s driving story from the earliest days of XP. It does get lost in all the talk of principles’ and ‘practices’ and ‘levels’ though.

Premature Optimisation

Thursday, April 27th, 2006

Listening to a development discussion today I was struck by a thought on optimisation. We don’t just optimise software (for speed, size etc), we also optimise it for rate of change. In fact optimisation for improved rate of change is one of the fundamental contributions of the agile movement. After all refactoring , DRY, OAOO are not necessary if you never change your code (well, that’s not strictly true but it is enough of a truth for now). The discussion I was evesdropping on was about building a simple framework verses writing targeted code and I found myself rooting for the targetted code. At another time in the day a different group of developers were arguing about the whether to refactor some code they had just written or not. In both cases I felt that the arguments for refactoring now “It will be easier to change” and the arguments for the framework “it will be easier to incorporate new projects”, while factually true were not winning me over. The point was that the framework and the refactoring were optimising the ability of future developers to change the code. In each case the arguments were not winning me over because I didn’t think those areas would change much in the near future and the changes did add complexity (if only by adding a bit more indirection). So, the arguments were for a premature optimisation of the malleability of the codebase. Now we all know about premature optimisation, but I’m not sure we always think about it in the context of our process, rather than the codebase. So the next time someone want’s to improve the codebase “so it will be easier to change”, wait until you know what the change will be. You never know your luck, you might wait forever.