Front-end vs. back-end developers

by Mads Kristensen 4. June 2008 02:46

Jakob asked me a question this evening: What is the difference between front-end and back-end developers? Not long after I was on my way home and couldn’t stop thinking about it. I’ve never thought much about it before, yet I am convinced there is a difference. Also, I have a feeling that there must be a different answer for each developer in the world.

Let’s start by looking at some stereotypical differences.

Front-end devs don’t unit test

…whereas back-end devs take pride in their unit tests and test environment. In my experience this is definitely true. Front-end code is very difficult to test and those tests are even worse to maintain. It’s a fulltime job. However, you have always been able to separate most logic from code-behind files and other classes into libraries that are testable. Maybe front-end devs just don’t care as much about testability or are they more realistic in how they spend their time?

Back-end devs are more low-level

Threading and memory pointers are not interesting for most front-end developer. Back-end devs on the other hand knows all about it and how to utilize it to create scalable solutions. Front-end devs don’t like operating on such a low level of abstraction and feels the platform should take care of it, so they don’t have to. Otherwise you’ll never get anything done. Some are extraordinary productive on a low level and some are equally productive but higher on the stack. Does this separate front-end from back-end devs?

Front-end devs make more mistakes

Back-end devs don’t just jump into development, but thoroughly sketch out every detail to avoid unforeseen scenarios. Front-end devs do just the opposite – they need to create and they need their endorphins fast. I’ve heard this many times before and I don’t agree. There are just as many ugly pitfalls by rushing development in the front-end as in the back-end and front-end devs knows this. Still, they need their fast track to the endorphins, but does it collide with the quality?

Back-end devs hates the client-side

If there is one thing back-end devs hate more than Cirque du Soleil, it’s JavaScript, stylesheets and HTML. Valid XHTML only makes sense to back-end devs if they have to parse it as XML. Front-end devs spend hours on end to perfect every pixel and even longer to validate their stylesheet and XHTML even though the average user wouldn’t notice. Say cross-browser to a back-end dev and he shakes his head at the stupidity thinking that you could just have made a table design and there wouldn’t be any problems. Is this a way of thinking about quality?

A likely answer

When I was hired by ZYB, my boss Ole Kristensen asked me if I considered myself as a front-end or a back-end developer. I answered that I thought of myself as a back-end dev but my heart was in the front-end. Maybe the answer has nothing to do with technicalities but is as simple as what you love the most.

* Only $4.95/month ASP.NET & Windows 2008 + IIS 7 Hosting! FREE SQL Included

Tags:

Random thoughts

Comments

6/4/2008 7:06:41 AM #

Paul

Front end devs think that a design pattern is something to do with wallpaper ;)

Paul United Kingdom |

6/4/2008 2:14:05 PM #

Christian

I think that's a fair assessment Paul Smile

Anyway, I like your final paragraph Mads, as I think it shows that most of us in some form or another is a bit of both. I too see my self as a back-end developer. I like things tight, neat and done the RIGHT way, and will spend a lot of time trying accomplish that. However, sometimes I like to toy with the users experience of an application, but more of the times I find my self very frustrated with front-end problems. There's nothing like a very well defined and designed back-end.

Christian Denmark |

6/4/2008 6:16:41 PM #

Radek Matěj

I'm sorry, but I have to disagree with the third difference. I don't know many front-end developers by I considered myself to be one. I do hard brainstorming every time before coding, I put myself many questions about user-friendly interface and it's impacts to all application layers. And I know many back-end developers, who split out some code even before they start thinking. =)

Radek Matěj Czech Republic |

6/4/2008 9:01:51 PM #

Dityo Nurasto

I thought that, I will through with it forever. Which path to choose like RPG does. By the way, in FF browser your blog showing increasing errors is says "ShowCommentPreview is not defined". Smile.

Dityo Nurasto Indonesia |

6/4/2008 9:01:57 PM #

Rob Hofker

