Picture of admin

Building the Enterprise Hammer (Part 2)

  • Posted By admin on November 23, 2005

In this segment we are going to dig further into Idea #1 from Building the Enterprise Hammer:

The three things that distinguish real enterprise development are flexibility, adaptability, and maintainability—not scalability!

The Enterprise Hammer is not Flexible

In the first segment, we introduced the “Enterprise Hammer”, which attached a number of hammers onto a frame so that entire sides of buildings could be nailed together quickly. In practice, this Enterprise hammer has a lot of problems:

  • Other building shapes will not work.
  • Other building materials will not work.
  • It is difficult to adjust the Enterprise Hammer to deal with local variations: terrain, zoning, architectural considerations, etc.
This starts to look like a straw man argument. Couldn’t we just make a more flexible, adjustable frame for the Enterprise Hammer, and solve these problems? Yes, we could, but…

The Enterprise Hammer is Deliberately Inflexible!

In the Java world, we have been obsessively focused on scalability. I.e., how big can we make the Enterprise Hammer? Flexibility gets less attention. In fact, the J2EE stack and the Java language itself are deliberately designed to limit flexibility. To continue the analogy: engineers are allowed only to build and attach hammers. They are not allowed to adjust the frame of the Enterprise Hammer, or attach other devices to the frame. What the consequences of this approach?

  • If the frame is flexible enough to match your building, you will do well.
  • If the frame does not match, you may be worse off than if you had no frame at all.
  • If the frame is inflexible, you will see builders abandon the frame and build their own.
The success of Spring, Hibernate, etc. are pretty good evidence that more flexibility is needed.

Are You Saying that Flexibility and Scalability are Opposites?

Absolutely not! In fact, they go hand-in-hand.

Enterprises need flexible software systems that model their world in rich detail. While some processes are wholly standardized, there will always be important exceptions. Enterprises also need to deal with disparate internal systems, outside partners, mergers, and evolving laws and regulations. Size brings issues not only of magnitude, but also of variety.

One reason enterprises need flexibility is in order to scale! Consider a seemingly unrelated question: world hunger. Tragically, people go hungry every day, despite global food production capabilities that are sufficient. The problem is not production, but allocation. Similarly, software scalability problems tend to come not from insufficient processor power or disk space, but from difficulty in allocating that power to the right tasks at the right times. More flexible systems make it easier to reallocate resources and tasks, solving real scalability issues when and where they occur.

So How do I Get More Flexible?

Stay tuned for the third installment.
Comments
  1. Curt HibbsNovember 23, 2005 @ 04:10 PM
    I'm really enjoying these posts... can't wait for the next installment! Curt PS Sorry, that I attributed (on my blog) the first of this series to Justin instead of you (Stuart). Is there any way to tell who authored a post to Relevance? I can't find any.
  2. JimWeirichNovember 25, 2005 @ 04:18 PM
    Curt, The authors are listed for each article when you view them from the main page rather than the individual article page. But I agree, it would be nice to see the author name on the individual posting. -- Jim Weirich
  3. Cooking FarberwareMay 05, 2006 @ 02:28 AM
    Well at last catched the problem :(
  4. Effexor No RxMay 10, 2006 @ 12:41 AM
    Well done, nice instructions!
  5. Tabloid Newspaper UkMay 12, 2006 @ 11:45 AM
    The problem is my browser :(
  6. Rimadyl ChewableMay 12, 2006 @ 05:40 PM
    The content of your show is great, I really enjoy it.
  7. Detectable WarningMay 13, 2006 @ 05:51 AM
    There is some strange behaviour with this.
  8. 40th Wedding Anniversary Party IdealsMay 15, 2006 @ 10:48 PM
    Thanks for the write-up...