It’s been a while, I don’t know if “software factories” is still the name of the meme, but the idea is simple.
There are two ways to profitably make software: low wages or high productivity. The reason the software business is flying from our sweet shores is that ROW has mastered the low-wage variant. I quit developing software in 1997 because I realized that ROW software engineers who thought a tenth of my salary was good money were actually writing world-quality software. Obviously that trend has continued.
Which leaves “high productivity” as our only option if we want to innovate and survive. What is high-productivity software?
Ever since I’ve been in the business people have been convinced that productivity in software inheres in leaving the details to the computer. High-level languages were invented so people didn’t have to write assembler. 4G languages were invented so people didn’t have to write high-level languages. Declarative languages were invented so people didn’t have to go into means, only into ends (handy in political life, too, I would think).
The idea behind software factories, or domain-specific languages, is that there’s no such thing as a generic high-level language. You need a language that’s optimized for a particular domain. So there are (or should be) domain-specific languages for home automation, for mortgage underwriting, for steel manufacturing.
In a software factory, one team writes the domain-specific languages, and another team writes applications using the constructs of the domain. The domain-specific language team is expert in capturing domain objects and rules and reducing them to general-purpose engines. The application teams are expert in capturing application/business requirements and reducing them to procedures (or functional expressions) in the domain.
High productivity. You can pay pretty high wages to people working at this level of abstraction.
Why hasn’t the software factory idea taken off? And what can we do about it?
Welcome your thoughts.