Building the modern web client
Steps Forward.
With ever growing browser support for html5 standards and the advent of the modern JavaScript ecosystem, it now possible to build web applications that can operate as more than just a skin for a server driven application. The modern web client brings its own independent application architecture to the table allowing for enforcement of business logic, input validation, user preferences, and user flows without constantly deferring to a server application that sits on the other side of a Internet connection that may be inconsistent, slow or unstable. A new level of responsive user experience that is much closer in feel to a native application is now possible while retaining the open, cross platform advantages of a web application. This change in paradigm from a server centric model to one where the client has a larger role has transformed the basic nature of the Font - End / UI Developer role and disrupted the division of responsibilities within the development team.
The role of the UI Developer
The UI Developer role sits in an unique position on the development team. In a sense, the UI Developer must be the bridge between two very different worlds and ways of thinking. On the one side are the user focused, “soft” (in a sense of be less definable by nature) concerns of UX: usability, interaction design and visual impact. And on the other, the technological focused, “hard” concerns of the application developer: api efficiency, security, versioning, separation of concerns, and performance. A good UI Developer must at least have an “eye” for design and what looks good, a sense of when a user experience is or is not working on the one hand, and on the other hand also have strong coding skills, an ability to troubleshoot and debug across environments, and manage a build infrastructure. And on top of this the UI Developer often ends up being one of the primary advocates and implementors of accessibility on the team. So it requires a developer who is at least somewhat comfortable in UX/Design application such as Photoshop, Sketch or Illustrator as well as the primary skill set of writing JavaScript, CSS [or Less, Sass, Stylus…] or HTML in an editor or IDE, or logging into a Linux server and modifying an Apache or NGINX configuration file with vi (as an example). A good UI Developer needs to embrace these various aspects with a strong curiosity about how things work, how they can be improved and most importantly must posses a fearlessness to jump in and work with technologies, comprehend standards or tackle problems that they may have never encountered before. They need to be, at a minimum, aware of nearly every aspect of the web page, and whenever possible, understand the technical considerations, specifications and general best practices that underly and define those aspects.
Unfortunately, despite of all these varied skills and requirements, the UI developer is often in a position of justifying the significance of their role and the value that they offer — especially in an enterprise environment. While server side technologies are very mature at this point and their role, infrastructure and processes are more or less well defined and their value is obviously paramount; front end technologies present a value proposition that is less clear. It is understandable, considering the period of rapid growth, development, and radical change that Front End technology has recently been going through, that management or leadership is often unclear of the scope of work, skill sets required, and complexities involved when implementing these technologies and how those challenges relate to the performance and efficiency of the rest of their current stack. There is a temptation perhaps to stick with what has worked and been proven up to this point and not evolve the stack to leverage these new UI technologies. However, the web in general, and more importantly user expectations of how the web should work, are evolving. Users are beginning to expect a more robust, “app” like, experience, and are beginning to loose patience with applications that make them wait those extra milliseconds for the extra round trips to the server for every action. We now have the tools, technologies and the opportunity to deliver that robust and responsive user interface. But to fulfill this potential I believe the UI must be treated with the same seriousness and dedication that is given to server centered applications currently. Operating with the old model — where the server is the center of all concerns and the UI is a minor implementation detail — is going to become less and less feasible as the general shift towards a “thicker” client continues. The client is becoming one of the primary pillars of the next generation of web based applications, no more or less important than any other pillar. It is time to move outside of the comfort zone and let the UI take its place along side those other pillars of the the technology stack.
Getting Serious
To be clear. This is not a concept or lofty futurism, but something that is already well underway. There are many companies and development teams that are already implementing robust client side applications. Additionally, all of the Browser vendors are relentlessly pushing browser technology forward at a pace never before seen, providing the essential foundations for the client of the future. Service workers, web workers, local storage, web sockets, server sent events, flex-box, HTTP version 2, and now even web assembly — to name just a few (see this for a visual representation that is quite fun) — all represent major, paradigm shifting changes to the capabilities and role of the browser. As is often the case with the web, just keeping up and not being totally left behind is the real task. And right now is the age of the client. That is why it is time to get serious about UI development and to give it the attention it needs. UI development needs proper code review, real oversight, security auditing, performance testing and, more than anything, to be part of the discussion when it comes to architectural planning and decisions. Choices made on the UI side of the fence matter and will have far reaching implications for the entire team as well as the enterprise. If we can accept this fact and embrace it I believe the opportunities for advancing the web experience are tremendous.