Software Industrialization Or Software Craft?  

By Alex Bunardzic under First they ignore you.. on 24. August 2005

If I were to state that software industry is in crisis, I would be guilty of stating the obvious. The field of software development has been in crisis ever since the early ‘90s, if not even earlier than that.

But what’s important is to realize that nowadays, this crisis has reached major proportions. I know I sound like yet another ‘the sky is falling’ FUD protagonist, but there simply isn’t any other way to look at the problem. A significant number of mid sized and large corporations worldwide have been ‘once bitten, twice shy’ when it comes to making any significant investment in their software practices. Thus, the status quo situation is growing stale at a breakneck pace.

So why am I bringing this up? Simply because I am sensing an impeding tension building up between the proposed practices of software industrialization as opposed to staying with the tried-and-true practices of crafting software by hand.

Software industrialization (you can read more about it here) proponents insist that, in order to get out of the software development slump, we must make a transition from the hand crafted way of developing software to a full blown industrial assembly line model.

Fine. Automate as much as possible, rendering the whole process much more affordable. What could be wrong with that?

But not so fast. At the same time, while we’re getting caught in endless deliberation over whether Microsoft or Java or Oracle or SAP or LAMP or…? should be the worldwide software ‘industrializator’, another light at the end of the tunnel is becoming more and more visible. This light is what I would call the ‘smart servant’ approach.

So, instead of the proposed ‘dumb workforce’ mass industrialization model, an alternative model is being proposed whereby a handful of smart servants should be deployed to accomplish the workload of huge army of faceless, nameless drones.

In other words, instead of generating faceless, nameless reams of cheap software code, the alternative approach offers the possibility of hand crafting very high quality software code that will bring additional power to its users.

The ‘smart servant’ principle claims that it is better to employ a smart person or device, who will be able to accomplish complex tasks upon hearing just a handful of simple commands, than to employ an army of dumb devices who will have to be fed large lists of aggregated complex instructions, to be followed blindly.

The question, of course, is why should a smart servant be a better model?

Before I offer my views on why this should be so, I’d like to pause for a minute, and see if anyone would like to tackle this little challenge?

And so, without further ado, I’d like to now open the floor for a brief discussion on this topic…

