Why Your Code is a One Way Time Machine October 19, 2009Posted by ActiveEngine Sensei in ActiveEngine, Agile vs Waterfall, Mythology, Problem Solving, software economics.
What type of duress are you under? The unfortunate among us have been sentenced to slavery by our evil nemesis from the past. We all have this enemy, and at one time or another have succumbed to the enemy’s evil plot. The enemy from the past is YOU.
When you sit down to create a solution, you need to balance solving the problem with being able to maintain and implement changes to the logic you have selected. All logic changes, and there are very few times when you have the finite scope defined to be able to accommodate new ideas. ”Rewrite!” is the cry of many who have written good solutions that have solved the problem but more than likely are not very maintainable. ”Broken Cardinality” is the bane of all DBA’s, and this is very serious indeed. Sensei can’t help you with that – go beat your business analyst who didn’t drive home the rules of relational databases!
What Sensei will say is put your tools after you think you’ve solved your users problems in a two week sprint, step back and project into the future: will this code be readable; can you augment the logic without altering the methods; will you be happy with yourself at midnight trying to fix something? Addressing these concerns helps you maintain your solution.
The real challenge is to help yourself next year. The-future-you needs your help, but The-future-you will hate you if you misconstrue YAGNI in your design phase with avoid-refactoring-at-all-costs while you code. Forget the sprint. Putting something into a customers hands too soon masks the complexity of what you have done for them and undersells your true talents. They’ll be happier if you can quickly implement changes without impacting the existing environment. Congrat’s – The-future-you just bought a beer!