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

Over on Dzone this article Font-end vs. back-end developers caught my attention.  Alas, I feel compelled to write a longer rant.  First off let’s touch on Mads points, but let me point out a bias first.

Front end devs tend to be less “classically” trained than back end devs, based on the resume flow I see for front end positions vs. back end positions front end developers come from non CS backgrounds, back end developers have CS degrees.

Front-end devs don’t unit test

While I can make an argument that the tools to test front end code vs. back end code are quite different, it’s a “cultural” thing more than an absolute.  There are challenges, which is that to “front end test” code you need to have two computers with 6..7 different browsers attached, since unless you’re using some automated tools (which I’ve yet to find open sourced) there’s still the off chance that you’ve got a trailing “,” in some JavaScript to blow up the world.

Ultimately if you assume a level of “experience” it’s up to the senior people (maybe those people with CS degrees) to help set some standards and find tools to use in a production situation.

Back-end devs are more low-level

I can’t only partly disagree, since fundamentally, back-end can equate to everything from MySQL database table, index and query optimizations to multi-threaded queuing services.  However this a false assumption, yes, those skills are needed but I’ve never met a true backend developer that really enjoyed dealing with the memory management issues in parsing XML from C++.   It’s just tedious…  much the same as matching layout in CSS between IE and FF.

Front-end devs make more mistakes

A joke, right…  What you really should consider is a difference in tools, which relates to point #1 (unit tests).  The biggest challenge is that “classic” backend is C++/Java or other compiled language.  With a compiled language you have a greater chance that your code is meaningful (not error free), since a typo isn’t going to blow up later

had the following line in some PHP the other day:
     throw new Foo_Bar_Exception();
problem was that it was a Foo_Baz_Exception();  not caught until the line was executed

So while you might need to track down different classes of problems, you still have similar problems.   While there is some “endorphin” driving development, the biggest challenge that a front-end developer has is that they know that once they’ve build out 90% of the functionality, that somebody is going to walk in and have them change 50% of the work they just did…  Or potentially throw a re-design in the pipeline so, 90% of their work is out the window.  Back end folks, just nod and smile and say “that’ll be 18 months of development”.

Back-end devs hate the client-side

Digging a hole for oneself…  I think the problem is not that there is a dissatisfaction, but I’ve frequently encountered developers that are fairly rigid in their thinking (back end primarily and sometimes on the front end).  The problem is that HTML/CSS browser compatibility is a shifting landscape, so what worked six months ago might be broken today.  The idea that code without change can break is a tough concept to most developers.  It’s a way of life for some and a battle to be fought for others.

My personal take

Again it’s a matter of training, some broad stroke generalizations:

Front end developers

  • Typically don’t have a CS degree, or have a CS degree from a 3rd tier school.
  • Work in languages that similar to basic (see PHP is Basic)
  • Have a visual skill in converting photoshop documents to CSS/HTML/etc.
  • Have a high tolerance for iterative programming, due to type free languages

Back end developers

  • Have a CS degree or lots of experience
  • Tend to me more systematic in their problem solving approach
  • Don’t mind spending days finding the one object that is leaking
  • Try and build tools to solve problems

Fundamentally, it’s up to senior developers to lead their teams to better solutions.  Seniority comes from experience and education, but if you’re unwilling to learn new tools (NIH is evil) or help build tools to solve problems that are not necessarily your own, then you’re not senior.  Your just another hack developer, who has a my way or the highway attitude.