Saturday, June 24, 2006

Why JMatter matters - a wake-up call for programmers

My fellow blogger Eitan Suez open-sourced jMatter last week... a Naked Objects inspired framework for creating workgroup business applications.

I am always interested in Eitan's activities, but jMatter really struck a chord when I read a bit about its background on the jMatter mailing list:

A small Austin software firm was "approached maybe a year ago by someone who wanted to develop a custom software application to aid him in his work."

"The customer was initially turned down."

"The problem was that the estimated amount of work to design and implement and deliver the solution approximated three man-months of software development. The customer's budget was nowhere near that.
"

"This customer recently contacted them again, coincidentally at a time where they became aware of the jMatter framework.
I ended up contracting to do the job using jMatter. I built the entire application myself in approximately eight days. There were 2-3 follow-up incidents where small change requests or bug fixes were implemented (maybe 2-3 hrs each)."

"Today, this customer is using this custom solution to aid him in his work and apparently it has already saved him a considerable amount of time and effort"
I have recently been working with very small businesses, and the scenario of customer need exceeding customer budget is an all too familiar tale.

What's not familiar is the outcome of Eitan's tale: The small budget customer gets a solution that he needs at a cost that he can afford. This outcome is what intrigues me about jMatter... Eitan was able to take a project that should have taken three man-months to complete, and he successfully implemented in 8 days (more or less).

This is a big deal if you are an independent software consultant... the number of potential clients on limited budgets far exceeds those with fat bank accounts, and the competition for the "well healed" clients is brutal. If you can find tools that make it profitable for you to service small accounts, you might do quite well for yourself...

But even if you aren't an independent or working for a small firm, tales like Eitan's ought to be a wakeup call: The "Custom Software" business is changing... Some clients have been paying far too much for the custom software that we've been writing for them, and they're probably about to figure that out.

Let's take a look at Eitan's numbers...
"Non-jMatter Estimate"~3 man-months (about 480 hours)
"jMatter-based Result"~8 days (about 64 hours)

This example is hardly a scientific survey, but using these figures one could make the case that over 85% of the "custom" development effort that this client would have paid for (without jMatter) would have been used to implement infrastructure and functionality that really wasn't "custom" at all.

Of course jMatter is not appropriate for all custom software... nobody would suggest that... but many, many custom business applications have a great deal in common, and it is not unreasonable to suggest that a manageable set of tailored frameworks could be used to eliminate 80% of the effort necessary to write 80% of the "custom" applications that we are writing today (Yes, I made up the 80% figure... but it's probably in the ball-park).

This is why jMatter and frameworks like it should matter to all professional programmers... If custom software can be now be built for 20% of the effort that it once took, the entire cost structure of our industry is about to go bonkers.

Programmers in the US had to adjust when companies started offshoring software development to programmers who work for lower wages... Imagine the adjustment that we'll all have to make if projects that once paid our salaries for 3 months now only pay our salaries for a couple of weeks?

Please don't take this "wake-up call" the wrong way... these new developments in programmer productivity are just the latest in a long chain of improvements. Back in the 80s, I wrote business applications in assembly language... Nobody would pay me to do such a thing today.

As the tools evolved, I evolved. I think that the tools just evolved again ;-)

(cross-posted at my java.net blog)

No comments:

Post a Comment