Written by Harry Roberts on CSS Wizardry.
I receive a lot of email from younger/junior developers asking me for advice on how to get into the industry, how to make a name for themselves, and how to make it as a professional front-end developer.
After a long, long talk about this with my close friend Bryan James, I have decided, in a similar vein to Anna Debenham, to publish the most common answers as a blog post. This post was also, in part, inspired by someone saying to me recently:
…I might have to interrogate you as to your secret, I would love to travel [for work] but struggle to findthoseclients.
The secret is, there is no secret. It’s all just a lot of continued, hard work.
This post is long, and what follows are my personal views and, although it is what I would advise, it’s not necessarily firm recommendation: apply your own context, feelings, needs, and wants. I do not want to be held responsible for any horror stories!
It’s also important that I emphasise that I’m not trying to be preachy or righteous; people do reach out to me very frequently for this kind of advice, and I answer as best I can. I haven’t put myself on this podium—I don’t think I’m the best person to be giving life advice to strangers—but enough people get in touch with me that clearly other people think I might know a thing or two.
Finally, if you disagree with anything, this is one of the few times I really
won’t care. These are my own opinions and advice; to disagree with me would be
like asking me my favourite colour and then telling me I’m wrong when I answer
One of the hardest things about answering a question like
How did you get to
where you got to? is that the person asking it assumes that I had a plan;
that I sat down and mapped out x, y, and z in
the knowledge that it would get me where I wanted, and that anyone else could
follow the same steps to the same results.
If there was a replicable, failsafe plan to success and acclaim as a web developer, well, I could probably make a lot more money selling that than I can make selling my time (although it would be far less enjoyable). It would also mean that this post would be more likely to appear on Buzzfeed: This One Weird Trick to Becoming a Successful Web Developer: Graduates Hate Him.
So, right off the bat, know that there wasn’t and isn’t a plan, or a correct path to take, and most of the advice offered is collated retrospectively, after things had happened. Also know that some of this would count as advice I would like to be able to give my younger self, given the chance.
There are some larger, more overarching things that I would advise people do; these aren’t really things you can action right away, or even measure, but they are just general things I’d recommend you do throughout your career.
A lot of the emails I get mention my ‘achievements’, asking how to get well
known, or how to get x clients, or how to
get where you got
Straight away, it’s probably important to properly focus on what you want. If you’re after fame and fortune, I’d tell you not to bother becoming a web developer. If you’re wanting critical acclaim in order to work with a certain type of client, you’ll probably be working very hard for a very long time. If you just want to get your head down and do good work for anyone, whoever they may be, you’re still going to have to be very conscientious.
Decide what you’re looking for (this can always change) and point your efforts at that. To quote a previous article of mine: Make it count.
Seriously, don’t wish your life away. I’m 24 and I frequently have mini freak-outs about just how much more life I have left in front of me. You may be excitable, and you may want to do everything as soon as possible, but I’ve certainly found that as I’ve worked longer and longer, and matured as a developer, that there is no need to rush things.
I started out wanting to do everything right now, trying to run before I could crawl. I’m now six (yep, just six) years into being a professional, full time developer, and I’ve come to realise just how long six years is. I’m also acutely aware of just how many more chunks of six years I have left in front of me: it’s safe to slow things down a little.
I don’t think you can really plan something as long term as your career. With something that can change so much and so frequently—and often for reasons well outside of your control—it is probably best not to try and have a rigid roadmap, timescale, or plan at all.
Sure, have some loose ideas of things you might want to do:
I want to work in
a bigger agency for a bit; I’d like to work in a more creative environment; I
want to work for myself one day, but you will keep changing your mind, and
your priorities will change as well. Tying yourself to a plan will probably just
I’ve found that I’ve largely freestyled my career based around what I’m good at, where I am, and what I want to do at any given time. I don’t want to be rooted in an industry that is still finding its feet.
Rather than aiming yourself at one end goal, intersperse your career with much smaller ones. The problem with big goals is that:
Of course, that’s not to say don’t have any goals at all, just be sure to set smaller, more frequent ones. These will be attained more easily and more frequently, meaning you’ll feel like you’re making more progress. A small goal every two years is better than a big one every ten.
I’ve always tried to avoid big, monolithic goals purely because I know how much can (and will) change it all. I never once even thought about working in a large, product-based company, never mind thought about the fact I might enjoy that. It just so happens that working in such a place came about almost by chance, and it completely changed what I wanted out of my career. I didn’t have any other plans or goals that would get in the way of me pursuing this new interest.
A lot of changes in my career have come about almost serendipitously, meaning that a lot of it has just been changing things up as opportunities presented themselves (you just have to make sure you take them).
I’ve never once set my sights on an end goal, I’ve always just set my sights on the next thing, and it’s important to always have a next thing…
Try and avoid complacency; the best way to stay driven is to always have a next thing to be working on. Got your new job? Great! Now look at promotions. Working for yourself? Sweet! Now work out how to make your business model more efficient.
Carrying on from the previous two points, make sure you can accommodate change. Plans will change, jobs will come and go, and opportunities will arise at times that aren’t necessarily convenient or predictable: being able to take advantage of these will be a real boon.
It’s not particularly easy to give any actionable points for keeping agile, but being able to interrupt, postpone, or even cancel current parts of your life in order to take advantage of better opportunities is always advisable. Perhaps don’t sign a year-long contract with a company; maybe it’s best not to buy a house when you’re tempted by the idea of working abroad. Opportunities will present themselves at any time, and it’s nice to be able to take them.
This is also just a generally great habit to get into as a developer as well—I’ve basically just described the differences between Waterfall and Agile methodologies. The ability to accommodate change is a great quality for a web developer.
Typically, as long as you care, and are genuinely interested and invested in what you’re doing, it won’t matter where your goals take you, or where you fancy taking yourself: you’ll probably find that everything just sorts itself out. I didn’t have a plan, I didn’t go to university, I don’t have an ultimate goal, I just care a lot about what I do. This attitude has served me well, and has kept me driven and self motivated.
I don’t believe in fate, or karma in the traditional sense, but I do think that people will always remember when you helped them out, or when you did them a favour. It’s a good idea to keep people on side for you later on, but it’s also important to recognise when others do favours for you. Be as helpful as you can as often as you can, and go out of your way to leave good impressions on people.
Interestingly enough, on the day I posted this article I received two thank-you gifts in the mail from developers who I’d helped out in previous weeks. It’s always good to help people, and it’s lovely to be appreciated. Now we have three professionals with interchangeably fond memories of each other. That can only be a good thing.
Kind of shooting myself in the foot here, but no one knows you better than you do: be careful putting too much trust in advice from others, particularly people you don’t get to see warts and all.
There are a number of things that you could action right away, and that are very specific, short-term activities. These are the more general day-to-day things.
You may want to work for yourself one day, and that’s great! But don’t wish away your time spent working for someone else. Learn as much as you can about process, about the industry, about clients, you name it, whilst working for someone else. I’m very, very glad I decided to start working for myself, but I wouldn’t be half the developer I am today had I not spent three years working for Sky. Being able to learn, get trained, attend conferences, and more, all whilst getting paid a fixed salary is absolutely nothing to turn your nose up at. Make the most of your full time jobs; don’t rush into self employment until you feel you’ve gotten every last drop out of someone else, be that the company, their benefits, the projects they allow you to work on, the colleagues you can learn from. Lap. That. Up!
Be on Twitter, read the right blogs, follow the right people, participate in the relevant IRC channels, immerse yourself in whatever it is you want to be doing right now. Want to learn about performance? Follow the right people. Want to learn a JS framework? Read the right articles. Want to contribute to open-source? Get on GitHub.
Note that I said
whatever it is you want to be doing right now? This is
entirely up to you, and it can change as and when you want it to.
Work on something worthwhile, something compelling, and write about it. Pioneered a new technique? You need to get that written up. Have a really great case study about some recent client work? Share the knowledge. You totally kick ass with a certain technology? Make your blog the go-to resource.
People like Kitty making waves in the Sass community, Sara publishing great SVG resources, and Ana sharing mind-bending, crazy, complex math-based CSS transforms really help cement themselves as authorities in their respective areas. This isn’t a quick win, but it’s certainly very effective.
One thing I wouldn’t recommend is having a blog just for the sake of it. A dozen posts about What Pokémon can teach us about DevOps probably isn’t going to ‘stick’ quite as well as an in-depth writeup of something more poignant.
And I don’t just mean by learning a different tool or framework, I mean in general. My best work started happening when I was working solely with software engineers; learning how and why programmers tackled problems was hugely beneficial to my work as a front-end developer. Even broader than that, I have a (very superficial) interest in construction, engineering, and architecture: knowing things about how these industries operate and solve problems can be a very useful thing in your own work.
There’s never anything wrong with learning more about anything, especially when it can help you in your career.
Broadly speaking, no one is likely to step up to you and just offer you your dream job. If they do, it’ll probably be because you already proved your worth elsewhere. Put yourself out there proactively: side projects, open-source, blog posts, speaking. This is all about you making your own way, and not waiting for someone else to come and do it for you (because, guess what, they won’t).
Making your own opportunities will come in many different guises, but you need to always be making sure you’re doing as much for you(r career) as you can be.
It’s important to keep pushing yourself, and this can be in any direction you choose: Want to learn a new programming language? Learn one. Want to go work abroad for a while? Do it. Want to build up your profile? Go speak at a conference. Want to work in an unfamiliar environment? Put yourself there.
I always said I’d never do any public speaking—I was terrified of the thought of it—but when someone approached me and asked if I’d like to give it a shot, I took that opportunity. I said yes, put myself out of my comfort zone, and have never looked back.
One thing I would say, though, is don’t tell people you can do something before you actually can. Don’t tell someone you know AngularJS and then have to learn it on the job. I know this is probably quite common practice, but it’s basically lying, and lying is unprofessional. I’ve always, always erred on the side of caution in order to save embarrassment and, more importantly, letting people down: your reputation will be worth a lot more to you in the long run.
Attending conferences and meetups with talks and/or workshops is just a GoodIdea™—it’s learning, and learning is what you need to be doing.
Meetups can be used for networking, if you’re into that, but they’re also a great way to get inspired, see what other people are up to, learn how competitors (individuals operating in the same industry in the same locale are all competitors in some form or another) are currently solving problems, and how that’s going for them. One of the best things about conferences and meetups is being around your peers, but…
One thing I can’t stress enough here: listen more than you talk. At least in the beginning. This thing happens more than I can even remember:
A group of people stood around at a meetup, and there’s one guy (or girl) who loves the sound of their own voice; they haven’t thought to ask who anyone else is, or what anyone else does, but they’re just going on and on about themselves. After a while the conversation finally does move to someone else, and it turns out that that ‘someone else’ is twice as accomplished as the person who just held court for 15 minutes.
I’ve had this with people showing off about day rates, only to find that someone earns three times as much as them; about their Twitter followers, only to find out that someone else has ten times as many; I’ve heard people showing off about the new technologies they’re using, only to find out the guy sat next to them has written a full game in it six months earlier.
The amount of times I’ve been well into conversation with someone and all of a
sudden they’ve exclaimed
Wait, you’re Harry Roberts?! is staggering. I
would never assume that people would or should know who I am—far from it—but it
does highlight the fact you could be talking to anyone: find out who it is
before you indulge yourself in twenty minutes of self promotion.
It’s good (and understandable) that you’re full of beans, and excited to get into the mix, but situations like the above are embarrassing for everyone, every time, and it leaves people with exactly the wrong impression you wanted to give them. Sit and listen until you know exactly where you stand in that crowd.
I’ve often found that the most insightful individuals are the ones who sit and listen before talking.
As above, there will always be someone better than you, smarter than you, more successful than you. You need to be okay with that, and be humble about it.
There will be things you don’t even know that you don’t know, so be fully prepared, at several times in your career, to be brought down a peg or two. It’s happened to me before, it will happen to me again.
Once you find the people that do know more than you—be that in your field, or a field of their own—listen to them. You can learn from these people, and add their knowledge to your own arsenal.
This seems totally obvious, but everything else that’s gone before this point is worthless if you’re not actually any good at your job. Probably the biggest single thing you can do to be successful in any industry is to be good at your job. You need to be able to objectively point out and address your flaws.
A lot of developers out there are just plain bad at their jobs. This rings true in any industry, but the barrier to entry in ours probably amplifies the quality problem significantly. The first thing you need to ensure is that you’re actually any good.
You spend 8+ hours a day, 5 days a week working. No one’s got time for that being a drag. Leaving a job because you don’t like it isn’t ‘giving up’, it’s realising that there are better ways to spend such a huge amount of your life.
Sure, you’ll have terrible clients, or boring amends to do, or you’ll inherit some absolutely appalling code—this is work, after all—but don’t let that desensitise you. Being a web developer is a job that many do find interesting, fun, and fulfilling, so make sure you try and keep yourself happy.
Learn how to identify rough patches (i.e. this will soon pass) and just plain bad places to work (i.e. a certain culture so ingrained that it’ll never change). As Nicole once told me:
You can spend that long trying to change a place that it just ends up changing you.
If you’ve emailed me asking the types of question that this post covers, then the chances are that you will want to follow the above (to an extent). That doesn’t mean, however, that it’s right for everyone.
I know a lot of developers who are fantastic at their job, but will never be on a stage, they will never write a blog post. Hell, some of them don’t even have GitHub or Twitter accounts.
Being a web developer is a job, nothing more, nothing less; there’s nothing noble or righteous about it, so it’s completely, entirely understandable that, for some people, work starts at 9am and ends at 5pm. There’s is absolutely nothing wrong with that. They’ll often have freer evenings and weekends, a better work–life balance, and maybe even a healthier outlook.
It takes all sorts, and there is no right or wrong approach.
To reiterate, these are all my personal bits of advice; no one has to agree with or pay heed to any of them. I’m not trying to be deep, or philosophical, or wise, but I would (sometimes retrospectively) say that the above has played some part in my own career so far. I’m not trying to claim that I’m right, or somehow more qualified than anyone else, but this is generally what I would tell anyone wanting to makes moves in the front-end development community.
As ever, your mileage may vary, and you should consult as many other sources as you can—there will be conflicting advice.
In no particular order:
There will be a lot in here that I’ve missed, or not gone into enough detail on, so if you’d like more specific advice then please remember that you can still always get in touch with me directly: I’m always happy to help if and where I can.
Hi there, I’m Harry. I am an award-winning Consultant Web Performance Engineer, designer, developer, writer, and speaker from the UK. I write, Tweet, speak, and share code about measuring and improving site-speed. You should hire me.
I am available for hire to consult, advise, and develop with passionate product teams across the globe.
I specialise in large, product-based projects where performance, scalability, and maintainability are paramount.