Custom Business Application Definition

There has been some heated disagreement over the definition of "custom business application" (CBA) on this wiki. This is an attempt to document at least working definitions to serve as reference points. (CBAD = Custom Business Application Developer)


Working Definition/Rules #1 (DRAFT)

I realize this isn't water-tight. It's just a "gist" at this point. "GUI specialist" is kind of a gray area. Mastering the top of the HtmlStack is sometimes a dedicated specialist because the stack sucks. Most internal apps don't stretch the HtmlStack to the limit such that a general CBAD can usually handle those. But public-facing sites sometimes need a Web-GUI expert to get the HtmlStack to work right. (Some start with a generalist internal CBAD, but as the bugs and glitch help-desk tickets pile up, they then turn to a dedicated specialist, or back away from desktop echoing - BrowserAbuseSyndrome.)

Some have suggested "anything that's custom", but would make a commercial rocket scientist a CBAD, which goes against what I believe is the industry's usage pattern. When the "specialist-ness" over-powers the "business-ness", then I exclude it from CBA, if that makes any sense.

I would also note that many colleges and universities split their development oriented degrees into something akin to "Computer Science", and "Management Information Systems". The second tends to be geared toward CBAD. I don't see any other common large-scale division used by the schools.

--top


Candidate Definition #2

CBA is a model of a business operation or task that attempts to mirror the domain knowledge of the domain expert(s) (or at least those you pay you). It's essentially "head modelling".

Note that this differs from work with "standardized ComputerScience algorithms" (SCSA) often talked about on this wiki by select WikiZens in that domain experts generally don't understand them. They want a model that they can relate to for reasons described later.

Sometimes CBA's will integrate with SCSA's, especially for searching where "perfect" matching is not necessary. By perfect matching I mean that specific results are always expected and the business depends on them working reliably. For example, if I know that customer 4723 exists yet a prompt that asks to enter customer ID cannot find it, the customer won't accept it. SCSA's are usually used to obtain "bonus" behavior or results, not mission-critical operations. Mission-critical operations usually need trace-ability in a way that the domain managers can understand. In other words, the steps are processed, categorized, and documented in such a way that "non-techie" domain experts can relate to. "It didn't find a match that time because Google was garbage collecting and so exceeded the time threshold given" is not acceptable for mission-critical.

An exception is if "mission critical" is defined in terms of volume more so than accuracy. Free web services that rely on ad revenue are often such an example because if going from a 2% failure rate to a 1% rate costs them 30% more, they may skip the improvement because it's less profitable.

If an employee shift scheduling algorithm A is only 90% as accurate (close to theoretical optimum) as algorithm B, then the manager/customer may still prefer A over B because A is "trace-able" in a way they can understand. Managers often have to justify the scheduling results to their superiors and perhaps the employees being scheduled such that less-than-perfect-but-explainable results are often preferred over theoretically more accurate results. Whether this phenomena is "good" or not is hard to say. It does appear to be a case of SovietShoeFactoryPrinciple. (Related: MakeSummariesTraceable)

Domain-level explain-ability is generally what the market wants in my experience and as a developer I'm expected to cater to it or hit the road. Perhaps with some experiments one can demonstrate that B is really better than A, but it requires some careful salesmanship. Remember, that even if you can convince one manager of B's superiority, they know they still have to explain results to other personnel and will thus want careful and legible documentation of the trade-offs: losing specific-case explanability in trade for generally better average results. -t


Discussion on Definition #1

Essentially, your definition covers record-keeping, reporting and accounting. This category of applications was driven to industry prominence in the mid 1980s to early 1990s by the rise of PCs, PC spreadsheet software, and dBaseIII (plus its clones) which made it possible for fairly non-technical domain experts to produce applications with relatively little technical effort. Whilst it's still an important category of applications, the ever-increasing desire for increased automation, scalability, flexibility, interoperability, and extended functionality has largely driven the programming and technical side back into general software development, while the non-technical aspects are handled with end-user computing -- spreadsheets (mainly) and desktop databases (a little).

"Rocket science" and "custom business application" may have been clearly delineated in the 1990s when the accounting department received the engineering department's rocket fuel consumption estimate on paper, but now the fuel consumption estimation applications are expected to push data in real-time to the accounting applications, and the accounting applications feed back to the fuel consumption applications -- perhaps over an EnterpriseServiceBus, perhaps via RESTful interfaces, perhaps via shared databases, and so on. What your definition really highlights is that some developers still focus mainly on record-keeping, reporting and accounting. However, other developers focus on that and/or other things. All are working on custom applications for business.

