Finally, I feel vindicated, sort-of…

22 Dec
Have a safe and wonderful holiday season

Happy Holidays

As many of you know that have viewed and consumed my writings over the years, I have some very specific ideas about software development and delivery.  If you watched my latest blog on The Great Methodology Paradox, you know that I’m not a huge fan of the agile approach or the Lean-Agile approach as the beat-all, end-all, of project methodologies.  At the end of the day, people are what make projects succeed; the process is only an overlay, in my opinion.

However, I know all of us have talked to that one developer that states something like:

Me:  So what does the Application do?

Developer:  Well we are using the latest in database technology with a backend that is supported by Oracle using the most current release and we are fronting that database with Cassandra because we needed “big-data” and we will need well over 1,000,000 writes per-second.  Heck, we helped Apache debug the product because we needed to work.  Then we have it tied together with the latest Spring server using the latest JDK 7 and we even support the new Java project Coin because we needed the enhanced Exception handling process, and using the latest in both whitebox and blackbox testing methodologies for zero regressions.  Plus, as you can imagine we are using the latest in browser technology for the front-end, because we believe in HTML 5 and we are so cutting edge.  Of course this is using the latest Jira for issue management, and we are using the latest in UML for internal documentation and explanation to management, it is the bomb!

Me:  Again, what does the application do?

Developer:  It calculates interest on used car prices on a general loan as an estimator.

Me:  How many calculations can it do?

Developer:  Well, right now it is not working…

Me: Ohhhh!

As most of you know the only thing in my book that matters when it comes to software is that it works!  Period!  That is it, nothing else, if it doesn’t work, it is useless.

When training new developers I will ask that question; “what is the most important thing the software you are writing must do or have?”

The answers are staggering; good comments, great requirements, good architecture, clean code, object-oriented, java, Delphi, x-language(s), must have unit testing, must have audits, metrics, must be optimized, and the list goes on and on and on.

Nobody ever says:  It has to work!  Actually they usually say everything but that, so I was overjoyed today to read in my latest IEEE Software magazine (Jan/Feb 2012) issue that one of the people I have followed in my career stated the same thing.  The great article is “The Professional Architect” written by Grady Booch, where he states in context:

“This may sound like heresy, but for each of these [medical] systems, the raw, running, naked code is the most important artifact.  Everything else – models, requirements documents, test cases, you name it – is secondary or even tertiary.”

He does go on to say that those extra things help manage the project and can help the developers develop better code, but the most important thing is that the code that we produce, works.

On one hand I’m glad to have a “heavy hitter” like Grady coming to the same conclusion I came to many years back, but I’m sad at the way he had to come to realize it.  You will need to find that article and read it, but it may have taken death to stare him in the face before he realized the ultimate truth of what we do when creating software and what the ultimate need really is.

That software must work!

I’m sure we have all met this developer:

Me:  Whatcha doing?

Developer:  I hacked together this quick Apache module that calculates the interest on used car prices for a general loan estimator.

Me:  How does it work?

Developer:  It’s working.  Our site is being hit by about 10,000 hits per minute and it seems to be holding up.  Maybe in the next release we will give the option to do different types of loans, but we will see, users seem happy with it.

Me:  Cool.


More to come…


Posted by on December 22, 2011 in Opinion


3 responses to “Finally, I feel vindicated, sort-of…

  1. Angelo Serra

    December 23, 2011 at 8:51 am

    You are absolutely right – it really gets down to getting functioning code into production. Without code working in production delivering functionality to make or enhance a product, all you have is a nice class project. Besides Booch (somewhat ironic given the amount of effort he has put into design over the course of his career), a number of people have been on this for years (Spolsky and Weigers to name a couple). Once the software is working, focus can be put on making it faster, more flexible, etc. but it has to work. There also needs to be a healthy dose of making something no more complex than it needs to be. Your first example is, unfortunately, a classic and on-going case in our industry – over engineering for something simple (Frustra fit per plura quod potest fieri per pauciora, Summa Totius Logicae, i. 12, William of Ockham, the principle of economy).

  2. ksmith

    December 23, 2011 at 10:47 am

    So… People over processes and working software over documentation. Trying to remember where I’ve heard that before…

    • techmana

      December 23, 2011 at 10:57 am

      Hey Kevin,

      I think Larry the Cable Guy… “Getter Done!” Right?


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: