Learn To Work With The Web, Instead Of Against It

25 commentsWritten on January 9th, 2011 by
Categories: Opinions

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.

  • http://jclaes.blogspot.com Jef Claes

    Wish I had written this post. I couldn’t agree more.

    PS: Very lame pun indeed ;)

  • http://davybrion.com Davy Brion

    @Jef

    it’s sunday… i couldn’t come up with something more creative :p

  • http://twitter.com/seagile @seagile

    Some of observations I had while reading this …
    - Choose the right technology for the right job is my motto. I have experience in both (web/non-web) and I know that it can end with a mess regardless of technology. Make sure you are skilled enough beforehand. Some things, such as client technology, do not really lend themselves to on-the-job training (unless your boss is willing to provide the time/space needed to refactor as you gain knowledge).
    - Browser compatibility can bite you. Use actively developed libraries that insulate yourself from such things. This situation is much better anno 2011.
    - I agree with you that css/html/js is more portable, in every sense of the word. But the weak-typing/loose coupling/convention based-ness can turn into a maintenance nightmare. A disciplined, communicative team can tackle this.
    - The days of the developer who knows “everything” (from front-end to back-end) are over. Specialize. Especially, in todays world of agile teams.
    - Learning tech is useful, regardless. Recently, I have gone back to learning math and consequently operations research. It’s amazing how many ideas can be applied on an every day basis.
    - With all these agile and craftsmen initiatives over the course of the last 10 years, it’s amazing how our profession has evolved from a rather technical focus into being focused on a combination of the technical, the social, the functional, the operational, …

  • http://budts.be/weblog Teranex

    Davy, as you certainly know, I couldn’t agree more! Yesterday I came across another example of this whole story. I wanted to quickly check something on my telenet digicorder and instantly grabbed by Nokia N900 (yes i’m too lazy to search the remote control of that digicorder thing). I fired up Opera Mobile, launched yelo.be and i could just program my digicorder from my N900 without any problem! Why? Because yelo.be is written in html/javascript/css. Now try to view the current movies at Kinepolis using your cell phone webbrowser… stupid flash crap.

    If you are really serious about learning html etc, I would strongly suggest and immediately start using HTML5. I’m currently reading “HTML5 Up and Running” by Mark Pilgrim (http://oreilly.com/catalog/9780596806033, and online here http://diveintohtml5.org/). The book is very well written and also shows you how can you use html5 today, without any problems. It shows how to support older browsers etc.
    Yes, HTML5 is not ready yet, however, thanks to the nature of how browsers parse tag-soup (=99% of the current web), you can use the new tags and attributes without any problem. Older browsers will simply ignore them, or see those elements as ‘divs’ etc. A very good example of how this works is forms: http://diveintohtml5.org/forms.html

  • http://elegantcode.com Jan Van Ryswyck

    I’m happy that you finally decided to join the club. Welcome! :-)

  • Fizz

    Go back a couple of months and look at hype on the “Death” of silverlight
    It can be summed up as follows
    - If you want public facing sites for every one use HTML5/CSS/Javascript
    - If you want rich content, business logic etc use a plugin based tech such as silverlight or flash

  • Pingback: Tweets that mention Learn To Work With The Web, Instead Of Against It | The Inquisitive Coder – Davy Brion's Blog -- Topsy.com

  • http://davybrion.com Davy Brion

    @Fizz

    “If you want rich content, business logic etc use a plugin based tech such as silverlight or flash”

    rich content can be done with HTML/CSS/JavaScript as well… as for business logic, i really don’t see why ‘business logic’ would require a client-side plugin like Silverlight or Flash

  • zihotki

    @Fizz, rich content can be easily done with HTML/CSS/JavaScript. For example have a look at ExtJS (Sencha) http://www.sencha.com

  • Paul Speranza

    Davy,

    About two years ago I found JQuery. Then MVC, putting those two together opened a whole new view of HTML/CSS and Javascript for me. It also opened my eyes to how crappy the webforms concept is, to the point that while I still had to work with webforms for a bit I was using it like it was MVC. I basically scaled webforms down to bare bones and was creating webmethods on my webforms like they were action methods.

    I hope I never have to go the webforms route again. I will not learn Flash or Silverlight unless I have no other choice. This experience has sharpened my understanding of how the web works, which was hidden away by the crappy webform controls, which themselves were hiding functionality of the HTML elements that I never knew existed.

    Another thing that helps out of necessity is that all of the browsers have decent dev tools built right into them, and what they are lacking are available as plugins or extensions.

    Its a new, old world. But this time we are better armed.

    Paul

  • Mark

    If you are talking about websites, then this makes sense. If are really talking about Web Apps, then this makes much less sense and it really depends.

    Just because a lot of people are doing it does not make it right. If I am creating a LOB application spending a lot of time on JavaScript, HTML and CSS does not make a lot of sense. If one must use these (maybe it is the “right” thing to do), then use a framework like GWT or WebGUI. Sadly, there is a large impedance mismatch when not using the same technology on the [visual] client as on the server.

    “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.” No they are not. Plenty of people can do HTML/CSS/JavaScript but are completely useless when it comes to the “server-side”.

    As with all programming there are trade offs to all decisions. Speaking in generalities does not work. For me, because i build applications, spending a lot of time learning CSS the rest does not make a lot of sense. For what i do, the web only makes sense as a delivery mechanism.

    Reply to “Seagile”: “The days of the developer who knows “everything” (from front-end to back-end) are over.” No one could every know “everything”. But can a person know front-end to back-end still? Sure. I do. Do i know everything about everything i work on? No. But those people are the exception. Most people are and have always been like you describe. I don’t now how it is mathematically possible, but most people who are “programmers” are less than average.

  • Alex Simkin

    @Davy

    “Thinking that it can’t be done with HTML/CSS/JavaScript is sheer ignorance at its best.”

    Thinking that you can do sexy web-site without PhotoShop (or whatever you favorite graphical package is) is sheer ignorance. Maybe HTML5 canvas will fix this but for now it is true.

    • http://davybrion.com Davy Brion

      @Alex

      Where did i say that you don’t need graphical tools? Which i’d argue you probably resort to with flash/silverlight as well if you want to make something really impressive

  • Alex Simkin

    @Davy

    You didn’t say that you don’t need graphical tool, but you didn’t say that you need them. So classical web stack looks actually like HTML/CSS/JS/PS, but I can stay inside XAML with vector graphics only. Somehow I can do a couple of nice buttons in XAML but cannot do them in PhotoShop – that’s why I try to stay from web front-end of application as far as I am allowed to.

    And about hack after hack… look at this newest tutorial on CSS3 shadow, but keep in mind that it doesn’t work in any version of IE (no surprizes here) but it also dosn’t work in Chrome.

  • http://davybrion.com Davy Brion

    @Alex

    “but I can stay inside XAML with vector graphics only”

    do you use Blend for that, or just Visual Studio? In case of Blend, i’d say that counts as a Graphical Tool

    as for the hack after hack… let’s not pretend that Silverlight/XAML doesn’t require you to come up with workarounds ;)

  • Alex Simkin

    @Davy

    “let’s not pretend that Silverlight/XAML doesn’t require you to come up with workarounds”

    Once problem solved I don’t need to re-verify with every known browser.

  • http://davybrion.com Davy Brion

    @Alex

    “Once problem solved I don’t need to re-verify with every known browser.”

    true, you only need to do that with each and every update to the Silverlight runtime, including the intermediary releases :)

  • Purple Reign

    @Mark

    “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.” No they are not. Plenty of people can do HTML/CSS/JavaScript but are completely useless when it comes to the “server-side”.

    I think you missed the point Davy was making. Those skills ARE ABSOLUTELY transferable to any other server side technology you may use – assuming you are using one now. I don’t think he was implying you can master HTML/JS/CSS and then transfer those skills to Ruby or Java. The point is, if your primary medium is the web, learn the standard the web based tools. You will take those with you everywhere. For me, those skills have worked across Coldfusion, ASP, PHP, Ruby, ASP.NET, and so on for over the last 12 years.

    It constantly amazes me how may developers I encounter who work with web apps yet have no idea how to properly generate basic HTML.

  • http://www.pechovic.eu Petr Pechovic

    It’s nice to see someone having the same opinion :)

  • Paul Speranza

    Another benefit of going the HTML/CSS/Javascript route is that we now have a bigger pool of people, across multiple backend platforms, all working toward a common goal, feeling the same pain, solving the same problems and sharing the solutions.

    Up until the server call we are all in the same boat. HTML 5 will take us to the next level and the devices will become less of an issue as new tools, like JQuery Mobile for instance, make that even easier.

    This is a glorious time for us technologists. Let’s all have fun with it.

  • Silverlight Bob

    Shh, don’t tell work. They’re still trying to figure out why they can’t find any smart talented Silverlight developers.

  • Pingback: Current Reading List | The Inquisitive Coder – Davy Brion's Blog

  • Pingback: 5 Reasons Why Silverlight Is My Preferred Web Development Platform

  • André Werlang

    Hey Davy

    For desktop programmers going web, do you recommend any high-level framework to develop with ASP.NET? Or better use what comes out-the-box from .NET? Do you imagine an ERP justwith standard web technologies, that is productive both from development and end-user perspective?

    I found it easy to develop with Silverlight, but we’re considering ASP.NET at the moment.

    Thanks

    • http://davybrion.com Davy Brion

      i’d recommend that you learn ASP.NET MVC, and how HTML, CSS and JavaScript work. Don’t rely on abstractions that won’t cut it anyway.

      As for productivity, after learning more about proper HTML, CSS and jQuery i find the HTML/CSS/jQuery combination to be more clean _and_ more productive than XAML and C#. End-users are used to web apps already anyway, so that’s not really an issue i think.