On a project at work, we’re starting into web development from being entirely desktop applications. It’s a new thing to learn because of that. We’re working with a contractor, who is creating the majority of the website for us. He has suggested, and we have implemented, a REST-based service for sending data to and from the server. Fortunately, making a REST-based web service in Java is very easy using Genson and JAX-RS.
However, this post is not about that. It is about web technologies in general. Originally, I spent a fair amount of time researching different web technologies that use Java as the backend, and I came up with a few such as JSP, JSF, as well as some frameworks, such as PrimeFaces. We’re not using JSF technology at the moment, but that’s not really the point either.
There are a lot of different web technologies out there, and each has its own pros and cons. My real question here is why do we treat web design as separate from programming the website? While researching the advantages/disadvantages of a REST-only website, I came across this good post on programmers.SE about the pros and cons, which then led me to this interesting post about using tag libraries in web pages. Essentially, what this boils down to is:
The benefit here is that web designers are supposed to be able to work with these tags, or at least that’s what they say. In practice, in all my years of software development and programming, I have yet to ever see this magical unicorn walk out of the shadows and into the sunlight.
My question here though is: why are we treating web development in a different light than we are treating desktop application development?
When developing a desktop application, generally the programmers are the people who create the design. Even if somebody creates the design in a GUI designer, the programmer has to be involved in how to tie all the events together – they don’t exist in separate paradigms, which is what web technologies seem to do.
In fact, I make all of my Java GUIs by hand. I have never made a QT gui by hand, but from the generated code that I have looked at it follows a very similar programming model(composite design pattern). What exactly is preventing a web designer from doing code, and what is preventing a programmer from making a website?
It seems to me that this is not something where the programmer and the web designer are two different people. What seems to be better would be to have people that can straddle both areas. After all, we are generally not pigeon-holed into just one area. If you work mostly on backend code, it is not unreasonable to also touch the GUI code at some point, so you must know how the GUIs are set-up. But for web development, this seems to be just the opposite.
Perhaps what we need is a swing-like web framework that you don’t need to make any HTML files for, just create the entire website through code. This sounds complicated, and I don’t know if it would solve the problem.