Complexity by Ivar Jacobson

November 15, 2003

Even if I am Swedish, it is not often that I give speeches in Sweden. However, once a year I have been invited to speak at the Nordic Rational User Conference. Thus, today I gave my talk about Use Cases and Aspects. This is probably my best talk ever. It is better received than anything I have talked about before. I think there are several reasons for this reaction. Use cases are already very well adopted. Aspects are new and hip. Use cases and aspects are really a couple - aspects are the missing link to keep use cases separate all the way down to code -- even down to runtime. If you want to learn more about use cases and aspects there are a couple of articles I have written on this subject, look at: http://www.ivarjacobson.com.

The conference ended with a panel discussion on the biggest challenges that we face in software. Each panellist was supposed to suggest one challenge only. The moderator then asked the audience to vote for the challenge they felt was most important. The superior winning challenge was Complexity in software development.

This was of course something I could wholeheartedly agree with. Since someone else gave the winning challenge I had to suggest something else: complexity in usage. Users usually only learn 10-20 percent of the features in an application. The rest they never learn. It is too complex, people don't read manuals, and even if they did, they would forget what they have read before putting it to use. 99% of all software of today is passive software. It is waiting for the user to figure out how to make the software useful. We need a new kind of software. We need active software. This is software that instead can figure out what the user is trying to accomplish and actively help him or her to be successful in doing just that.

The next question to the panellists was "How are we going to tackle complexity in software development". Here we heard all kinds of answers. I suggested that we need a new approach to software development. Software development has never been as complex as today. We need a new class of process & tools. We can't continue with a passive process like RUP and we can't continue using passive tools. We need active process & tools.

The winning proposal was that we need to invest more in training. About 70% of the audience voted for this proposal. Maybe 10% voted for active process & tools. I must admit I was quite disappointed. As if we have not invested in training over the years. Traditional training is simply not effective. It is done out of context with artificial examples and at a single point in time. With active processs and tools you learn as you work when you have a concrete business problem to solve. OK, I had to accept the answer, but to my inner self, I said that this will change. This is not the first time that I have suggested a new idea and almost no one liked it. A couple of years from now, I think we will see much more of active software. At the least I will work to make it happen.