10 Responses to “Software Industrialization Or Software Craft?”

  1. teddziuba:

    Let me see if I’ve got your idea correctly. You’re talking about building software that is “smart”, so that it will eliminate the need for other software?

    I suppose an example of something like this would be Google. When I search on Google, many times I feel like it’s reading my mind. It’s not just the relevance of the search results, it’s the often psychic “special hits” at the top - like Calculator, Phone Book, News Articles, etc. Such “mind reading” isn’t easy, though.

    I think, however, it would be somewhat wasted effort to code up a general case for all the one-offs and corner-cases. Sometimes, a specialized program works the best.

    Or am I reading your idea wrong?

    comment at 24. August 2005

  2. Christopher Andersson:

    Isn’t the “smart servant” the result of industrialization?

    With industrialization in place the small details of cogs and wheels don’t have to be thought about, and the creator can operate on a higher level. As in the difference between writing in assembly as opposed to writing in Java or C#.

    Unless I’m completely missing the point of what a smart servant should be I see it as almost one and the same. You industrialize to have the smart servant.

    comment at 25. August 2005

  3. J Drakes:

    I think that the ’smart servant concept’ is really on the opposite side of the ’software industrialization’ concept. The way I see it, the smart servant is built to fit like a glove to a user special needs and to his way to express such needs. In a way it is very highly specialized and idiosyncratic to the user language. A piece of industrialized software, due to its very nature, must be so generic and high level that it will require lots of configuration and specification, requiring a larger body of knowledge and making it quite unweldly to use in practice. I see smart servants as being the way to go on the frontline of business innovation, with factory software taking care of the informational infrastructure.

    comment at 25. August 2005

  4. Ian Bicking:

    I think the industrialization model is premised on a command-based decision process, where software consumers define a piece of software, and dictate that employees produce that piece of software. Industialization proponents want to make that process as predictable as possible.

    I think a premise of this is an employer/employee model where decisions and transfer of knowledge is unidirectional. Even software experts who participate in the process are taken out of the production side into management. It’s a system where hierarchy becomes the defining structure of an organization, not skill or duties or complementary roles.

    A market-based approach is something of an alternative, but markets don’t generally allow for intelligent conversations. The “conversation” in the market is statically inferred, a metaphor, not a literal exchange. But conversations — literal, not metaphorical — are important to good design. While some problems can be solved with wise producers who speculate on the utility of a product (common for mass-marketed software), this isn’t feasible for a large class of problems where the resulting risk is too great, and the software producer has significantly different domain knowledge from the software consumer.

    To me the “smart servant” implies some combination of these two ideas.

    comment at 25. August 2005

  5. alexbunardzic:

    People, people…

    You overwhelm me! I was astonished to find so much intelligent discussion on this topic today. Believe me, I’ve learned a lot by reading your thoughts posted above. I feel totally humbled now.

    Thank you!

    comment at 25. August 2005

  6. alexbunardzic:

    teddziuba wrote:

    “Let me see if I’ve got your idea correctly. You’re talking about building software that is “smart”, so that it will eliminate the need for other software?”

    Hmmm, a very intriguing concept indeed, however, that’s not what I had in mind.

    When I talk about the ’smart servant’, I typically think of something like this:

    Let’s say that I’m in the middle of a very delicate operation, such as painting my back porch floor in a sweltering summer day, or something like that. All of a sudden, as I’m working, I feel mighty thirsty, and I tell my ’smart servant’:

    “I feel like having a beer!”

    What I expect him to do then is go fetch me a cold beer, and serve it in a shady spot in my back yard. I wouldn’t want him to go get a beer and then calously barge into the painted area and shove the beer in my face while I’m in the middle of holding my brush.

    A ’smart servant’ works on the principle of ‘do what I mean’, not on the principle ‘do what I tell you to do’.

    comment at 25. August 2005

  7. hxa:

    As soon as you start reading the ’software industrialization’ stuff from the link, it is impossible not to see it as yet another big-vendor-framework-pipe-dream. And that particular group is from microsoft — who have a solid track record of this vaporware. There are surely some elements of substance, but they will emerge in a disorganized, evolutionary, way.

    I don’t believe there is/has been a software crisis. Software is everywhere, doing things previously impossible, and continually advancing. One can compare with other industries for perspective.

    The way I see the future happening is mostly a gradual disappearance of software. Common, limited, uses of software spread and solidify, copies of ‘applications’ are then bought not built. It is a steady escalation of reuse. The commercial forces toward that must be irrestistable.

    As a detail I would foresee a great simplification and specialisation of ‘development’. Business domains would have quasi-technical people ‘configuring’ business applications. That would be my angle on ’smart servant’.

    comment at 18. September 2005

  8. Ethical Software by Alex Bunardzic » Verbal Communication:

    […] I personally found that Ruby is the tool that can help me resolve the above described impasse. Ruby is the Smart Servant that understands my human bent toward plain text, and at the same time knows how to translate my text-based intentions to the underlying machinery. This match made in heaven allows me to easily maintain the desired level of verbal communication without worrying about translating all that mess into a machine-readable form. […]

    pingback at 25. October 2005

  9. Ethical Software by Alex Bunardzic » Ruby on Rails Value Proposition:

    […] Why is this? Simply put, Rails relieves me from the drudgery of doing the stuff inbetween, the stuff that all the other platforms and languages insist I work on. Pretty much anything that happens between the formulation of my business model and the articulation of the end-user experiences as that user interact with the system, is taken care of by Rails. I wrote a couple of months ago about the Smart Servant, and it bears repeating here — Rails is a smart servant, in the sense that its reason d’etre is to do everything possible in order to ease the developer’s burden of implementation. […]

    pingback at 29. October 2005

  10. Ethical Software by Alex Bunardzic » Smart Master:

    […] You’ve heard me talk about the concept of smart servant on more than one occasion (HLL Vs. VHLL, What Is A Software Product, Ruby on Rails Value Proposition, Verbal Communication and Software Industrialization or Software Craft?). I first heard of that concept ten years ago, when I made a switch from the machine-centric to human-centric software development. I’ll continue to explore this fascinating subject, but today I’d like to make a slight detour and talk a bit about the flip side of the coin — the smart master. […]

    pingback at 23. December 2005