A great Web developer is a waste of a really great application developer.

Michi Kono recently wrote about how the most talented Web developers are usually also the most talented application developers. I propose that we take it a step further: a great Web developer is usually a superb application developer. Or in a different light, a great Web developer is a waste of a really great application developer.

Fairly early on in the article, Michi makes this statement: Nothing is inherently easier about developing an application in PHP than in C++. That is quite true, but I don’t think it goes far enough. What we usually find is that developing a Web application in PHP is more difficult than developing a comparable desktop application in a language like C++, Java or C#. When using a language like Python for GUI desktop applications, the inefficiency of PHP (and Web development in general) becomes quite apparent.

Large-scale Web development is usually not a pleasant experience. One of the main problems is just coping effectively with the wide variety of technologies that are involved in Web applications. Not only is knowledge of HTML required, but so is knowledge of JavaScript and CSS. And that’s just for the front-end. You still likely need to know PHP, Java, Ruby, or some other language when developing the back-end of the site. As most applications require some sort of database access, you usually have to add SQL into the mix.

Granted, the essentials of those languages and technologies are not overly difficult, and are well-understood by most developers. But it’s still not a very effective way of developing software. Some may argue that we see multiple domain-specific languages in use, and that may be the case. But the end result is that we often have developers who are over-streched when it comes to implementing advanced features. There is only so much knowledge that a typical developer can effectively acquire and manage, especially when deadlines are looming.

Five years ago, many of us were developing enterprise applications using C++ and the MFC, or Java and AWT or Swing. Since we were really only using C++ or Java in many cases, we were able to become quite familiar with all aspects of those languages. We didn’t have to learn two or three separate languages for developing the UIs of our applications, as they were built upon the common constructs of C++ or Java (usually with the help of a GUI designer utility).

Languages like Java and C++ allow for large, complex applications to be developed with relative ease. They have a rich heritage. They were initially developed, and subsequently evolved, by those who had to deal with massive software systems. The Web technologies, on the other hand, grew from the low-end up. And it shows. They lack the coherency of languages like Java, C++, Smalltalk and Python.

CSS, HTML and JavaScript also lack what I’d like to label as “maturity”. This isn’t maturity as in their age, but as in the raw experience and knowledge that went into designing them. It just isn’t there, or at least doesn’t come from the world of large-scale application development.

One area in which Web application development is particularly pathetic is when it comes to debugging. There are a wide variety of excellent debugging and program tracing tools available for languages like C++ and Java. It’s only recently that we’ve been seeing Web development tools like Venkman become somewhat suitable.

So in my past experience, I’ve generally seen excellent application developers suffer from a significant decrease in productivity when dealing with Web development. Many times this has been when it comes to debugging large Web applications. The disjointed nature of the various Web development technologies proves to be a significant hindrance, especially when compared to the more cohesive technologies like C++, Java, Smalltalk and Python. Were those developers instead developing using technologies like those, they’d be far more productive, and the resulting applications would be far more portable, efficient, reliable and enjoyable to use.

You can skip to the end and leave a response. Pinging is currently not allowed.

Leave a Reply

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word