- Success and Failure of Projects and Strategies
- Core Competencies
- The Need for Understanding: Abstraction, Precision, Explicitness
- Abstraction: The Way to Put Management in Control
- Basic Structuring Constructs
- Business Rules: Precision vs. Handwaving
- Tacit Assumptions and "Evident Truths"
- Specifying Problems and Solutions
- Where to Start and Why: Business Domains
Business specifications are created by competent business modelers who work together with business subject matter experts (SMEs). But why should a business modeler be proficient as a Java (or C) programmer? The results of such requirements, which can be often seen in various kinds of help wanted advertisements, may be quite far from optimal. The reasons were given by Adam Smith a long time ago. "The greatest improvement in the productive powers of labour, and the greater part of the skill, dexterity, and judgment with which it is any where directed, or applied, seem to have been the effects of the division of labour." [S1776].
Adam Smith probably reused some of these ideas from his Professor Francis Hutcheson's System of Moral Philosophy:
"Nay 'tis well known that the produce of the labours of any given number, twenty for instance, in providing the necessaries or conveniences of life, shall be much greater by assigning to one a certain sort of work of one kind in which he will soon acquire skill and dexterity, and to another assigning work of a different kind, than if each one of the twenty were obliged to employ himself by turns in all the different sorts of labour requisite for his subsistence without sufficient dexterity in any. In the former method each procures a great quantity of goods of one kind, and can exchange a part of it for such goods obtained by the labours of others as he shall stand in need of. [...] Thus all are supplied by means of barter with the works of complete artists. In the other method scarce any one could be dexterous and skilful in any one sort of labour." [H1755]
We all want to be skillfulcompetentin what we are doing. Therefore, we need to concentrate on our strengths and delegate everything else to others. Business modeling and Java programming are different kinds of work, and employment by turns in these different sorts of laborstill often promoted in various environmentshas been, and is, unproductive.
At the same time, some basic knowledge is very useful, or perhaps essential, for many kinds of human endeavor. This knowledge is common to and is the foundation of many competencies. It is not fixed, and in most cases it is not about specific facts. In most modern-day environments, this knowledge is "what remains after you forget what you learned in university" (E.W. Dijkstra). It certainly includes the understanding and use of abstraction and precisionthe core competencies of a successful professional. The specific competencies of different professionals are different due to division of labor. The foundations for their cooperation are in the core competencies; and when these competencies are articulated and used explicitly, the cooperation (for example, among business subject matter experts, modelers, and IT specialists) is much easier. In order to discover and use the core competencies, we should not be reluctant to go back to first principles.