Being Agile by Ivar Jacobson

Rational’s Software Development Conference 2005 is over. It has been a very exciting week. I must admit I am a bit exhausted. The days were packed meeting customers or giving presentations. The nights became very late having fun meeting friends – both old and new.

Jaczone and Ivar Jacobson Consulting shared a booth and it is no exaggeration to say that we got a lot of attention. “I was really taken with the crowd at the spotlight theatre presentation by Dr. Ivar Jacobson and the demo of WayPointer. Standing room only and it wasn't even lunch time!" said Buell Duncan (General Manager, IBM ISV & Developer Relations). At this theatre presentation Tata Consultancy Services announced their work with WayPointer to make their own process active. TCS reported a more than 20% productivity gain (!), increased quality and ease of learning using WayPointer.

Jaczone and IJ Consulting gave a total of 5 presentations, all very well received. My own presentation was titled “Beyond Agile: Smart” – a thought-provoking title. This is a talk that has been cooking for more than a year. I still was not sure about how it would be received.

- o -

Today everyone wants to be agile. It is pathetic to see how basically every speaker has added the word agile to the title of their talks. I haven’t done it. I haven’t done it, for two fundamental reasons.

All my work over the years has, as I soon will explain, strived to make software development more agile.

  1. Agile is not enough, we need more. I want agile+++.
  2. What I actually want is to get smart software development. That is why the title of my talk was “Beyond Agile: Smart”.

Thus we all agree that we need agile software processes. We all agree with the four statements in the agile manifesto. We agree on many agile principles such as iterative development, continuous integration & testing, use only what you need, etc.

However, we have different ways to get there. The so called “agile methods” primarily rely on tacit knowledge. Tacit means implicit knowledge (achieved ad hoc and undocumented). The Unified Process relies primarily on explicit, structured knowledge. This is a big difference that has not come through in the debate. In previous postcards I have discussed this difference, see for instance my postcard from 2004, September 30, Minneapolis.

This postcard is to some extent a repetition of what I wrote then but I will also talk about some new stuff. I will clarify the difference between being just agile and being smart with four new manifesto-principles. I will extend the concepts of pair programming, as in XP, to many other kinds of pairs such as pair architect. However these pairs will be virtual pairs assisting you with knowledge and making you smarter. We will get there soon.

A process or a method being agile to many means that its definition (description, book, web site, etc.) is light, i.e., it is sketchy. Thus when working according to it in a project, you have to use tacit knowledge and therefore the project is agile. This may be true in many cases, but in larger organizations you usually have a lot of people with different tacit knowledge. This creates a lot of difficulties working together. People need guidelines in the form of explicit knowledge to work consistently and create good software. Thus, a very important insight is that: 

   A light process may make a project heavy.

We also know that too much explicit knowledge such as in the Unified Process (UP), can make projects heavy, if they have to select what to learn, learn it, apply it and update it with new explicit knowledge as they learn more.

However, if we in some “magical” or say smart way dramatically can reduce the work to select, learn, apply and update the knowledge in UP, the situation will be different. If we can deliver the knowledge you need, and only that knowledge, and exactly when you need it and not before, then the size of the process doesn’t matter. Whether the process “book” is 100 pages, 1,000 pages or for that matter 100,000 pages will be irrelevant for ease of use. Thus, the more the better! You will only get just what you need and when you need it. And the bigger book, the more real on-line mentoring you will get.

This is what we can do with intelligent agents. Every developer has an online agent, or as we say, a virtual mentor. The virtual mentor is able to select what you need know, teach you exactly that, help you apply what you learnt and learn itself from your experience. With WayPointer we have proven that this technology really works. Much more will happen in the years to come, but already today, as experienced by TCS, substantial increases in productivity, quality, user experience, etc. can be made.

XP talks about pair programming. With these virtual mentors we talk about:

  • Virtual Pair Programmers
  • Virtual Pair Analysts
  • Virtual Pair Designer
  • Virtual Pair Tester
  • Virtual Pair Project Managers
  • Etc.

A process supported by intelligent agents, such as the Unified Process with WayPointer, is much more than an agile process. It is a next generation process. It is beyond both agile methods and traditional processes such as UP. I call such a process a smart process.

A smart process is agile (as defined by the agile manifesto) but it is also more. I have formulated four manifesto-principles to define a smart process and I call them Manifesto for Smart Software Development:

  • Make well-known knowledge explicit over keeping knowledge tacit
  • Active process over passive process
  • Let models be code over letting code be models
  • Team capability over dependency on individuals

I am not sure that these four principles will be the most important, but they work for now. I can’t see that methods or processes that primarily rely on tacit knowledge ever can compete with smart processes. Together I hope we can make the software world smarter and not just agile.

If you want to keep up with how our work on smart methods evolves, sign up on www.ivarjacobson.com and we will keep you informed.