I consider myself to be a front end developer most of the time, but there are times when I am more of a back end developer. Usually I am both.
In my humble opinion it is really hard to define where the line is drawn between the front end and the back end. The same goes for developers of these ends. I tend to believe that there is no real divide.

But what strikes me as odd, that there would be a difference in approach or structure in the way these developers work. The things mentioned are more about good and bad practices.

I believe things like patterns and I am convinced that they apply to both the back end and the front end. I see MVC clearly in HTML, CSS and Javascript.

In order to prduce something good, both the back end and the front developers must know a bit about each other's work and also be devoted to their own territory.

You can't have one without the other.

Rob Hofker |

6/4/2008 10:04:13 PM #

Janko

Very good article for discussion. I think these statements are too general. As a (front-end) developer and a team leader I permanently work with both, front&back end developers and I must say there are a lot of exceptions. But, in general, I could agree with the most of these statements.

There is one more thing I noticed, back-end devs think their job is more important. Dunno why, but they constanlty repeat it Smile

Janko Serbia |

6/4/2008 11:05:32 PM #

Jakob Andersen

The reason i asked Mads the question was that I have a hard time defining it myself and Mads is constantly yapping about frontend vs. backend Smile

The definition i have heard most often is that of frontend being developers working with "user-facing technology" that is technology that is used to make up the whole user expirience like styling, reacting to user input and so forth. But that doesn't seem to be the case when Mads is talking about it.

I think the most important point when talking frontend vs. backend (whatever definition you have of it) is that you have some knowledge of what goes on in the other camp, not saying that you have to be a guru in both crafts, but you need to know the basic concepts of how things work on both sides, or else you will end up in a world of trouble regarding specifically performance and i assume a few other things aswell.

I wonder how many works in companies where there a titles as "Frontend dev" and "Backend dev". My guess would be that its quite few and in most cases its more a natural division of the workload amongs a team rather than a thing thats on the businesscard. That is, it can change from project to project if someone is suddenly fed-up with writing SQL queries and wan't to work with some UI.

Jakob Andersen Denmark |

6/6/2008 12:24:53 AM #

pingback

Pingback from skitoy.com

Front-end vs. back-end developers (my take)

skitoy.com |

6/6/2008 4:13:30 AM #

cowardlydragon

This is a horrible post. Clearly you do only backend coding, and have no real perspective on this subject. Let me explain a little difference to you from someone who has done both: Swing + Webapps, plus services/db/etc coding.

UIs have virtually limitless execution paths and dependencies and complications. Menus, hotkeys, modal dialogs, background threads, background-updating threads, caching, wireless coverage/network connectivity, desktop configurations, external applications. Testing is far more difficult, since you have to simulate the users use of the interface, often with expensive third party tools.

Backends are usually close to procedural: inputs/outputs. They get to behave atomically, and can generally ignore other code if transactionalization and similar techniques are well managed. Testing is really just calling a method with known inputs and test data, and checking the output matches expected.

Doing pure backend server code is soooooo easy. I always recall how the GUI programmers get SCREWED with development timelines since their modules are fundamentally disastrously complicated, while the server people get to inflate their numbers (which allows lots of testing and less rushing).

cowardlydragon United States |

6/6/2008 5:12:45 AM #

rmf

I agree with cowardlydragon - this post is crap. "Front end users make more mistakes"? Obviously you don't work with very good Front End developers. "Front-end devs don’t unit test"? Sure, crappy ones don't, just like crappy back end developers don't unit test either. This exact sentiment is what makes my job (yes, as a "Front End Developer") so frustrating. Too many "Back End" developers are convinced their work is harder and that the "Front End" is trivial. I've been on many projects and seen tons of horrid "Front End" code. Guess who wrote most of it? "Back End" Developers who don't know a thing about the technologies or techniques.

rmf United States |

6/6/2008 8:18:34 AM #

Jakob Andersen

@cowardlydragon, @rmf

