Blogger: Kirk Knoernschild
I arrived at EclipseWorld yesterday just in time to hear Ivar Jacobson's keynote titled "Be Smart". If you've never heard Ivar talk, it's a treat. Using some dry humor and a wealth of experience, he attacked this topic from a pretty fundamental perspective.
He started by talking about the traits of good software - reliable, useful, and extensible. It was extensibility, he noted, that is unique to software. Few other products need to be designed with extensibility in mind. But software is intangible and often considered infinitely malleable. Because of this, software must be extensible to meet expectations. To achieve this goal, it's important that we reuse components. Component here is used, I'm pretty sure, in the general sense. A component could be a third party framework, or it could be a service.
Unfortunately, Ivar noted that we've been trying to find ways to build good software for a very long time, but still haven't quite reached the tipping point. He pointed out that the software industry is truly enamored by fashion, possibly more so than the fashion industry (an example of his dry humor). To illustrate how we are so caught up in fashion (fads and trends), he pointed out some of the hot technologies of the past few years. Fifteen years ago OO was the rage. Ten years ago it was UML. Five years later, everyone was clamoring to jump on the RUP or CMMI bandwagon. More recently, it's been Agile methods that have caught our fancy. But in the end, none of it these fads have given us that magic bullet we're looking for. Why? Because processes and people don't develop software - people do.
For a long time, we've tried to use process to make people interchangeable, and tools to make less skilled people as effective as those with great skill. Unfortunately, that doesn't work. And as Ivar noted, it really isn't very smart of us to do that.
He went on to describe some "unsmart" things we do, and then talked about the smart thing we should be doing instead. For example, really big teams are unsmart. The smart thing to do is break that big team down into a bunch of smaller teams. He drew an analogy here to how we organize a sports team. Another example he cited was that many companies still try to document their requirement early in the lifecycle. But really, all you're left with after requirements documentation is complete is a mound of paper, but nothing executable. And how can we measure progress if we don't have a system? That isn't very smart. The smart way to proceed is through building a skinny system and incrementally add more capabilities to that system over time. Surround it with tests (and other executable artifacts, of course) that prove you've hit your mark. At this point, Ivar made sure to cite a variation on our Vantage Point theme by saying that smart people think big, but build in small steps.
There were a few other nuggets of wisdom thrust upon us by Ivar, as well. That ivory tower architecture isn't very smart. He noted that 80% of all enterprise architecture efforts fail. Where he got the number, I'm not sure. While Ivar has written eight books that have sold over a million copies, he said that nobody ever reads process books (again, his dry humor showing through). His point was that we have enough process, and we don't really need more. What we need instead, are good solid composable practices that offer guidance, and that smart people can figure out the details themselves.
He concluded with a joke. Two fools were standing on the street corner discussing what it takes to get rich. Up pulls a gentleman in a fancy sports car, and one of the fools decides to ask the gentleman his key to success. The gentleman pulls the fool aside and explains to him that you just have to be smart. The fool doesn't understand, so the gentleman illustrates with an example. He walks the fool across the street and puts his hand in front of a tree. He tells the fool to punch him in the hand as hard as he can. As the fool winds up and delivers his punch, the gentleman pulls his hand away at the last minute. "See, now that was smart of me", says the gentleman. The fool with a sore hand walks back over to his buddy who asks him what the gentleman said. "He said you just have to be smart. Let me show you.", said the fool with the sore hand. Given no tree was on this side of the street, the fool puts his hand in front of his face and says, "Hit my hand as hard as you can." Now that's not very smart.
Sometimes smart is just common sense.