This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: Perplexed by Generalization
Feed Title: Travis Griggs - Blog
Feed URL: http://www.cincomsmalltalk.com/rssBlog/travis-rss.xml
Feed Description: This TAG Line is Extra
Knee deep in the middle of yet another feature add. And I find myself thinking, you know, I've been here before. Many times. Every project I work on seems to go through this phase. Original piece of software is mapped, implemented, refined, etc. Things are going well, then....
Marketing wants your software, plus this one twist. You're software wasn't really built with that twist in mind. After whining and complaining, you find that if you just generalize a certain part of your model, you find that "ah", it can indeed be made to encompass both the original and new models. The code gets more obscure. It doesn't matter that you've got excellent tests and/or documentation, it just is naturally more (conceptually and lines of code wise) to deal with than before.
You go through a couple of iterations like this, and you find you've created quite a monster. The code is well written. It's not that. You have tests, etc. It's just that its become large and unwieldy; navigating it's myriad levels of indirection has become painful. At some point, you begin cynically wondering, is there some sort of "universe modelling index?" Something whereby I could measure how much closer I got today to just modelling the whole universe with one big piece of software?
What's the solution? I don't honestly know. One can just start from scratch with each new project... that means little or no reuse. It turns into a release management nightmare to deal with all the different versions you've built, each with a different group of options for a different customer set. I'll go back to the generalized hell I've created now. Universe Modelling Index: up from 0.0000004 to a 0.0000009 today.