The Changing Face of Front-end Programming

T

Front-end programming is one of those unfortunately over-looked and underrated disciplines that really deserves more in life. I’m not saying this just because it’s something we focus on, but because it’s really hard to find qualified candidates and I think a different attitude towards it would change things.

First, what is front-end programming?
———

Front-end programming (or developing) is traditionally programming focused on the user interface of software – what people see and interact with (the front-end). On the web, it’s synonymous with client-side programming: *code that’s executed by the user’s browser*, versus the server.

There’s room for confusion because traditional front-end programming can be done in C, C++, Java, and other languages, while typically web-oriented front-end programming uses XHTML, CSS and Javascript. Adding to the confusion is Flash and client-side Java. In the web industry, Flash is often thought of as “front-end,” while Java isn’t, even though they follow the same model (that is, they are both using code executed by neither the browser or the server, but by another client-side application).

Because consistency is important to me, we don’t include Flash/ActionScript programming or client-side Java programming in with our definition of “Front-end Programming.” Really, they are significantly different skills – especially Java.

So, again, our definition of front-end programming is code that is executed by the browser. This includes HTML, XHTML and XML, CSS, Javascript and their interaction. Whether XSLT is included in this is up for grabs. In general, I wouldn’t expect someone to know it. This list does infer an understandint of DHTML and AJAX, however, as both of those are just uses of Javascript, XML and XHTML.

The changing challenge of front-end programming.
———–

Four years ago, front-end programming was pretty straight forward. It was relatively easy, and focused on *display* of information in browsers. In the last several years, two major changes have occurred. First, browsers are converging on standards. There are still major differences between different browsers and rendering engines, but they are MUCH better than they were. Second, new methods of exploiting Javascript have gained widespread use – I’m talking, of course, of the XMLHTTPRequest object, which is part of JavaScript and allows us to access client-side XML files (XML files that are downloaded along with a web page) from a browser. The method of using the XMLHTTPRequest object to access XML files is known as AJAX, a [term coined by Jesse James Garrett over at Adaptive Path](http://adaptivepath.com/publications/essays/archives/000385.php).

The main result of the rise of AJAX is the blurring of the lines dividing front-end development and back-end development, or more distinctly, the blurring of their differences. The fundamental difference between the two (perhaps I need revise the definition given above) has been that *front-end development does not allow for data modification*, and thus is limited. AJAX changes that. Of course, the data is still stored locally and needs back-end programming to change it on the server, but an important line has been crossed. (I suppose that JavaScript also allowed data modification with regards to cookies, but that’s pretty narrow in its scope.)

Anyway, the upshot of this is that front-end programming is becoming more application-like in its design and development processes, with the added fun of different operating environments (browsers).

Changing requirements for front-end developers.
———

It used to be that it was pretty easy to be a front-end developer. Buy “Learn HTML in 21 Days,” and you were good to go. I never bought into this, but it still influenced a web-generation (as opposed to a true generation) of designers and programmers. As a result, when we’re looking for people to be front-end developers we almost always get one of two types:

* *The web developer that secretly wants to be a designer.* They don’t have the design chops to make the transition in any big way, but really doesn’t like to program, so they never get really good at it.
* *The back-end engineer that knows how to code for the front-end.* This person’s focus is on the back-end, so they generally regard front-end programming as something simple they can do in their sleep. Ah, how wrong they are, particularly because back-end programming doesn’t need to take into account massive differences in execution environments (browsers).

Obviously, a good front-end programmer needs to know about design and about server-side programming, but that shouldn’t be the focus. And designers need to know about programming, and server-side engineers need to know about front-end programming.

But the point is that front-end programming is really coming into its own.

About the author

By Josho

Josho

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.