We need more than better tools

This is a post about something that I’ve been thinking about a lot lately: What do we need as web professionals in order to become more efficient and, hopefully, happier when coding web sites or web apps?

The first thing you may hear as an answer to this question is “better tools”. While this answer can be backed up with lots of data I don’t think that this is the right answer. I started doing web sites in the late 90′ and back then Homesite from Allaire was one of the best HTML editors and my favorite tool. Soon after heavier tools have emerged. Almost fifteen years later we have pretty much the same tools: light-weight tools (vi, Sublime, and so forth) and complete IDEs (like Eclipse) with some others in between.

So you have to have lots of imagination to invent a new tool that doesn’t fit in the existing categories. If the answer is not a better tool than what is?

Well, let’s step back for a second and look at what the current web development process looks like. And to simplify a bit let’s consider these two types of developers (it is a stretch  but stay with me):

  1. Newbies. People who just started modern web development. Contrary to what you may think these people are not necessary newbies in programming in general – they can be Java enterprise developers for example. What they have in common is that they have to find their way through a “million things” (tools, best practices, frameworks, libraries, browser inconsistencies, different JavaScript versions, different CSS versions, and so forth) all in the name of building a “simple” modern web site.
    It is amazing that the complexity involved in building a web page that runs across devices and browsers can beat the complexity required for building the back end for a website or an iOS app.
  2. Veterans. These people know the best practices, they know the “cool” frameworks, they’ve found “the best tools”. And yet they are not necessarily without worries. Updating the JavaScript libraries and the dependencies is not that trivial for a live product, nor is making sure that each time you change something you properly test it (unit testing, function testing). At the end of the day, they spend too many cycles on things that are not “fun”.

As you can see the challenges one faces when doing web development are not only in the realm that a tool typically covers. I’ve seen at least two examples that showed me that the solution is not that far fetched and there is life after all :).

The first one is, hold your breath :D, PhoneGap Build. Trust me, I am not mentioning this because I work for Adobe. Everyone who does mobile developing using the native tools/frameworks for multiple platforms knows that is not a walk in a park. You need a Mac for iOS development/packaging, a Windows machine for Windows Phone, and different IDEs and so forth. PhoneGap Build handles this complexity and let’s you focus on coding the app using open web technologies. The packaging is done in the cloud.

The second one is even more interesting. This comes from Paul Irish’s presentation at Google I/O 2012. If you haven’t seen it, please do yourself a good deed and do it. Now. Pay attention to project “Yeoman” (this is presented in the second part of the presentation). The main idea behind this is that you should go from idea to prototype in less than 10 minutes. Under the hood it uses a bunch of tools/libraries (Compass, RequireJS, Jasminte, PhantomJS, etc) and tries to minimize the friction that you typically experience when using them by making the installation in a new site seamless and so on.

In conclusion I don’t think that it is about a better tool. It is about a better process and workflow that may integrate a number of tools, services, and scripts. And this “thing” should take care of as many things as possible automatically. The bright side is that there are signs that this is possible. It is just a matter of time as more and more bright people change their focus from building libraries and frameworks for doing X or Y to building better working environment for general web development.

Leave a Reply