Tuesday, October 28, 2008

Built On More Technology

I have seen comments by other developers claiming ASP.NET is not a good technology because, "It abstracts reality away from you and produces troves of developers who don't understand the basics of a simple form post."  It cannot be argued that ASP.NET helps abstract away some of the aspects of the technologies it is built on. It is also true that many developers that begin their careers by learning ASP.NET might never fully understand the technologies that it is built on top of.  But I would not say that the ASP.NET technology "sucks" because of this.

Building easier to use abstractions on top of older systems is more or less how computers and software have improved in their short history so far.  Third generation languages are built on top of assembly languages and those are built on top of machine code.  The machine code runs on computers that are made of enough components that are changing frequently enough that many developers don't know how to put a computer together.  Even people that build their own computers would be hard pressed to fully understand the inner workings of each of those components let alone be able to manufacture or even just modify one of them.  Or take a look at the web and how popular JavaScript libraries are that abstract away the differences between the various web browsers.

Hiding lower level abstractions makes writing software more accessible to to more people.  When more people are able to use technologies, they are able to solve larger problems for less.  Isn't that the purpose of technology?  Isn't this how progress is made?  I'm sorry that the old skills are not in as much demand, but that is the nature of computers.  I was told many times in school that as a developer, it would be necessary to constantly be learning in order to keep up with the systems I would be building software on.  You either need to take that to heart or relegate yourself to being a master of older and less used technologies as time goes on.

Just because developing is easier for more people though, having knowledge of the lower levels systems is by no means useless.  No abstraction is perfect and when they break, some of the gory details of the lower levels are exposed for all to see.  Having knowledge of those lower levels allows a developer to fix those problems or work around them when they occur.  People that haven't worked with the lower level technologies will need to scour the internet for the information needed to understand what is happening and then develop a solution.  In the end that is simply the difference between an experienced developer and a junior developer.  That is the reason why experienced developers are paid more money.

To the experienced developers that say that this situation "sucks" I say that it is part of your job to enlighten the less knowledgeable.  To those that don't  see the need to learn new technologies I would say that you don't need to as long as you don't mind being pigeonholed into technologies that will be used less and less as time goes on.  Even though abstractions can leak for a while, the holes tend to get filled eventually and you will probably need to learn something new.  

Earlier I stated that for the most part, computers have largely improved by building new technologies on top of old.  When progress is instead made by recreating  those systems from the ground up, developers will have even more skills that they will need to relearn. To me these complaints seem to indicate people that prefer the status quo for fear of having to learn new tools as technology changes.

No comments:

Post a Comment