Sunday, February 7, 2010

Why Business Apps Are Difficult, and What to Do About It

There are lots of questions and misunderstandings about the nature of business applications, and why Apache OFBiz is the way it is, and why it isn't go to hold your hand and guide to just what you want for your business. Sometimes people make comparisons to operating systems or other lower level tools, but there are some key differences that make all the difference and...

There are a few reasons why the business side of OFBiz (the applications) are a lot more complicated and difficult to learn than the technical side of OFBiz. The basic problem is the size of each, but that's over-simplifying things.

Read Before You Write: It's not really human nature to do this, and it takes a lot of patience. This is made worse because if individuals have a hard time with patience, organizations are simply incapable of it. The PHBs want results... and reading sure doesn't look like it's producing any. What's worse is if the individual manages to produce a result with a couple of dozen lines of configuration and bits of code instead of a couple of thousand lines of raw, meaty, manly Java then a semi-technical PHB may find it really unsatisfying to have paid for so much time to get so little, not realizing that the individual just saved him 10-100 times what the alternative would have cost initially and over its useful lifetime. Unfortunately some individuals DO realize this and build large, profitable businesses based on exploiting it (but that's another topic altogether).

Scratching the Surface: A business application is not like an operating system, or even a framework for building business applications (which is like an operating system, except the interfaces are tuned to a different type of input, a less technical and more business-oriented type of input). The difference is by nature there is no way to design an interface adequate to represent a business application, and that is what both operating systems and application frameworks are all about. Unfortunately business people don't like being told that an interface with a few little parameters is supposed to represent the entirety of options for ANY process in their business, even "standard" ones like billing or shipping. Business people don't like not be able to change and tune any part of their business that they want, and if the systems can't keep up then they don't get used. SAP and most ERPs out there are great examples of this. They are proprietary software works and you don't get all of the source code (and/or permission to change it), and can only change what they've decided it's okay to change (unless you want to rewrite something, usually more than you think). Those sorts of systems don't let you get below the surface, which is unfortunate because then you don't even have an option to Read Before You Write.

In other words, the way you go about adding value (via easy of reuse) in a business application is very different from how you go about adding value in an operating system or a business application framework. With the OFBiz framework you can learn the "interface" to it, but with the applications you pretty much have to deal with it all. On the other hand, there are more concise "interfaces" to it, like the data model and browsing things related to data model elements, which is made easier with the Artifact Info and other related tools in the OFBiz WebTools application.

And how do you apply that in your business? The basic answer is you don't. OFBiz is meant to adapted to businesses, not businesses to OFBiz. You can certainly run it OOTB, but that's not how it's meant to be used and you'll find that a painful experience. It's not going to hold your hand because it was never designed to run your business. Frankly, how could it be? Some systems claim they are in their marketing, but that marketing isn't honest because how do they know how you want to run your business? When you start trying to use those systems in your business you find out pretty quick that they really don't know.

So, your best bet is to define your business and then do a gap/overlap analysis with OFBiz to see what you can use, what needs to be adapted, and what needs to be built to fill gaps. If you really want a tuned system, like for a larger company or for a derivative work (like a commercial application targeted at a certain type of company) then you can define the business, design the application, and build it, and save resources building it by reusing as much as possible from something like OFBiz (which gets back to why OFBiz is organized like it is). To do these things effectively takes some experience, and to shorten the path certain tools are helpful like the HEMP approach (http://www.dejc.com/home/HEMP.html).

Stepping back a little... there is a bigger trick... and that is how many people believe what I wrote above Read Before You Write and Scratching the Surface? Well, not many (that I've had the pleasure to meet anyway). For those that do understand and agree OFBiz is great (could be better, lots better, because even many people involved with OFBiz don't believe or don't understand those two ideas and as the number of contributors increases that painful fact becomes more apparent). For those who don't understand or don't agree, they are destined to a life of making things painful for them and others they work with, whether they attempt to use OFBiz (probably won't last long) or whether they choose a likely painful commercial route filled with reasons to spend more and more money on more and more different software.