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.
-
Pet Peeve: Don’t email my password to me in plain text You know the drill.
Signup for some random service on the internet
Receive a confirmation email with your account information
or
Forget a password for some random service ...
-
Eclipise Memory Analyzer (MAT) I must say the Eclipse Memory Analyzer looks pretty slick. There is some pretty good material over on the developers blog. Lastly, there was a talk on it ...
-
Open-source Web-based Code Review Tool: Rietveld Guido van Rossum, of Python fame, has recently released a Django-based application that enables web-based code reviews... Rietveld.
It supports any language and currently can hook into Subversion repositories. You ...
-
An implementation of the JVM in Javascript? Caught this over on JavaPosse Google Groups.
Essentially, some bright fellows over in Japan have developed a bytecode->javascript compiler. There's a demo floating around that took a Tetris ...
-
Facebook Chat? So it looks like the Facebook Chat service has finally started rolling out to my network (Facebook Chat has been mentioned previously).
Not quite sure how ...
Latest Entries
- Lessons Learned as a Project Lead
- Good ANTLR Resource
- Testing with Unitils
- Headed to Kelowna for a short vacation (and the laptop stays behind)
- Seam + Groovy + Maven : Nice Simple Hibernate POJOs
- Pet Peeve: Don’t email my password to me in plain text
- Eclipise Memory Analyzer (MAT)
- caBIG Annual Meeting - A developers perspective
- OS X + Java6: java.lang.UnsatisfiedLinkError: /usr/lib/java/libObjCJava.A.dylib
- Getting started with JBoss Seam and Maven
Blogroll
Dec 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.