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:
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.
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.
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)
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.
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:
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”:
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…