Changes Are Expensive

December 10, 2007 | In: Blogroll, General Discussions, Java

Saw another interesting post over on DZone aptly titled Changes Are Expensive, Damn Expensive.

Now I agree more or less with the premise of the argument.  There will always be a cost associated with writing or releasing code, invariably this cost will rise as the product matures in the market and develops a sizable customer base.  Not only do market demands or shifts dictate the cost of a change (or conversely it’s earning potential) but the organization itself plays a significant role in determining the true cost of a change.

The developer in me doesn’t necessary agree with the notion that code re-use should significant increase the cost of a change.  We’ve all been beat over the head with the low coupling – high cohesion hammer enough to hopefully understand when and how code should be re-used. 

In my mind, it’s all about timing and more importantly becoming pro-active individuals.  The later ties into the act of balancing both the strategic and tactical objectives of an organization.  Having been through the high growth periods of a startup, I’ve come to realize the importance of establishing strategic goals (we didn’t exactly have them and played catch-up long after the fact).  In times of pressure it’s very easy to forget the future and plan only for the present. 

A lot of software companies have realized this, and they provide a test suite along with the code that they handover to their customers.

I’m not quite sure what kind of software the author writes (I realize he’s in India so perhaps it’s outsourced work) but short of open-source projects I’ve rarely ever seen code let alone a test suite delivered to an end-user.  An interesting idea but difficult I imagine to do in practice with a diverse set of customers and demands.  As a user of software, it’s been long evident that writing test cases doesn’t guarantee quality software nor ease of maintenance.  It shows a bit of added diligence and with the right team could take you a significant ways towards building maintainable software but unfortunately it’s not a guarantee of anything.

The act of making a change impacts far more organizational groups then development, certainly if it’s any way shape or form user-facing.  Not to be left out would be the customer support, quality assurance and end-user documentation costs associated with any significant change in functionality.

Changes are inevitable and when adequately balanced an important aspect of growth.  Probably the worst thing a developing (or already established) organization can do is attempt to ignore them. Fortunately for us we’ve be witness to an emergence of organizational processes (some development-focused, some not) that should allow us to more easily embrace the notion of change. 



1 Response to Changes Are Expensive

Avatar

Abhijit Nadgouda

December 29th, 2007 at 10:01 pm

Thanks for extending the discussion. As you guessed right, I am in India, but I have not been doing a lot of outsourced work. I have been involved in writing some APIs which end up in other developers’ hands, and that is when the test suites are useful. As you hinted, they might not be suitable for the end users.

I wholeheartedly agree with you about being a proactive individual, and that I think can ease a lot about making changes.

When I wrote this, I came across more than a couple of instances where the change was measured in the lines of code. I think that is a poor measurement. The impact can exceed much farther, and I believe can be much fatal.

Changes are of course inevitable, but it equally important to be prepared for changes and realize that every change will have a cost, however small it is. This realization can help managing the work much better.

Comment Form

My Tweets