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
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.