top of page

The Good, The Bad, And The Ugly

 

Today the web world is abuzz with client-side Javascript APIs that can be used for mobile application development. We hear a lot about MVC, MVVM, mobile first, and responsive design as the hottest trends in mobile web development.

 

The explosion in web application development for mobile devices is driving many of the new client-side development strategies. As it happens, many of the web development technologies that we have been developing over the past decades have landed us in a pretty good place for developing applications for mobile. We already meet the basic requirements for development of these applications, namely that they run in the client, have a small footprint, and are asynchronous. Unfortunately, while we can indeed check off these requirements for developing mobile applications, we are still far away from where we would like to be.

 

From the outset, let me say that all that has happened with the web has been fortuitous. From its beginning as a DARPA project, to its use in universities, to today—it has all been a miracle of unintended events. We can all count our blessings to be dipping our cup in this publicly funded font of good fortune.

 

You may or may not know, but HTML and Javascript are at the heart of the web. Add to that the evolving browser APIs and rendering engines and you have the core building blocks for much of the innovation on the web. These basic pieces were developed over three decades ago. They have been much enhanced and improved upon since then, but they have been around for a while. Most of the significant new mobile web technologies that we see today are based on them in one way or another.

 

It is pure serendipity that TCP/IP networking, DNS, and the previously mentioned core technologies were even developed, as they just happen to be—almost—perfect technologies for developing applications for the hottest trend in application development, namely mobile.

 

The Good

HTML5 is a more responsive flavor of HTML and works well in mobile devices. Yes, it is good. It has lightweight visual effects which are great for mobile, support from industry, and support from browser vendors. Also, while the smartphone market is diverging with different supported operating systems and native applications, HTML5 is supported throughout the whole spectrum of mobile vendors, ensuring that your application can run on multiple devices.

 

JQuery is another relatively new and great technology based on Javascript that has gained a lot of traction in the web world. It basically makes it easier to manipulate the DOM than if you were just using Javascript. It is a much needed utility, allowing you to write less code.

 

The Bootstrap Javascript libarary came along to help make responsive mobile applications. Among other things, it uses Javascript to detect your screen and browser real estate to reformat your page for the size device it is running on.

Angular is another popular library. It too is good (trying to keep a theme going here). Like Bootstrap it uses Javascript to do its magic. It goes a step further, however, and implements the MVC pattern which is an attempt to separate out the application logic and data from the view or user interface. MVC is not new, but doing it in the browser is quite new and represents a real innovation in how web applications are created.

 

Prior to Angular and some of the other new Javascript based APIs, writing intelligible, readable, client-side applications was impossible. Don’t get me wrong, you could indeed write code that manipulated the DOM and made asynchronous calls to a web service, but it was not pretty. MVC gives a little structure to these applications.

 

The other thing that makes Angular so cool and great for mobile development is that it does client-side binding of the model to the view, so that events in the view are detected and similarly changes in the model are sent to the view. With Angular much of what used to be done on the server is being done in the browser, making web applications very responsive, which is a requirement for mobile.

 

Backbone is another Javascript based library that does client-side binding to a model. In all, we are seeing the browser become the platform for application delivery. Many of the innovations that we are seeing have to do with technologies that run in the browser, as it has become the focal point for a lot of what is happening in our industry. This is the Good.

 

The Bad

You might ask yourself what can possibly be bad about the web being on fire again. And it is true, the Bad is more of an embarrassment of riches, rather than something that is really bad. The Bad in web development today is what has always been bad about web application development, namely that there are just too many technologies to keep up with. It is the same old problem, it is just on steroids now.

 

The reason that this is a problem of sorts is that for developers it can be difficult to know where you should focus your attention and build up your skills. For industry, it can be difficult to know who to trust and what technologies they should be using. In addition, because there are so many different technologies it can be hard to find people with the right skill sets to fill open positions.

 

Another issue when it comes to web browser applications is testing. It has always been difficult to test browser based applications. I talk about the specifics of why this is so in a previous post. This is not a deal-breaker issue either, however, and the problem is being addressed with new approaches to automated testing for web applications that are more flexible and easier to maintain.

 

And The Ugly

The ugly is that in spite of the many innovative and truly fantastic technologies that have come about, we are still in a mess. If you have ever looked at Angular or Backbone they take some real learning to get your head around. And, unfortunately, Javascript has never been an easy language to debug or work with in an IDE either. Yes we are beginning to be able to create ever more sophisticated applications that can be run on mobile, but do a view source on one of those pages that use these technologies. It looks like someone spit into the web page, as it is all one big ugly mess of code. This is the ugly. What we often wind up with is a nasty code base that is difficult to modify and test and is virtually unreadable in the browser.

 

Conclusion

While I get the significance of and appreciate the new Javascript APIs and what they are trying to do and why they are trying to do it, the current state of development efforts with these APIs and their supporting tools makes me think we still have a ways to go. Contrary to the intention of MVC to make it easier to organize, develop, and test web applications, what I have seen of the new APIs looks more like a mashup of browser code. Yes the applications are cool, but they are not clean and they are not simple.

bottom of page