Venturing deeper and deeper into ASP.NET is exactly like playing Zork.
Zork is an old, old adventure game from Infocom (in the spirit of the original Adventure game), where you wander through a gigantic cave, looking for treasure and trying to solve puzzles. The whole game is text-based, with sometimes complex tasks that you need to accomplish before you can advance. For instance, to pass through a certain hall of ghosts, you may need to get some garlic (garlic scares ghosts away, as everybody knows); now where did you find the garlic? And before you can go back to get the garlic, you need to do something else first in order to do that.
ASP.NET is very much like that. Before you can debug a process, you need the correct environment set up. And to do that, you need IIS 6 installed; but on Vista, IIS 7 is installed, so you need the IIS 6 Compatibility and Metadata Layer before you can do that. And when you’ve taken care of that, there’s configuration that is mismatched, so you need to update the Application Pool settings, and then it can’t start because Windows Authentication isn’t enabled for the website, so you need to go in there and fix that; but you can’t enable Windows Authentication because Forms Authentication is already enabled and those two can’t coexist, so you first need to disable that…
The only difference is that you don’t get points for solving these problems, as you did in Zork.
—
I’ve long maintained that Microsoft have fundamental problems in building software. If Apple “Just Gets It”, Microsoft just doesn’t. Maybe it’s a problem with a thousand middle managers each having their own say; I don’t know.
There’s a notion within software development these days, if you read books about agile modeling, pragmatic programming etc, to aggressively pursue a balance between power and simplicity; to remove unnecessary dependencies, to isolate and compartmentalize solutions. To switch components at will without breaking interfaces and redeploy in new environments without changes is the goal.
This is completely at odds with Microsoft’s methodology. Microsoft builds dependencies, integrates software, creates a thousand and one links between their programs. On the plus side, inserting an Excel sheet into an email was never so simple; on the negative side, it is nearly impossible to take a solution and deploy it to a different place without feeling like you’re caught in a spider’s web, kicking and screaming at everything and getting nowhere, while the evil deadline is moving in to consume you.
Yes, building good software is hard, and I won’t even begin to approach the problems they face in maintain products of such enormous dimensions as Office, Windows or anything like it. Still, it’s not too hard to observe certain tendencies, a certain line of operation, in their programs. Anyone who’s every tried to develop an ASP.NET application on Apache should know what I mean (whether you, in fact, like to blame Apache or Microsoft).
When Ed Castro made his remark “no modebit” in the famous book The Soul of a New Machine, he made a critical choice. Had Data General’s 32-bit minicomputers employed a modebit (to flick a switch and make the 16-bit minicomputer suddenly turn into a 32-bit supercomputer), they would still have worked with those modebits today, and probably more than just one modebit too. It is reminiscent of Intel’s protected mode: although “real mode” is now gone since long, it’s still in the processor and can’t be left out.
But sometimes radical decisions are necessary, and radical simplicity is needed today. And that’s where Microsoft fails and will continue to fail, until they become the next IBM of the 90′s, drifting towards the sidelines and badly needing to reinvent themselves.
Some say, this is already happening.