Therefore, it would be more accurate and less contentious to call this category "record-keeping, reporting and accounting" rather than "custom business applications." It would probably provide a more focused topic for discussion, too.

What the human brain does could be called "record-keeping, reporting and accounting". That's not very specific.

The human brain also does logical inference, semantic searching, introspection, pattern matching, symbolic processing and model construction, all of which have programming equivalents. (Plus consciousness, which doesn't yet have a programming equivalent.) So, "record-keeping, reporting and accounting" is specific enough and certainly more specific than "custom business application", which is a sufficiently broad category to incorporate (as it often does) logical inference, semantic searching, introspection, pattern matching, symbolic processing, and (automated) model construction.

And CBAD will often incorporate these kinds of things into CBA's. It's just that if any one becomes the overriding factor such that an X expert is required, then it no longer falls under CBA, at least as the primary category. It becomes an "AI app" instead of a CBA, for example. If you don't like my working definition, fine, but that doesn't make it's "wrong". You are allowed to introduce your own working definition.

Your definition is further evidence that what you really mean by "CBA" is "record-keeping, reporting and accounting". The former implies no restrictions on what an application may be (other than a "custom application" for "business"), but the latter does and seems to accord well with examples you've given on this Wiki over the years. For example, it explains why your CampusExample is defined in terms of a database schema rather than requirements, or why you feel ReportQueueExample is useful. In record-keeping, reporting and accounting, the schema is of primary importance.

One thing that should also be considered is managers' ability to comprehend what is going on. It's best that outcomes or output be trace-able to business rules that managers can also understand and that the "steps" be tracked and reportable. Thus, just about any non-trivial project will become about what you appear to call "record-keeping and reporting" because the biz rules should ultimately be tracked and reported in a way that MBA-style managers can analyze and relate to, not just developers. This often limits the complexity of the algorithms used, for good or bad. Thus, almost any non-trivial process is going to have a CRUD-ish component to it. My working definition should probably reflect this.

Almost any non-trivial process will certainly have CRUD-ish components, but record-keeping, reporting and accounting is composed entirely from CrudScreens and reports.

Now there are industries such as search (Google) where the line-of-business algorithms are beyond what a typical MBA manager will be able to relate to. But such orgs are generally run by technical managers or specialist managers. In the oil biz, many of the managers will be trained geologists promoted to management, for example. Such geologist programmers and geologist managers are not "business developers".

They're certainly oil-business developers.

And rocket science developers are "rocket-business developers"? What does that give us over "rocket industry developers" or "space developers"? We could call it many different things.

And therein lies a big part of the problem. Broad terms are largely unhelpful and lead to arguments. That's why I suggest being more specific, and using "record-keeping, reporting and accounting" to identify what you mean by "custom business application".

If we can emulate a brain using tables and some basic "node" processing rules:

http://grault.net/adjunct/index.cgi?BrainSchema

Then human thought can be viewed as "record-keeping, reporting and accounting".

"If we can emulate a brain using tables and some basic "node" processing rules..."

We can't.

Why are you so sure? (Another topic?)

Trivially, because sets of tables and rules are static. Something needs to computationally apply the rules to the data in the tables. Also, we need to know what rules. What you appear to be suggesting is (partly?) an artificial neural network. Artificial neural networks are good for solving certain problems, but we don't know that we can emulate a human brain with one.

The "rules" for processing neural networks are also static. It's the connections and weights between them that change. The electrochemical "rules" of brain cells are pretty much the same from birth to death. It's true we don't know for sure how the brain works, but based on existing knowledge, a neural network model is a sufficient model (with some minor tweaking in the model for hormones perhaps).

Ok, build one.

The general point is that one can build a TuringMachine using "record-keeping, reporting and accounting". It doesn't cull the total set of all applications.

I'm not sure what that means. Regardless, "record-keeping, reporting and accounting" clearly refers to a specific category of applications -- particularly the category you apparently work in. "Custom Business Application" does not. It appears that when you use "custom business application", you're probably thinking of the last record-keeping, reporting and accounting application you worked on. Your typical correspondent, however, might think "custom business application" means the last financial forecasting application he worked on. This confusion can be reduced or eliminated by avoiding "custom business application" in favour of "record-keeping, reporting and accounting."

That's 3 different things. I don't consider that a magical grouping other than they are fairly often related. A financial forecasting application would generally be done by a programmer with a decent knowledge of finance, not a "generic" CBA. I would classify your example as a "custom domain application(s)".

Beware of proliferating terminology without adding clarity.

Defining topics with fuzzy boundaries is never an easy thing.


See also: BusinessLogicDefinition


CategoryBusinessDomain


EditText of this page (last edited August 1, 2014) or FindPage with title or text search