Main menu

The Black Cat

"Dogma." "Religion." What comes to mind when you hear these words? In the real world, you might think of Christianity, Islam, or Judaism. In the political world, you might think of Communism vs. Freedom. Closer to home, you might think of "red state" and "blue state."

Computers are deterministic, logical machines, yet they too have all the trappings of the world's major religions and dogmas. The desktop world is dominated by Microsoft and Apple to use the religion metaphor. All computing worlds could be broken down into "proprietary" and "open source" if we are talking about dogma.

Relevant to this discussion, the web development world has three major religions in those two dogmas: Microsoft's ASP.NET, the PHP world, and the Java world. My platform of choice has always been ASP.NET.

I am pretty solid in my reasons for preferring it over all others, and also pretty clear about the accidental reasons I found myself in this camp. Much how someone born into a particular religion is likely to freely adopt it at some point, I too ended up adopting ASP.NET for reasons that were nothing more than accidental.

I consider myself a 'citizen of the world' in more ways than one, and the opportunity to work at SoftLayer was an opportunity I couldn't turn down. I had to check my biases at the door, open my mind, and see how this side of the aisle does business. (And as if to remind me that a dogmatic shift has occurred in my professional life, Fox News continues to greet me every morning at the top of the stairs.)

To admit just some of my biases: How on earth did you build an enterprise-grade portal with a weakly typed language that doesn't require something as basic as a compiler? More importantly: Why? How does one work with such a thing? Some of you still use VI?? Seriously?

Fast forward about six months — just enough to say I am "proficient" in PHP and to have an exposure to the database side of things. The journey and rants are long and technical, but it should come as no surprise that I still prefer the Microsoft ecosystem over one based on PHP. I find it easier to work with, faster, and less error-prone than the alternative. The language is more structured, the tooling is better, and the framework better established and developer-oriented.

Humor me with this for a moment.

Assume for the sake of argument that my belief is correct — that Microsoft's offerings are indeed better than PHP's on every metric a developer can measure. If this is true, one might reasonably conclude that SoftLayer erred in its choice of development platform. Even though I will be the first to evangelize the virtues of the Microsoft ecosystem, I'll also be the first to say that this conclusion is wrong.

The conclusion is wrong because in asking the "Why?" in "Why SoftLayer chose the platform it did," I approached the question from the perspective of what's best for the developer. The question should have instead been phrased as: "What does SoftLayer's choice of platform say about our core values?"

It isn't exactly open source. Place the source code on any laptop, and you'll get the modern-day equivalent of summary execution: You will be fired.

It isn't developer convenience. It isn't needed. From what I've seen here, the developers have used their tools in a more extensive and architecturally correct way than I have in my time in the ASP.NET ecosystem.

The elusive answer can be summed up in one word: Independence. Fierce independence if you're into using superlatives.

While the Microsoft ecosystem may be the easiest on developers, it comes at price. Microsoft's ultimate responsibility is to the thousands of people that use its tools, so it has to steer its platforms in a way that fit the disparate needs of the many developers who rely on them. In relying on its own software, built on open-source offerings, SoftLayer can steer its platform in a way that benefits SoftLayer ... It has only its own needs to consider.

The soundness of this reality — and indeed, the necessity of being fully independent when one's core offering is the basic infrastructure that runs people's businesses should be obvious.

Very often we become overprotective of our dogmas, and fear that which we do not fully understand. To that end, I try to remember the words of an unlikely capitalist: "It doesn't matter if a cat is black or white, so long as it catches mice."

Comments

There are other languages with at least as much independence (eg Ruby, Python etc) that have better web frameworks, and are far better languages for developers to work with. Even Java is sorta independent if you still want that kind of strict statically typed 'enterprisyness'.

Generally (and I say this as someone doing a lot of Drupal stuff at the moment) the only times PHP is the answer are:
* You need to (or your 'product' needs to) run on cheap shared hosting,
* You need to work on top of another popular app written in PHP (eg Drupal or Wordpress etc) with a large community that gets you a long way there already,
* You need to hire lots of cheap developers,
* You don't know any better,
* Or you just plain don't like your developers :)

Comments

There are other languages with at least as much independence (eg Ruby, Python etc) that have better web frameworks, and are far better languages for developers to work with. Even Java is sorta independent if you still want that kind of strict statically typed 'enterprisyness'.

Generally (and I say this as someone doing a lot of Drupal stuff at the moment) the only times PHP is the answer are:
* You need to (or your 'product' needs to) run on cheap shared hosting,
* You need to work on top of another popular app written in PHP (eg Drupal or Wordpress etc) with a large community that gets you a long way there already,
* You need to hire lots of cheap developers,
* You don't know any better,
* Or you just plain don't like your developers :)