While at Tech Ed this last week, I was able to have a couple conversations with John Lam of http://www.iuknown.com fame. One of them regarded the importance of notation when expressing a problem. There are certain types of notations that are best at describing certain solutions. Take for example musical notation. What you can express compactly using musical notation would take a lot of text to express in English (or any other language for that matter). The same goes with fields like mathematics, chemistry, etc.
How does this relate to programming? A programming language is a form of notation. What can be expressed well in one language can not be expressed well in a different language. That is one reason (of many) to learn multiple languages. By learning different languages, and hence different notations, you start to realize better ways to express a given problem by using different notations. Where the idea of notation really gets interesting is when you start looking at the idea of Model Driven Architecture and Software Factories. In some ways, MDA and Factories are similar, in some ways they are quite different. However, they both try to solve a similar problem using different notations. I’m going to take this opportunity to discuss Model Driven Architecture and, more generally, a tendency in software development that I like to call Picture-Oriented Development.
While I believe that Picture-Oriented Development does have its uses, it can also be abused quite easily if you’re not careful. While pictures are good at expressing a thousand words, pictures are bad at expressing a single word. The problem is that once a picture fully expresses a problem, the view of the entire system as a whole has been lost due to the sheer amount of detail present. This syndrome is quite similar to a thousand voices talking. When there are only three voices talking, you can isolate and listen to a single voice. But once there are thousands of voices speaking in equal volume, your brain loses the ability to isolate a single voice. In a way, pictures are a form of macro-communication while certain aspects of building a software system really need forms of micro-communication in order to be successful. Solving micro-problems with a form of macro-notation presents an inherent disconnect between the problem and the solution. In our job, we need to avoid this disconnect and any associated context switches as often as we can because software development is inherently a complicated process.
I’m not trying to say that Picture-Oriented Development is a bad thing. I’m saying that it is easy to buy into the hype of it all, especially with the new glitz and glamour that is coming in Visual Studio 2005. You might be able to tell that I am still quite skeptical of using MDA as a software development platform from beginning to end. Do I have a better solution? No, I do not. I am just doubtful that Picture-Oriented Development is the way to go. I do believe, however, that we need to find a better way to develop software. I just think that when discussing MDA vs. Software Factories, Software Factories seems like the more realistic way to go.