At my previous job, quite a few people were of the opinion that it was better to avoid traditional web development because it was based on "hack after hack after hack after hack after hack". And for a long time, i felt the same way. Odds are that many of you thought about it like that as well and perhaps some of you still do. That negative opinion that a reasonably large group of developers still have of it is most likely still based on the state of web development circa 2005. In case you're wondering what i mean with 'traditional web development', i'm talking about the combination of typical client-side technologies (HTML, CSS and JavaScript) with some flavor of server-side processing (.NET, Ruby, Java, PHP, whatever).
This negativity was, for a long time at least, very apparent in the .NET world. ASP.NET Web Forms was a prime example of this. While it didn't fully take away the need to know about HTML and CSS, it did largely relieve you from having to use JavaScript. You could still use it if you wanted to, but it wasn't really necessary due to the unnatural (for the Web) event-driven and stateful programming model that Web Forms introduced. The result was a large number of crappy sites which were plagued with too many postbacks and slow loading times due to excessive ViewState data being downloaded and uploaded over and over again because of too many developers not really having a clue of what they were doing (myself included).
Outside of the .NET world, interest in Flash kept getting bigger because it enabled people to build flashy (pardon the lame pun) websites without having to learn the tricky bits of traditional web development. And since Flash ran on pretty much every browser there was, there wasn't really a problem. Fast-forward a few years and we've got a bunch of developers who are using Silverlight for the same reason: there is no need to learn traditional web development, you can make it look flashy and you can stick to your ever familiar event-driven and stateful programming model.
However, we are now in the year 2011. Does it really still make sense to avoid the HTML/CSS/JavaScript combination? I don't think it does. It doesn't make sense for developers to ignore it any longer, nor does it make sense for companies to avoid building their products with those technologies either. I think it's safe to say by now that HTML/CSS/JavaScript are here to stay. They're certainly not going anywhere soon and will probably only become increasingly important over the next couple of years.
As a developer, would you rather invest in learning something that is highly likely to still be around 5 years from now (probably a lot more than that even) in a relevant manner, or would you rather invest in something that is already being pushed into niche markets? The latter choice involves some very real downsides that certainly don't seem very appealing, at least if you're willing to think a few years ahead. The former choice however has quite a few benefits: you'll be working with technology that is highly unlikely to be replaced any time soon, while at the same time keeps evolving constantly. And don't forget that your skills in HTML/CSS/JavaScript are entirely transferable to other server-side technologies such as Ruby, Java, PHP, whatever. In a weird way, it's a safe yet challenging choice. And as we all (hopefully) realize, it's good to be challenged and to get out of your comfort zone.
And as i said, it makes a lot of sense for companies to go with HTML/CSS/JavaScript as their client-side technology as well. First of all, you'd be picking a technology combination that is used by a few billion people every day and that has more than one multi-billion dollar stakeholder behind it. That alone pretty much makes it one of the safest bets in the history of technology. And i think it's safe to say that whoever your intended userbase is, they'll be able to use your websites and your web applications as long as you don't go with some kind of exotic UI experience that nobody but the 'visionary' behind it actually understands (or wants). Let's also keep in mind that the HTML/CSS/JavaScript choice implies that your site or application will work on every online device that's available now, as well as those that are on the way in the next couple of years. It's highly unlikely that Apple will ever allow Flash or Silverlight to run on iOS devices and like it or not, that decision influences the priorities of other device manufacturers as well. So why not be on the safe side and just go with the technology that runs on all of them? And by all means, make your sites and applications as sexy and compelling to use as possible. Thinking that it can't be done with HTML/CSS/JavaScript is sheer ignorance at its best.
Now, i have no doubts that a few of the people reading this will still doubt the validity of HTML/CSS/JavaScript as a technology choice due the browser compatibility issues. There's only two things i can say about that. First, due to the ever increasing popularity of non-IE browsers and the resulting fragmentation of userbases, it's quite reasonable to believe that browser-compatibility issues will gradually be reduced to a minimum. Second, i would much rather have the ability to work around a browser-compatibility issue than to run into the situation where my product doesn't even run on a certain device or platform.
I don't know what you will do, but i know what i'm going to do. I'm going to learn how to work with the web instead of against it. I'm finally going learn HTML. I'm going to learn CSS. I'm going to learn JavaScript. I'm going to learn about REST. And i'm going to be using that knowledge years from now as i follow the further evolution of the web.
Pingback: Tweets that mention Learn To Work With The Web, Instead Of Against It | The Inquisitive Coder – Davy Brion's Blog -- Topsy.com
Pingback: Current Reading List | The Inquisitive Coder – Davy Brion's Blog
Pingback: 5 Reasons Why Silverlight Is My Preferred Web Development Platform