I try to be a good netizen. Really I do. I know it’s not nice to trash a fellow blogger. However, a recent article by a well-meaning individual, [Update: name and link removed], is driving me crazy! I can’t just let this article go unchallenged.
The title of his article is 10 “Nice-To-Have” Skills for Front-End Developers. He starts out with this:
…since front-end coders are a dime-a-dozen these days, it pays to have experience, or, at least, rudimentary knowledge, in a number of other technologies that often don’t get listed under “mandatory” skills for a front-end position.
He then goes on to name 10 “Nice-To-Have” skills that, in my opinion, are way off base. Each of them is either a “must have” skill or a “dime-a-dozen” skill! One of the commenters hit the proverbial nail on the head:
If you don’t have these [skills], you’re not a “developer”, you’re a rank amateur.
I couldn’t agree more with the commenter. Maybe it’s because he used the term “developer”? If he wrote “UI designer”, I might not disagree. However, he uses both “front-end developer” and “front-end coder”, which to me are only a shade of gray from “front-end engineer” (the most seriously dedicated of the three).
So, anyway, if you’re a front-end engineer/developer/coder and if you’re sincerely interested in elevating your career, salary, and job satisfaction, you’ll heed my advice, not that other blogger’s. Below, I’ve listed each of his points. I’ll explain why he’s dead wrong and which must have skills you should be focusing on instead:
1. Experience with SVN/CVS for Version Control
Sure. Subversion is an important tool to know. But — Oh. My. God. — it’s called “subversion”, not “ess-vee-en”! I can’t think of a better way to show how woefully inexperienced you are with a tool than by demonstrating that you don’t know its real name. I once had a client whose tech lead referred to the company’s preferred database server as “Sequel Server” in the docmentation. (me: “Doh! Something tells me this project isn’t going to go so well…”)
…which brings me to my second point on version control. If your clients haven’t been mandating it — and you haven’t been using it — then you need a swift kick in the pants. Or maybe you need to buy a lottery ticket because you’ve been damn lucky! Seriously, though, any project worth your time is definitely worth an extra five minutes per day to check it into a version control repository.
Oh, and by the way, all the cool kids are using Git now. Why Git is Better than X
Must-have skills: demonstrable knowledge of both Git and Subversion fundamentals.
P.S. I had to laugh at his statement in his blog: “SVN is essentially the windows-friendly, visual counterpart of the command-line driven CVS”. (Um. No it’s not: “svn” is the nicely succinct shell command for invoking subversion. Of course, it’s apparent that he never touched a terminal app. Evar!)
2. Familiarity with WordPress Theme Development
The last time I checked, corporations aren’t hiring full-time WordPress Theme developers. I doubt many have budgeted for it at all. But don’t take my word for it. Let’s check to see how many jobs there are out there for WordPress:
Hm. Job descriptions containing “WordPress” are looking somewhat flat, and haven’t even broken 0.05%. Compared to Javascript skills, I’d say it looks like a dead end.
But maybe it’s not. However, I think the savvier companies are more likely to search for an offshore outfit for such a short-term task. Would you really want to compete with ultra-sharp, ultra-cheap developers in India, China, or Russia? I wouldn’t.
I’d rather place my efforts into learning the techniques and tools that were used to create the WordPress app. For instance, go hone your jQuery ninja skills instead.
Must-have skills: jQuery, dojo, YUI, prototype, SproutCore, etc.
3. ActionScript
Didn’t you get the memo? Flash is not the next big thing anymore. In fact, Flash jobs have been slowly disappearing since late 2008:
And Silverlight is never going to amount to anything either (except for maybe a games platform). The reasons are manifold, but one of the major ones is openness. Open standards such as CSS3 and HTML5 are gaining ground while uses for proprietary frameworks (Flash and Silverlight), such as closed DRM-protected video, are losing favor quickly.
Must-have skills: CSS3 and HTML5.
4. Back-End Programming Experience (PHP, ASP, ASP.NET)
Well, this is somewhat of a “no brainer”. To the “back-end engineers” — as well as to any software development manager — anything that deals with HTML is the “front end”. Therefore, in the eyes of hiring managers, these page templating languages are really front-end skills! If you don’t have experience in any of them, you’re already under-qualified for almost any front-end developer job.
I’d also like to add that I’d focus on anything but the page templating languages listed here. There are already too many PHP developers. ASP is completely and totally dead. Unresurrectable, in fact. ASP.Net isn’t far behind, relegated to boring, intranet portals and the poor, misguided (or Microsoft-funded) web app.
ASP and ASP.Net jobs have fallen steadily over the past year. And, no, it’s not the economy. PHP, Javascript, and other front-end developer jobs have been skyrocketing.
Here’s a better bet. Find out what frameworks the cutting-edge web apps are using. That’s what tomorrow’s jobs will be requiring.
Must-have skills: Python/Django or Grails (or Zend if you’re already a PHP expert)
5. Familiarity with Object-Oriented Programming Concepts (OOP)
Again, another “no brainer”. Better still: learn Functional Programming techniques and Prototype-based Programming. Javascript ain’t just another OO language. It’s so much more — and you’re missing out!
Most “back end” developers don’t have experience with the alternative programming concepts available to Javascript. If you can show them something that blows their mind during the interview process, you’re as good as hired.
Must-have skills: knowledge of (and real, working code examples of) closures, AOP, recursion, lambdas, and prototypal-specific methodologies.
6. Advanced Knowledge in SEO and Internet Marketing
What? I mean really? Seriously? I don’t know how you’re going to convince any worthwhile potential employer or client that you’re an SEO guru and a front-end guru at the same time. Instead, just practice SEO-friendly coding basics, like using semantically-correct HTML tags and using META tags.
Here’s an even better idea: rather than spend time reading an already-out-of-date 2008 SEO book, go out and network (you know, meet people). For instance, find an SEO expert to partner with.
Must-have skill: a network of friends, colleagues, and contacts to augment and/or enhance your skillset.
7. Experience with PHPMyAdmin
No. No. No. No. No!
PHPMyAdmin is a great tool for accessing a MySQL database that’s been locked out from normal port access by generic ISPs. However, it’s a sorry excuse for not knowing how to create, update, retrieve, or delete data records.
Learn SQL. No, GROK IT. No interesting web app exists without some kind of database.
And while you’re at it, skip any of the rhetoric from Microsoft, Oracle, or IBM that you need to learn the intricacies of their SQL dialect so you can write “stored procs”. Simple databases are de rigueur when implementing super-scalable systems. Stored procedures lock-up logic in unmanageable, intractable, and predominantly unscalable proprietary code.
Also, while you’re at it, learn MapReduce-based techniques. That’s where the real big money is right now.
Must-have skills: basic ANSI SQL and at least one of the open database dialects: MySQL, Postgres, SQLLite. Bonus: MapReduce.
8. Advanced Ajax/JavaScript Frameworks
Hey, Sherlock! Now he’s getting it!
Oh, wait. He forgot dojo, the most comprehensive framework / toolkit. Close enough, I guess. I’ll give him partial credit.
Here’s the trend for the toolkits I could track on Indeed.com:
The absolute numbers are somewhat low, but that’s because they’re on the cutting edge! And look at that trend curve! That’s where the money is! Eventually, most of the Javascript jobs will mandate one or more of the top toolkits.
Must-have skills: jQuery, dojo, YUI, prototype, SproutCore, etc.
9. Ruby on Rails (ROR)
Hey! He’s on a roll! He got two of the last two somewhat correct! (That’s me: always emphasizing the positive!)
Hello! But what’s this?
Even basic knowledge of what ROR is — without any hands-on experience — would nicely accentuate a resume in today’s front-end developer job market.
Um. LOL! How exactly would you write that on your resumé? “I really, really like RoR and would really, really appreciate it if you would pay me to learn it while working on your product. Please? I’m a fast learner. I’ll be your pal forever…?”
Must-have skill: add RoR to the list of back-end frameworks listed in #4.
10. Mobile Web Development
Once again, I have to agree, but He is once again missing the whole point:
Very soon, this skill will be a mandatory requirement on the average front-end developer job posting, so it should most certainly be on the list of “things to learn” for today’s front-end developer.
By the time it’s a mandatory requirement for the average developer, it’s no longer going to help you get ahead. Instead, you’ll be lost in a sea of mediocre look-alikes yet again.
The secret to keeping your skills fresh — scratch that.
The secret to keeping your skills head-and-shoulders above the rest is being on the cutting edge at all times. And guess what. You’re not going to learn what the cutting edge is by reading books or taking online courses.
No. The only way to keep your skills sharp enough to stay competitive is to know what’s going to be hot tomorrow and practice it today.
And how do you do that? First, get off your lazy butt and network with people. Attend local hack-fests, conferences, and user groups. Seek-out the movers and shakers in the group and learn what they know. If you don’t already have a Twitter account, go create one now and start using it to follow the industry leaders.
Then, set aside time every week to practice. Again, hack-fests are good for this, but you can do it on your own, too. If you’ve developed your network (can I emphasize this enough?), you’ll be able to get help with the stickier issues you’ll encounter. Challenge yourself to solve an impressive, but feasible coding problem.
Better still: seek out an open source project that needs to solve a problem and become a contributor to that project. There are plenty of cutting edge open source projects.
In the end, you’ll find you’ve acquired several additional must-have “skills”:
Self-assurance
Confidence
Peer recognition
Industry foresight
But how do you put those on your resumé or portfolio? Yes, it is possible. I guess I’ll have to blog about that soon because 99.9% of all developers, engineers, and programmers absolutely suck at writing resumés. (Yes, I’m looking at you!)
So, what did I miss? Let me know!
By the way, [Update: name removed], sorry to pick on you specifically. Maybe it’s just because your post coincided with my recent Twitter tirade against incompetent front-end developers who are causing me grief? Or maybe it’s because you used the term “front-end developer” when I think you really meant “script kiddie” (*cough* *cough*), I mean “UI designer”?
It’s time for me to brace myself for the flames…
Pingback: 10 “Must-have” skills for Front-End Developers | Faintest Notion
Hi John,
Thanks for the comments on my article. I like strong opinions and I’m certainly up for a good debate! :o)
Anyhow, I don’t have time right now to read your whole article, I’ll get back to it. But from what I’ve scanned, it really looks like you’re missing the whole point of my post.
My post is geared towards people who ARE essentially “rank amateurs”. That’s the purpose of the post, to let some of the newer developers know that there are a lot of things they could add to their development repertoire that will increase their chances of landing a project/position.
Your categorization of anyone that doesn’t know “subversion” (sorry, but everyone I’ve worked with calls it “ess-vee-en”) as a “rank amateur” is quite narrow-minded.
We’re talking about FRONT-END developers here!
But thank you for your thoughts!
Hey [Other Blogger],
I can’t believe you said this:
You just denigrated yourself and your entire readership (and me)!
I think I’d reserve the term “rank amateur” to any engineer, developer, or manager who still doesn’t realize how critical a stellar front-end engineer is to their web application. Just take a look at Facebook’s JS/CSS/HTML code. It’s a mess. They certainly don’t have any sense of a front-end architecture, and they’re obviously struggling to make their front end work at all.
Java and PHP engineers who can hook up a page to a database are a dime-a-dozen (but ones who can make it scale are harder to find). Front-end engineers who can create a maintainable, extensible, customizable, cross-browser, high-performance web app are very hard to find these days. (I think that “maintainable” is the most esoteric by far.)
Companies are slowly understanding that front-end developer positions are not best filled by college grads anymore. It’s been a bit slow for them to get it — until recently, that is. The future is bright for experienced front-end engineers.
Do your readers a favor. Give them some advice that will get them out of “rank amateur” status, rather than send them down a dead end. Most of your recommendations won’t help them obtain a job that’s any more exciting than as a maintainer of a small web site for a coffee shop (a.k.a. a “webmaster”).
There you go. Rename your post to “10 Nice-to-have skills for a webmaster“. Then I’ll retract my post. 🙂
Regarding Point 7:
I’m curious as to why a Front End developer needs to know SQL? If it’s for a general understanding of operations then I understand. However, do you expect Front End Engineers to write SQL? Isn’t that the role of the back end engineer or database developer? Would you agree there needs to be a clearer distinction between front end and back end developers along with the understanding of how their roles interact? Seems to me some companies expect too many “front end” skills for back end developers and vice-versa!
I do take issue though with your generalization of SQL, database methods like stored procedures and differences between databases. In my opinion, this is not the role of the Front End developer, but these differences are crucial when it comes to performance (tuning), scalability, throughput and efficiency. When you’re talking 20,000 transaction per hour or thousands of concurrent users at a time there is no such thing as a “simple database.”
Excellent reasoning James.
You’re absolutely right about differentiating front-end from back-end engineers. I got lost on that while attacking [Other Blogger]’s points.
You are also right-on about my “simple database” statement. Thanks for pointing that out!
I have to agree with [Other Blogger] all “FRONT-END developers” I’ve ever met are nothing more then rank amateurs….
Ha ha. Thanks a lot, Eric.
I want to second John’s opposition to denigrating front-end developers as clueless pixel-pushers. Quality front-end developers excel on the client side, but also have a firm grasp of the server side and development tools and best practices. Quality managers know that front-end developers do more than just convert pretty PSDs to HTML and CSS.
IMHO, the original post wasn’t targeted at “front-end developers” at all — it was targeted at people with a passing knowledge of HTML and CSS who like to call themselves front-end developers. Businesses hire those folks at their peril — and then they pay real front-end developers to clean up the mess.
John is not getting the point of the article I posted. And frankly, John, there are more mature ways to make your point.
The point of my article was that knowledge and experience in those different areas are usually not listed as “must have” skills on Front-End developer job postings. They are commonly listed as “nice to haves”. So I outlined a bunch of them as best I could.
In no way am I claiming to have a full understanding of the need for those technologies.
But you cannot say that having knowledge and experience in those areas is not going to improve a Front End Developer’s marketability.
And again, your bizarre claim that a “rank amateur” is in your opinion not a developer, is exactly that: your opinion.
I think you made some good points, John, but you really are lacking an understanding in the purpose of my post.
Your comments on SEO show precisely how you’ve missed the point. You’re basically saying that it’s better to not know advanced SEO techniques than to know advanced techniques. That is quite interesting!
Rebecca is absolutely right, however, like John she is basically saying that a person who only knows HTML and CSS is not a front-end developer. That is a very opinionated statement and is not agreed upon by all.
A front-end developer is essentially anyone that works on the front end. John is absolutely right: True front-end developers should have much more than what I listed. But I’d be interested to see John’s own list of nice-to-haves, and a job posting that agrees with him — then maybe I’ll concede his points!
@[Other Blogger] A front-end developer is not anyone who works on the front-end anymore than a carpenter is anyone who builds stuff out of wood. Sorry.
@Rebecca, I understand your point, and I agree. But when I say that someone “only knows HTML and CSS”, I mean someone that gets paid to do those things, and may not know a lot of other technologies or languages in-depth.
Your comparison is about a person that gets paid to build things out of wood and a person that does it for fun. That is not an appropriate comparison for what is being discussed here.
Whether you like it or not, there are people who get paid to be front-end developers but who don’t have as many skills as you or John! :o)
I think it would have been great to see John post a mature, well-articulated response to my article, without all the drama. I’m always willing to learn and correct my views.
(And for the record, I do agree with John about the ROR section, but as far as everything else, he misses the point completely.)
Pingback: Uxebu.com - JavaScript addicts » 10 “Must-have” skills for Front-End Developers
I am working as a frontend developer for 5 years now. I don’t have a half skills that you mentioned in your post so I guess in your eyes I am rank amateur. In my company (and many others too) frontend developers don’t need to know so much backend stuff (if any). My daily workflow is to convert PSD/PNG to cross-browser standard compliant XHTML/CSS/Javascript web sites. When I’am done backend developer starts to work. Somethimes backend developers need design updates – then I am doing that job (so I need to know Fireworks, Photoshop, Ilustrator and good web desing principles). I also need to know WCAG and how to test web sites to be WCAG compliant – that is also a must for frontend developer. I see my job as a link between IA world – design world – backend world so i need to know something from all of this worlds.
Pingback: What should a Front End Web Developer be? « GC Log