Why on Earth would you need a kernel?

One day, Einstein was walking around, trying to figure out an unifying theory. He found one, unfiying matter and energy: E=mc². Gravitational energy still eludes that theory at this time, but only because it is part of a yet to be found more global theory. What is this worth? A lot. That's why we get nuclear "stuff", from plants to submarines, and maybe one day space vessels (there is some talk about ionic engines tough). To extend on that, we, in the software field, are exposed to a lot of fashion. You may have heard Dr Ivar Jacobson speak on this (I've got one of his transcripts on my blog), and getting quite motivated in talking about Kurt Lewin. You can read more about this guy on the web (e.g. http://www.infed.org/thinkers/et-lewin.htm) and the quote that Dr Ivar Jacobson keeps on repeating: "There is a nothing as practical as a good theory". At the end of that article, you get this: The consistent theme in all Kurt Lewin’s work, ... was his concern for the integration of theory and practice. This was symbolized in his best known quotation: ‘There is nothing so practical as a good theory’. Mmmh, and Kurt lasted 1890-1947. Quite a while ago. And his findings do apply very strongly to us. So, as Einstein and Lewin, we would be quite interested in having a unifying theory. Because the good theory (in contrast with a theory that sucks) is that practices will easily be grafted on it. Things will make sense. And such a good theory will exhibit several characteristics for being believable: It will work with abstract concepts that can be instantiated within the practices. It will be small enough so that people can understand it It will cover enough ground so that there is a place for fitting details It will be agnostic when it comes to selecting one of several competing options Obviously there is more to that, but it will do for my purpose. So, the good theory that we seek will have to deal with essential elements. An essential element is one that you cannot do without. Let's look at what is essential in software engineering projects. One key essential item that you cannot be without is what could be named "the Opportunity". This is what you are pursuing to create so that some value (usually in monetary, fame, or love terms) is being accrued over time when it will be ready. And there are more things like that: The system that is being specified is one, the team that will make the system is another or, as is the project itself. All of these (and other ones) are important in any software engineering "process". So, here is our quest: is there a core set of key elements that can work for us? A core set around which we can get organized? That's what a kernel does provide. So, it is indeed true that we need it. What's in there is another matter and I'll discuss it in a future post. Until then, keep on improving your way of working!