General discussion


You cracked the code!

By Robert Kohlenberger ·
I sincerely wish every agile developer took your words to heart:

> Sadly, Agile and the like require very special programmers,
> very special customers, and an extraordinary contract to
> make it work.

Two years ago I left a high profile biotech firm because my boss was
more interested in following an "Agile" recipe in than actually BEING
agile. Now he's been demoted and is no longer manager.

Before the fall, I had worked closely with both customers and test
engineers, and employed systematic code reuse to successfully go
from requirements to finished and tested (Java-based) software in 2-3
months; and that was in an FDA-regulated environment!

What happened? Another engineer convinced my boss that what we
were doing was not actually "Agile", and we should de-emphasize
formal requirements, use more open source, and drop the code reuse.
What resulted was a catastrophe. Where we had been meeting very
tight deadlines, now they were missed by months, and then years.

What's wrong with open source today? Ask the promoters and they'll
say it's doing just fine, thank you very much! With many licenses and
several foundations, it's popularity is off the charts. The problem for
application developers is, if you need to modify open source for an
unintended purpose, you have to use that nasty F-word (fork). To
support multiple versions of several product lines, a small army is
needed to track source trees and dependencies.

What's the solution? Exactly what Justin James proposes: promote
open standards, not just open source. Imagine if we had strong
standards that permit components from one open source project to
replace those of another. What if we could combine some features of
Jasper Reports with others from Crystal Reports, and even add custom
code, all without interactions. No doubt this would require extreme
attention to code modularity and dependency injection, but those are
just good design practices anyway.

Systematic (aka black-box) code reuse has the potential to extend the
(re)use of open source far beyond where it is today. By enabling the
domain expert and the coder to each do what they do best, a whole
new kind of software economy is possible. To make this economy
happen, standards are needed to promote the configuration and
recombination of relatively independent code units to form unique
applications. Such code units will need to comply with least 3 design

1. Standard parameter types for dependency injection
2. Standard interfaces for interchangeable code units
3. Standard container types to permit recursive composition of code

Anyone interested in discussing this further may contact me through
this web site:

Best Regards --
Bob Kohlenberger

This conversation is currently closed to new comments.

Thread display: Collapse - | Expand +

All Comments

Related Discussions

Related Forums