The next big step for software development is “Language Engineering”.  As well as our own work on software factories, you can see this awareness emerging in other places eg this recent post by Martin Fowler.

 

What do I mean by Language? - look at Alan Wills' blog entry.  Those things.

 

I was reminded last week of a meeting I attended a few years ago.  It was attended by a “Business Analyst”, a “Solution Architect” and a “Project Manager”.  And me – I was trying to sort out what was wrong with the project.

 

The Project Manager was following the documented process, which said that first you must create a Business Analysis model, and then you must product a Solution Architecture model.  He had a nice Gantt chart that said how long each of these would take.

 

The problem was that the Business Analyst and the Solution Architect were completely failing to communicate with each other.  The Business Analyst had produced some pages full of bubbles and arrows. One bubble was called Home Page.  Another was called Marketing.  The Solution Architect had produced some Use Cases.  One was called Logging In.  Neither of these people showed any ability to understand the work of the other. We were completely stuck.

 

It wasn’t long after this that the project was cancelled.  If it had not been cancelled, I would have got them to mock up some screen sequences, to help to clarify and communicate the meanings of these infernal diagrams.

 

I’ve seen this kind of thing over and over again. It is fundamentally a problem of semantics.  Another way of saying this is that it is a problem of translating from one language to another.  That’s the basic problem we have to understand and solve.