, , ,

I’ve had the feeling that client-side software development is a mess for some time now, but since I’m mostly a server-side guy, I’d dismissed my feelings as being due to unfamiliarity with the tools and practices. But I guess it’s not just me after all.

This article

led me to this article


These articles trace through the various options available for client side/user interface programming in these days (mobile and Javascript/HTML) and points out that they’re all pretty awful for software development.

Why is this? We all know how crucial the user experience is. So why is it that in 2014, after all these years of software engineering theory and practice, that it’s such an incredible pain in the neck to build user interface components.

I don’t really have an answer. I thought that Java applets were a pretty good answer; they could be run without cient-side installation and provided a pretty rich set of controls. But they’ve fallen out of favor, and the ground is littered with the corpses of alternatives that attempted to provide the same functionality; Silverlight, Flash, JavaFX, etc.

I think that this type of architecture (most of the business logic on the server, with a lightweight but rich client communicating back to the server) is the right answer, but the implementations seem incapable of garnering market share.

Javascript libraries like JQuery provide similar functionality, but they are all somewhat hackish, and I wonder how forward-compatible they will be over time. Perhaps the Java/HTML approach will converge on a standard approach, but IMHO things are still pretty chaotic. You can build simple demo apps with the Javascript approach, but the thought of having to build a large enterprise software system with it fills me with dread. There’s just too much code devoted to things that have nothing to do with the user’s functional requirements.

As an enterprise software developer, I don’t need clever hacks. I need a nice, boring environment that lets me pull stuff out of a database, shove it onto a screen, let the user fiddle with it, and put it back into the database, with as little coding required as possible. Given that we’re 20 years into the web software development paradigm, shouldn’t we be there by now?