Software Development
Blogs and Discussion
developer.*
Books Articles Blogs Subscribe d.* Gear About Home

The Monolith Message

In a recent Cooperative Digest comment, 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 (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, 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

Comments on Daniel Read's post

A thoughtful, and Fair and Balanced, view.

But I'm afraid that the Newsweek story in which it is being assaulted for telling the truth is germane here.

We programmers desparately need to know and communicate a set of truths about a set of constructed entities that most people don't know about or care about. However, we are embedded rather deep in organizations which have in the course of the 20th century (under both Communism and the free market) learned to use the worst in people including FUD (fear, uncertainty and doubt).

Therefore Microsoft has to reassure the MIS manager, who knows he is not up to his job that they know the answer. At the same time, Microsoft STILL quietly eliminates things you need such as serial and parallel I/O as "unimportant".

Ultimately it's a moral corruption. I too played the certification game. I had to struggle for VB certification although when I took the test at the independent firm BrainBench I had the top score in Chicago, because I had not mastered the Microsoft Way. And I noticed the omnipresence of corruption in the Microsoft certification arena when I took additional certificates: "instructors" specialized in telling us how to game the test, and the classes had an overall atmosphere completely unlike that of a college classroom and far more like a military barracks, or whorehouse.

At the same time, I was struck at the 2001 Authors Event by the dedication and professionalism of Microsoft developers, which had been reinforced by .Net's overall spirit of openness and transparency.

Unlike one guy in the class (who loudly informed me that George Bush was a great President, that he was a great programmer, but that programming was on the way out all the same), most of the developers and authors were real pros...who like my old coworkers at IBM, and unlike Sun or Linux types, had had the misfortune to attend state schools rather than the Ivy League, and who (in the case of Dave Cutler, the chief architect of NT) had survived rough childhoods.

Microsoft, like Tom Watson's old IBM, had given their lives structure, decency and professionalism and for this reason they were loyal to Gates and excited by .Net.

For them, Microsoft was not just one option in a range of choices, because a Microsoft employee cannot just get an equivalent job at Google. He's viewed as significantly dumber, despite the fact that (as Dave Hansen of Princeton's compsci dept told me) to use an inferior platform is to have in most cases to be smarter and able to build workarounds. He's viewed (in that Star Wars mythos which is also a tool of control) as being from the Dark side of the Force.

Therefore Microsoft employees will be very obedient to Marketing.

And when today's Mickey Marketeers mouth today's computing platitudes, such as "open platforms", they simply do not realize that you cannot have a proprietary interest in a REAL open platform. No, you have to get the mere coders to CHANGE the open platform so that the customer continues to rely on you.

But note that the MIS manager is still free to reduce his dependence on the vendor to the extent that he acknowledges his programmers' skill or allows them to become higher skilled. I show in my book that you can process business rules without overcommit to a "business rules" vendor as long as you are willing to let your programmers write a parser and an interpreter.

But for many MIS managers, this is no solution at all. Recall that we're still embed in a bureaucratic machine that runs not only on fear, uncertainty and doubt but also on the seven deadly sins.

As management guru Peter Drucker has pointed out, there is a basic contradiction in this machine as it exists today (its Communist variety being dead except in China). It proclaims, as a corporation, the virtues of the free market as a decision procedure for sorting out effective versus ineffective performance.

But employees within a corporation, in their relations with each other and even to customers, are NOT in a free market. They can't compete with each other without destroying the corporation's ability to function, and without due reward they instead have to work together and in many cases (especially at the lower rungs) they have to "grin and bear" treatment that the market would not dish out...as in the case where the programmer's extra hours, skill and dedication are unrewarded.

MIS success, we've long been taught to believe, is unrelated to skilled programming although a complete *naif* might believe otherwise, and in my own direct experience, it is indeed the ace programmers who later on became millionaires.

The necessary *mythos* (in the sense of stories, we tell round de campfire, to reconcile ourselves to life-which-sucks) is that there is a mysterious firewall between ace programming and MIS insight, a sort of "big picture" which ace programming obscures.

But, in fact, there seemed to Dijkstra (after honest investigation around the time of the 1968 NATO conference on software engineering) a near-vacuum outside the space of ace programming as long as you include formal systems alongside ace programming.

Upon investigation, Dijkstra found this to be a twittering world, an Alice in Wonderland world, where words like "the User" floated unmoored to referents above the heads of conference attendees.

One would compare it, Dijkstra would compare it, to the world of the philosophers as re-presented in the popular mind but for the fact that one, and Dijkstra, has read Kant and realized the difference between the irresponsible claims of AI and what Kant was dealing with at the level of a philosophical psychology which had, among other things, to "bootstrap" like an operating system, and to make space, like an OS, for itself.

