A few years ago I took a data warehousing course with the Kimball group and remarked at the time that the data warehouse field appeared to have a highly structured approach to designing data warehouse solutions. While building data warehouses seemed to have well established patterns and methods for how to construct them, software systems seemed to be like snowflakes, each one built with different methodologies uniquely suited to particular project/team/company. And no shortage of debate about the competing merits of varying approaches and methodologies. Data warehousing felt like engineering while software development was more like art.
That perspective changed a few months ago when I had the opportunity to attend the IDesign Architect's Master class taught by Juval Lowy. In this course, Juval presented a highly structured methodology for software design. I found the course riveting and eye opening. It was my first experience with a comprehensive proven methodology that could credibly demonstrate a method for taking software development from craftsmanship to engineering. The single most compelling thing I took from the course is the idea that, contrary to appearances, there aren't a paralyzing myriad of options making each software system design a unique creation. This sentiment is distilled into Juval’s Zen of architecture.
For the beginner architect, there are many options
For the master architect, there are only a few
But there’s a big difference between theory and practice, and while an appealing sentiment maybe I’d drunk the cool-aid too quickly and fell for the cult like lure of Juval’s style.
However, since that course I have also had the opportunity to work with Shy Cohen of IDesign, and have seen the Method applied first hand when we hired him to help develop a new high level architecture for our corporate systems. Its an impressive thing to see a method produce an enterprise architecture in one week. It further bolstered my belief in the prospect of true software engineering.
Years ago I attained a Master of Software Engineering degree largely because I craved a more formal discipline to compliment my self taught skills. While my master's studies really never provided that, I think I have now found with IDesign what I was seeking back then. I'm still a long way from taking it from architecture to implementation, nor am I practiced in the Method, but then again I've only begun to study with the masters and I’m pretty optimistic of my chances.