Whats your definition of a frontend developer and a backenddeveloper. Its hard to critize people the way you do if you don't define who they are first.

Jakob Andersen Denmark |

6/6/2008 11:19:36 AM #

rmf

My definition? Mads certainly gives no definitions in his post. He instead lists a bunch of lame stereotypes and anecdotes. There's no substance here at all.

Anyway, I'm not criticizing Mads, I'm criticizing his overly simplistic, erroneous and inflammatory categorization of what "front end" and "back end" developers are. You can discuss the difference of the 2 all you want but the bottom line is this: both categorizations are broad enough to include a wide variety of challenging problems. Making blanket statements like "front end developers don't unit test" and inferring that front end developers don't design before diving into a project and thus "make more mistakes" are both ridiculous. The "front end", UI, presentation layer, whatever you want to call it requires the same discipline, engineering skill and intelligence that working on the "back end" does.

"Front End" developers don't care about threading? Has Mads ever done any real UI programming? I can only assume this "article" was intended to draw ire. So here's my ire: this post sucks.

rmf United States |

6/6/2008 3:20:38 PM #

Mads Kristensen

@rmf, @cowardlydragon

Apparently, I wasn't very clear in this post. By reading the comments I must assume that to be the case. I'm baffled that no one seemed to notice that all of the 4 stereotypical differences was commented on but formulated as an question. The whole point - stated at the top of the post - was that there is probably a definition for each developer in the world and that I ended up saying that a likely difference could be a matter of simple preferences. How can this have escaped you? Did it also escape you that I finish off stating I'm a front-end dev?

Mads Kristensen Denmark |

6/6/2008 9:34:16 PM #

rmf

I re-read this post twice, and while I still find it irritating, I think the greater problem is that it's simply poorly written. You attempt to lay out stereotypes and comment on them, but it's written in such a way that a reader can't tell where your description of the stereotype stops and your opinion starts. Take this passage:


Front-end devs make more mistakes
Back-end devs don’t just jump into development, but thoroughly sketch out every detail to avoid unforeseen scenarios. Front-end devs do just the opposite – they need to create and they need their endorphins fast. I’ve heard this many times before and I don’t agree. There are just as many ugly pitfalls by rushing development in the front-end as in the back-end and front-end devs knows this. Still, they need their fast track to the endorphins, but does it collide with the quality?


I have to get all the way to "I’ve heard this many times before and I don’t agree" to realize that the previous 2 sentences aren't meant to be your opinion (I think), but are elaboration on the stereotype mentioned in the heading. In other sections it's much more vague - go read "Back-end devs hates the client-side" again. Where is your opinion? The last sentence? The whole section? It certainly reads like you believe front end devs "spend hours on end to perfect every pixel", which I see as a laughable characterization of front end developers.

One other comment - your mention of XHTML, CSS, JavaScript, table layouts, etc. clearly shows that you view "Front End" development as limited to building web pages. It isn't. Swing/SWT, Cocoa/Carbon, Flash/Silverlight, GTK, OpenGL, etc., are all front end technologies. All of which require serious engineering skill to build correctly, not simply Photoshop and "endorphins".

rmf United States |

6/8/2008 12:02:56 AM #

Leigh

There is me thinking "front end developers" were called designers... Laughing

*dons fire-proof coat*

Leigh United Kingdom |

6/11/2008 4:26:47 AM #

Brian

Good job, Mads. You've started a war.

Brian United States |

6/11/2008 5:13:02 AM #

Joe Levi

Wow... okay, let's all calm down. Mads, good attempt, but no. Brian, you're exactly right. Leigh, glad you put on that fire-proof coat, but no...

So here's my two bits, from a front-end developer who has been a back-end developer.

First, if you're lucky enough to work in an environment where you have both a front- as well as a back-end developer, you're pretty lucky; most don't. You're a developer and you're jack-of-all-trades, like it or not.

Next, Designers aren't Front-End Developers, nor is the opposite true.