I conclude that ace programming is everything and I conclude that it takes a humanity which owing to the fact that modern organizations have learned as systems to run on fear, uncertainty, doubt and the seven deadly sins is running dry: organizations don't run exclusively on FUD and the Seven Deadlies.

Indeed, ace programming may be exactly what Derrida claims it is:

"If the theory of cybernetics is by itself to oust all metaphysical concepts-including the concepts of the soul, of life, of value, of choice, of memory-which until recently served to separate the machine from man, it must preserve the concepts of writing, trace or grapheme, until its own historico-metaphysical character is also exposed. Even before being human (with all the distinctive characteristics that have always been applied to man and the entire system of significations that they imply) or nonhuman, the written mark-or the grapheme-would thus name the element."

"An element without simplicity."

"An element, whether it is understood as the medium or the irreducible atom, of the arche-synthesis in general, that is to say the origin of MEANING in general."

Competition, Competence, and Execution

After reading Daniel's initial post, I wanted to respond how refreshing it was to hear someone echo what I suspected about certifications. I can't say how many classes I've endured where understanding took second place to test preparation. When I see someone print personalized business cards with all their certification logos proudly displayed, I get the sense that it fufills the same purpose as an expensive sports car...as overcompensation for something.

Having made that inflamatory remark, let me quickly add that something has to be said for the initiative and spirit of a person willing to pursue certification...which is to be commended above the more common programmer who never picks up a technical book or reads a professional article on his own time. Also...if the market demands certifications, you certainly can't blame the person who is willing to meet that demand.

Speaking of training and certification, I am appalled at a sense of entitlement that is pervasive in the profession: If you don't send me to a 6-week training track at a plush location so I can be mindlessly read to and spoon-fed, then forget it! Don't expect me to stay current with technology. That doesn't mean the organization doesn't have a responsibility to the programmer to provide the tools-and-training straw needed to make the technology bricks, but the programmer also shouldn't act as if all they have to do is show up for work. And some do.

Now...about the Ace Programmer. Perhaps I am too practically-minded and am reading too much into this. We need to be careful to consider the full picture of what an "ace programmer" means. (Mike Gunderloy has a good book: Coder to Developer: Tools and Strategies for Delivering Your Software.) On the surface, it sounds like a hotshot coder. If that's all we're talking about, clearly a hotshot coder can work some wonderful wizardry, but never follow through on the myriad of details required to complete and implement a project. I realize in a large organization there may be a whole staff of people to take care of all that, but someone consulting or working in an environment where a single developer takes responsibility for most aspects of a project, coding is just one part of the puzzle.

I remember a former manager I had describing one of my coworkers (who was a talented coder) by saying, "He needs one of those jobs where he can play with things all day and then toss them in the COOL or NOT COOL box." He was notorious for writing something, deciding he could do better, and start all over, again and again, so the schedule was sausage. Granted, I think most developers would like to do that...keep striving for perfection...but at some point we have to deliver what we're being paid to deliver. That's execution.

One last comment relating to Mr. Nilges post: competition. Many developers have learned to despise performance evaluations, and some consider them devisive, for many of the reasons mentioned: encouraging individual competition when it should be all about the team. Done right; however, performance evaluations are personal challenges, not challenges against coworkers. While I suspect that most of the bloggers and readers here are so self-motivated and have such a high work ethic that they would be high achievers with or without performance goals, that simply isn't true for all folks in the profession. Do you really want to work alongside dead weight, making you carry more than your share of the load and have your manager do nothing about it? Without objective measures, it is much more difficult for the manager to "prove" poor performance and do anything about it.

I do agree that pitting one developer against another should not be done. However, I think we do ourselves and the profession a disservice if we propagate the victim mentality. While programmers should be treated respectfully and not subjected to unfair work practices (including ridiculous expectations of overtime), we should reserve the "Us against The Man" argument for when it is truly justified, or it will become as tiring as the VB v/s C# debate.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

User login

About our advertising.

Atom Feed

developer.* Blogs also has an Atom feed, located at this url.

Click here for more information about Atom.

A Jolt Award Finalist
Software Creativity 2.0
Foreword by Tom DeMarco

Recent Posters

Based on most recent 60 days, sorted by # of posts and name.

Google
Web developer.*

Who's online

There are currently 0 users and 20 guests online.

Syndicate

Syndicate content
All views expressed by authors, bloggers, and commentors are their own and do not necessarily reflect the views of developer.* or its proprietors.
Click to read the Copyright Notice.

All content copyright ©2000-2005 by the individual specified authors (and where not specified, copyright by Read Media, LLC). Reprint or redistribute only with written permission from the author and/or developer.*.

www.developerdotstar.com