I am the weapon

Recently at work we got into a hot bed discussion of the virtues of “Webby” style programing (aka MVC style aspx) vs. “Netty” style programming (aka WebForm / Postback model).  As one can imagine, this “discussion” was a bit touchy (read: nerdy version of Yo momma).  Arguing one side over the other is like trying to compare and contrast various religions.  Most programmers feel very strongly one way or another.

Personally I find myself more in an apparently smaller camp.  I don’t believe either tool is inherently better or worse than the other.  Each tool opens some doors and closes others.  It’s entirely my choice which tool I want to use and, for that matter, how well I use it.  The trick is in knowing which one is the better tool for the job at hand.

Some tools have inherently different value propositions.  If we were to compare and contrast the value of a sword vs. a gun, we could say:

  • They have different range applications.
  • The gun has a limited supply of impact, where the sword is only limited by personal strength.
  • One is lighter than the other (usually).
  • The sword requires greater skill than a gun to use it effectively.

In a modern sense the gun has surpassed the sword in it’s application.  In an “enterprise” (aka army), it’s proven to be the superior tool.  It’s advantages greatly out way it’s disadvantages.  But that doesn’t negate the others value or it’s effect.  In fact, there have been many instances when a sword has won over the gun.  Why?  Because in the tool is only as good as the man or woman welding it.  It’s not any different with programming.  One approach is going to have a better application in one scenario than it will in another.  And even then it will only be as effective as the programmer who uses it.

In the case of our discussion, the primary argument around moving away from the “Netty” way of doing things was size of page.  They argued (poorly) that viewstate was the worst sin amongst programmers.  In this particular case, they could have easily appended a single line to remove it.  Instead they seemed to suggest we should abandon the whole style of programming because it’s “too easy” to do the bad thing in the “Netty” way.

There are many good reasons to choose one thing over another, but I don’t buy for a moment that we should discard anythings inherent value due to it’s propensity to be used poorly.  The AK-47, for instance, has a history of being abused by terrorist organizations.  It’s easy to use, rugged, and has a high payload.  Does this mean that the AK-47 is a bad rifle?  No.  In fact, the AK-47 is considered by many to be one of the greatest rifles ever made…  for exactly the same reasons it has a propensity to be abused!  Does that mean the good guys should be forced to use a different gun because some bad folks have used it?

At the end of the day you are required to justify your choices.  If your software doesn’t work, people are going to want to know why.  You should have a good reason.  Even if it works, people are going to look at your choices and wonder.  I have seen programs written with the wrong tools (think: batch file programming).  I have seen programs with the right tool but the wrong programmer.  I have seen great programs written in styles I wouldn’t personally choose.  Which is better?  Is Chinese food better than Greek?  Depends on the chef, taste buds, quality of ingredients, alignment of the sun and the moon and the stars…etc…

Finally, there is also something to be said about choosing the tool which resonates with your personality.  The ideal style of programming is the one that’s flexible enough to fit and grow with your needs.  It’s not about labels, it’s about individuals.  You are the weapon.

Post a comment or leave a trackback: Trackback URL.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: