logo
Published on developer.* Blogs (http://www.developerdotstar.com/community)

The Monolith Message

By Daniel Read
Created 2005-05-17 13:44

In a recent Cooperative Digest comment [1], member Gunish Rai Chawla wrote in response to Edward Nilges:

my idea of developing a Rhobust and a reliable application is to try and find ways to do stuff within the relm of the Central Framework which is being used to Develop the application. I Always Have this Gut Feeling of INSTABILITY and Unpredicted/Unnecessary Error Handeling tactics whenever i try and use more than one completely different language to build up one solution.

With all due respect to Gunish, and gratitude his for posting his thoughts here, I don't think I agree that there is an inherent connection between "stability and reliability" and a homogeneous technical implementation within a "central framework." In a pure, laboratory, small scale sense, absolutely--homogeneity is ideal. But in the world of programming for hire, heterogenity is a tool we can't do without. Certainly heterogeneity brings with it extra work and extra risk, and often limitations, but done properly, mixing and matching very different technical tools into a unified system does not have to lead to a problematic degredation of stability and reliability.

Certainly some degredation of stability and reliablity will occur from the mixing of a relational database, a hybrid procedural/declarative stored procedure programming and query language, an object-oriented middle tier, an HTML- and JavaScript-based presentation tier, an XML/XSL/PDF based reporting facility, and a message queueing- and script-based integration facility--but the trade-off in capabilities more than makes up for the loss of homogeneic stability and reliability. (And of course a greater burden is placed on the designer/programmer to "do it right.")

The "central framework" aspect of .NET has always seemed to be as much a marketing concept as it is an important technical one. To be sure, the unified, consistent, all-in-one aspect of .NET has a lot of positives. Frederick Brooks wrote that conceptual integrity is a key to software quality, and .NET probably has the most conceptual integrity of almost any Microsoft product I can think of, particularly one with .NET's scale (it's easy, that is, for Notepad to have conceptual integrity). There is a powerful efficiency that I have found while working in C#, which is fully in line with the conceptual integrity of the larger .NET framework.

The smart technical designers behind .NET were, no doubt with the support of management, able to build a lot of interoperability and potential for heterogeneity into .NET. The fact that I was just over at the book store flipping through a book on how to build platform independent .NET applications makes that clear to me. I can also see the dedication to interoperability when I read Adam Nathan's 1600 page epic .NET and COM: The Complete Interoperability Guide [2] (which I highly recommend). Nathan was a key player on the team that designed and tested the .NET-COM interop aspects of .NET, and it's clear from reading Nathan's book that they went to a great deal of trouble to achieve as much interoperability and backwards compatibility as possible, with as clean an implementation as possible, staying in line with the .NET conceptual integrity as possible. Microsoft is to be commended here, as they are on many other purely technical points (such as the achievement that is SQL Server).

The technical side of Microsoft's dual personality recognizes that heterogeneous implementations--even within .NET itself, as in Gunish's example of needing to mix some C# in with his VB.NET code in order to interface with the parallel port--are a key consideration. Microsoft's marketing side, though, has a hard time letting go of the monolith message--do it all with Microsoft, and everything will be great! I'm not arguing that the people who develop marketing messages at Microsoft must start including descriptions of each product's flaws as part of their message.

I'm an adult living in the 21st century, and I can easily distinguish between the myriad Microsoft advertisements and other branded literature I come into contact with on a regular basis and the technical mertis and general usefulness of the company's products (which, on the whole, in my opinion, are pretty darn good). So I don't pine for some marketing-free utopia. But I am bothered when I sense, correctly or not, that the marketing side is encroaching on territory I would prefer to see left to the technical side (not unlike the theoretical separation between editorial and advertising in jouralistic organizations).

The tendency of Microsoft to allow marketing messages to muddy the waters for technical people is understandable, but unfortunate. I experienced this often several years ago when I was actively working on, and then later keeping up with and upgrading, my MCSD certification (something I long ago lost the passion for). The entire Microsoft certification program was, in my opinion, way too influenced by marketing concerns (at least from my vantage point as a programmer actively engaged with the program; I can't say what the program is like now, since I have not paid close attention for some time).

The marketing influence was apparent not only in the way the certification program was operated, but also in the content of the tests themselves. Obtaining the real world knowledge of the tools and platforms was only part of the equation in passing a Microsoft certification test; one also had to get in tune with Microsoft's view of the world, one in which the correct answer is not always the correct answer, and one in which the question itself is so loaded with questionable assumptions that choosing the correct answer becomes more akin to solving a puzzle.

This phenomenon of marketing's influece on technical content extends to the Microsoft Press books, which I often avoid because they tend to adopt that rosy world view, one in which it is impolite to talk about the warts and workarounds. I don't mean to paint all Microsoft Press books with the same brush (they publish Code Complete [3], after all), but many of their hands-on, how-to technical books err on the side of assuming that everything is going to work fine when you sit down at the keyboard and try to make the stuff work. Is it a coincidence that so many of the best authors out of Microsoft (Nathan included) publish with Addison-Wesley, APress, and Sams?

It's easy for me, an outside observer, to throw stones, but I'm not doing so just for fun. I've been making my living using Microsoft's platforms, languages, and tools for a number of years. I've earned Microsoft's certifications, bought Microsoft's software (and sold and installed a ton of it), read Microsoft's books, subscribed to Microsoft's magazines, and spent countless hours using their products (and will continue to do so). I wouldn't do all this if I didn't think Microsoft was doing a lot of things right. At the same time, developer.* runs on Apache, Linux, PHP, and Java. I like heterogeneity, and I like the fact that great products like these exist in the public sphere, and that the "gift culture" of the Internet is the driving force.

To be fair, in defense of the nice people who work in marketing a Microsoft, I did observe at the SDWest 2005 conference, where Microsoft had a big presence, that even the marketing face of Microsoft seems to have gotten the heterogenous religion now that web services have arrived, and now that it is clear that Microsoft, like IBM before it, will have to learn how to live in a world where Apache, Linux, Java, PHP, and Firefox are in wide use. I think such a diverse and heterogeneous world is a good one to live in. I think Microsoft will find a comfortable place in this world.

--Dan


Source URL:
http://www.developerdotstar.com/community/community/node/205