Front-End developers typically take a design from a Designer and turn it into a website. They do this by chopping PSDs, writing loads of CSS, masterpages, skins, themes, etc.

Back-End developers usually are more analyticaly minded. Yes, that means their code will require more unit testing than their front-end counter parts. Front-enders, however, will have to do browser/platform testing, usability studies, etc. that back-enders don't have to be concerned about.

Back-enders typically deal in the data- and business-logic layers, front-enders typically deal in the presentation- and behavior- layers.

Mistakes are made by both. A back-ender should make less mistakes in backend code than a frontender, but a front-ender should make less mistakes with css and markup than a backender.

You said "Back-end devs hates the client-side" and why shouldn't they? Their job should really be about handling logic and data and putting that on the page. Front-enders take that plain, non-formatted, non-styled, server-rendered markup into pretty, "makes the designer happy" web pages.

Some people are thinking "isn't that what designers do"? In a word, no. Most designers design and can't write a lick of CSS or xHTML. Not all, just most. Some designers can do design and front-end, just like some developers can design.

More and more the web is moving to clean separation of style from content, more to well-structured html pages, more to clean and efficient front-end code. More to specialization of developers.

I'm glad I don't have to write data access layers and business-logic because my buddy www.mikedopp.com does that for me... and I'm sure he's glad he doesn't have to write CSS and make sure masterpages are all SEO/SEP/SEM friendly. He handles the data and logic, and I take care of the presentation and optimization... Ah... Nirvana.

But that's just my two bits.

- www.JoeLevi.com

Joe Levi United States |

6/11/2008 9:04:43 PM #

trackback

Trackback from DotNetKicks.com

Front-end vs. back-end developers

DotNetKicks.com |

6/12/2008 2:39:22 PM #

Raza Ali

I liked the line mads wrote "I answered that I thought of myself as a back-end dev but my heart was in the front-end", probably because I can share this feeling. In my experience as a developer, I don't get enough chance to do pure back-end or front-end work. One thing is clear that there are so many technologies and techniques out there that both of them are a world in themselves and require "non-trivial" expertise.

I don't agree that front-end work needs less engineering but whatever front-end work, both desktop and web, I have done tells me that it requires a LOT more tweaking than back-end. Planning a user experience is definitely the engineering part but solving silly javascript or layout issues is not. Front-end also offers a lot more direct feedback than back-end, which definitely affects the developers approach.

Back-end work does give you more architectural freedom and you can play with layers and services and message queues but it simply isn't fun enough. Watching your application run in the debugger is not as good as having a actual user experience. I simply can't put down front-end work as the difference between a bad UI and good one is 1:10, pretty much same goes for good back-end work. Neither jobs demand less if we are doing them well.

Raza Ali |

6/20/2008 11:48:33 PM #

Mike Borozdin

If you mean web front-end developers that you are right. However if we talk about the front-end developers who develop desktop applications, then you are wrong that they don't love the low-level things, sometimes they have to use the low-level APIs very extensively especially if they use WinAPI or make non-standard UI.

Mike Borozdin Russia |

6/25/2008 3:55:34 PM #

rrr

dfdfd

rrr United States |

6/28/2008 8:26:27 AM #

Devin McManus

I consider myself a back-end developer.  I find that front-end developers spend a great deal more time idiot-proofing systems, checking browser compatibility, etc.  I spend more time checking for NULL pointers.  Let's face it, I can predict when most NULL pointer exceptions are going to be raised.  However, the computer habits of the average idiot is an area of study I haven't devoted much time to.

Devin McManus Canada |

11/18/2008 9:39:50 AM #

patrick

i thought it is so hard in front end and back                                    
end but is so easy to understand

patrick |

Comments are closed

About the slave

Mads Kristensen Mads Kristensen
Web developer at ZYB and founder of BlogEngine.NET. More...

LinkedIn ZYB Facebook Last.fm Twitter View Mads Kristensen's profile on Technorati

The Lounge

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2008