A friend got in touch recently to ask for help on making a career change into web development. They were involved in technology some fifteen years ago—more than me in a lot of ways—but appreciated that things had changed almost beyond recognition, so they would at least need to upskill and were worrying if they should concentrate on retraining and getting an academic qualification. In effect, they were giving themselves maybe twelve months of spare time to become at least savvy enough for an entry-level job in the industry, and wanted to know if I could advise them.
I didn't initially see how I could possibly help them. After all, in terms of web development I'm almost completely self-taught, and a lot of that has been through processes of osmosis and curiosity rather than through any particular grand plan. Also, my career has been one of sideways motion first—DPhil student to LATEX compositor to journals e-publisher to web and CMS developer—and any upwards motion very much later, so it's not as though there was a clear path set down from the start that I could advise on.
In a flash, an idea came to me: if I were reconstructing myself as a web developer—all over again, but this time doing it systematically and with a timetable like twelve months in mind—how would I go about that? How might I build myself, all over again, in the space of twelve months? That's not to say that I'm a perfect developer, by any stretch of the imagination; but I'm a developer of a sort I recognize from the inside out, so it might help me offer advice more coherently. Anyway, I started writing... and writing... and writing.
When I finished, I had a lot of ideas, but I hoped that they weren't too prescriptive.I wanted it to be more flexible than edicts of "do it my way": my friend could pick and choose what they liked, and almost any result might be of more value than that of the effort put in. Much later, it's occurred to me that this list might be useful to (or at least worthy of comments by) other people. So if you're not sure how to get into the industry, or if you need a different perspective on it, then have a look at the notes below and see if any of it helps you.
- READ: Hacker News is a reasonable starting point these days. Make it your homepage if you've no better suggestions. It's like the Digg bit of Y Combinator: HN is what happens when geeks meet venture capitalists meet project managers, in a shared discussion space. That sounds like it could be a disaster, but it helps to surface a lot of blog writing where VCs think about tech and geeks think about scratching other people's itches. There's sometimes talk in the comments about programming careers and the industry, and the list of news items tends to bring to the surface lots of new technology and even people's work in progress (more illuminating, as you learn about e.g. how people do hosting these days, or deployment.)
- READ: Stack Overflow. It's probably the future of online documentation and problem-solving. Consider getting involved and helping out with replies.
- READ: Wired, Techcrunch, 37signals, UXMovement, Coding Horror. Avoid: Slashdot and The Register; these days they're repositories of of churnalism, contrariness, well-actually and tinfoil hats.
- ATTEND: any local meetups for techies you can find. I run the Oxford Geek Nights. These things get organised in the weirdest places, though, so you might find one near you. Check on Upcoming and Lanyrd.
- ATTEND: OpenTech 2011. It's cheap as chips—a fiver for entry—and you get to peek at lots of not-for-profit and similarly exciting projects. Interesting 2011; maybe Future Of Web Apps if you can afford it. The last one gets a bit speculative at times, but they're all weathervanes for the industry and what's, well, interesting.
- FIND: an itch to scratch. Once you've begun to dip into the industry, you've really got to have something you want to do to keep going. Unless you're really able to go through book after book, just doing the exercises. (Besides, a lot of the following is quite hard to find in books.) Something you're currently having to do that's really repetitive, that a simple website or program could help you with. Maybe you could build a "single-serving" site like caniturniton.com, for you to be able to check on your phone when you're out and about. Have something in mind that you will actively want to play with and it'll keep you involved.
- RESEARCH: about how things like the cloud work. EC2, S3. Alternatives from e.g. Rackspace. VM hosting from e.g. Bytemark. Google App Engine. All their APIs: at least know that they exist. Look at new technologies. PHP is still going strong but for security development REALLY needs to happen within a framework. Ruby (on Rails) and Python (Django) are "sexy" and they work. Look at the MVC-ness of these new frameworks. Get a feel for why they're like that. Have a look at AOP (kind of event driven programming) and other non-MVC paradigms. CMSes are freeware these days: Drupal and Joomla are robust products capable of much complexity; Wordpress simpler but more popular. Know that they're out there and what sort of stuff they can do. MySQL still powers the web, but look at NoSQL alternatives like CouchDB if you get a chance.
- RESEARCH: Dive into HTML5 is a great resource for information about the new generation of web standards. CSS3 is going crazy, with a whole demoscene of pointless, Flash-less content; it'll settle down soon but it's all still exciting. Javascript, along with jQuery, is finally a respectable programming language. VCS has turned into DVCS, with the onset of git and mercurial. Use one of these for your own projects as a rule: I like git, but pick whichever. There are great, free online references for all of this especially the Pro Git book.
- JOIN: Twitter, Delicious (despite the fact that it might not be around forever), LinkedIn, Github, maybe Bitbucket. Use Delicious extensively: look ahead to paid alternatives like Pinboard; pipe specific tags (e.g. "fortwitter") to your Twitter account using Twitterfeed. Do the same with LinkedIn, but don't have services automatically retweeting; consider what your audience wants. Get yourself a presence online in a way you might find slightly aggressive at first, as you've got a lot of ground to cover quickly.
- PLAY: Find a language you like and start to play with it. My personal favourite is Python, even though I do mostly PHP these days. Python is OO, but has a very loose feel to it (google for "duck typing") and, on top of a nice syntax and style, it employs concepts of code aesthetics rather than strict right or wrong choices.
- BUILD: Write lots of code. Lots and lots. Wonder how things work in a language. Try example coding. Fork someone else's project on github and tinker with it. There's so much code out there for free these days that you should be able to find something to play with.
- POLISH: pick some of these recommendations off Stack Overflow and consider reading them. I'd say The Pragmatic Programmer and Mythical Man Month are good "cultural" tomes. Others are up to you. I'd recommend my book, but in all honesty Dive Into Python blows everyone else's writing on the subject out of the water. If you've still got some spare time, read the wikipedia entries on principles like Agile, XP, Scrum, Kanban etc. so you can work in those environments if you're asked to.
Not all of this will be of use to everyone; some of it might even be of use to no-one; but I wanted to put it out there for other people to see, should it help them in any small way. And while I'm not interested in holy wars particularly: "is Slashdot not still worth reading these days?" for example. Instead, I'd love to know how you personally would rebuild your career persona from scratch, given twelve months.
Why not blog about how you might go about rebuilding yourself over a year, and post a link in the comments?
Comments
Anonymous (not verified)
Wed, 16/03/2011 - 15:24
Permalink
wow
really a useful list. thanks for sharing!
Anonymous (not verified)
Wed, 16/03/2011 - 15:42
Permalink
Screencasts!
This is the major difference between learning then and learning now. Check out lynda.com, Nettuts+, css-tricks, YUI Theater, peepcode, and Rockable Press...
Anonymous (not verified)
Wed, 16/03/2011 - 16:08
Permalink
Good write up. Another bullet point...
Get involved in an open source project. This will allow an aspiring dev to get hands on with code while providing structure and exposing them to (presumably) good code/coding best practices.
Anonymous (not verified)
Wed, 16/03/2011 - 17:14
Permalink
Hi ...
I was trying to find something llke this. Thank you very much..
http://wp.me/1lx5C
Anonymous (not verified)
Wed, 16/03/2011 - 18:28
Permalink
Huh?
Can't fault most of these resources / suggestions but:
"consider what your audience wants. Get yourself a presence online in a way you might find slightly aggressive at first, as you've got a lot of ground to cover quickly."
Sorry if I'm missing the obvious, but what does this have to do with learning web development? Cut and paste from "How to construct a blogger?"
Ja5Cibai4ohMoo5s
Wed, 16/03/2011 - 18:39
Permalink
Sorry if I'm missing the
Sorry if I'm missing the obvious, but what does this have to do with learning web development? Cut and paste from "How to construct a blogger?"
I should've clarified - this was a list for someone wanting to become a freelancer, so touting themselves "as a service." I've clearly not edited that bit down enough to be less specific, but don't want to do that now!
But then again... these days, your "CV" that savvy employers see first is basically your presence on github, the questions you ask on Twitter, the references you get on LinkedIn.... That's not to say it's the only thing but it can really strengthen your chances of getting a job in development, and not just being a hobbyist.
mdeboard (not verified)
Wed, 16/03/2011 - 20:02
Permalink
I agree with all, but "Build"
I agree with all, but "Build" and "Play" are the crux of the whole thing. All the rest of the list are best utilized by buttressing one's expanding coding skills. I'm about 6 months in to my dedicated, hardcore effort to turn myself into a programmer (with a focus on the web). Nothing happened for me that was worth mentioning until I started making things. THEN I started participating in HN, reading books and researching more vigorously. Because I had context.
Daniel Fischer (not verified)
Wed, 16/03/2011 - 21:28
Permalink
Spot on. I'm doing something
Spot on. I'm doing something similar for front-end web-developers. You absolutely have the right idea on this and I think we as a community need to invest more time into showing this path. It's actually really difficult. There's so many pieces of knowledge you have to attain to gain ground in this industry.
I'm focusing on the front-end developer in this regard.
dade (not verified)
Wed, 16/03/2011 - 21:45
Permalink
Wow - you completely beat me
Wow - you completely beat me to the punch. I just had my best friend (who was a financial planner for 15 years) tell me he wanted to learn how to be a web developer like me. I came from the sales/marketing side and was lucky enough for someone to give me a shot to learn HTML/CSS on the fly. To me, it literally was a once-in-a-lifetime chance. I had no idea what to tell him or where to start since a lot of the stuff I learned was exactly how you described it. Thanks for putting all this information together. It will help my friend a lot, and give me more avenues to explore. I've only been in the game for 4 years now, and there's still so much I want to learn.
Great article.
Robin Chauhan (not verified)
Wed, 16/03/2011 - 23:12
Permalink
Thats a lot of reading and
Thats a lot of reading and conference attending before getting started!
Anonymous (not verified)
Wed, 16/03/2011 - 23:55
Permalink
You'll also need a fully
You'll also need a fully working WAMP/LAMP (Apache, MySQL, PHP) package. Otherwise, you won't be able to do local development. The two I like are XAMPP and WampDeveloper.
pwb (not verified)
Thu, 17/03/2011 - 06:08
Permalink
For learning web programming,
For learning web programming, Web2py is about as good as it gets.
Michael Allenberg (not verified)
Sat, 02/04/2011 - 12:40
Permalink
First of all let me say, I
First of all let me say, I don't think it can be done in twelve months...
In 2008, after a successful 10 year career as a professional photographer, I decided to reinvent myself as a Web professional.
My decision to leave photography as my primary career was based at first on the horrible, declining economic prospects for freelancers of ANY profession during this time. I decided that since I was spending more and more time behind the computer doing retouching work, graphic design, etc, that the logical thing to do would be to find an in-demand career path that utilized my growing knowledge of the Adobe Suite.
At the ripe old age of 40, to become a web designer what should one do? I returned to school... After a Freshman year at a national "chain" art college, I was lucky enough to get a phenomenal internship at the AdultSwim.com branch of Turner Broadcasting. The CRUSHING stress of a full load of classes, the internship, trying to maintain my photography enough to survive, AND a dying Father gave me a stroke in May of 2009.
While at my internship, I had decided that the "chain" art school was not for me. With the exception of one amazing professor who started to drill usability into me early on, the school provided nothing I could not learn on my own as you suggested above. It even turned me off to code, as my first experience was with Actionscript 3.0 and a teacher that did not tolerate people who had NEVER used a computer for coding before. I was frustrated, but still not convinced I could learn all I needed on my own... I applied to SCAD Atlanta and was accepted. I was even blessed with a generous scholarship! I had a week in the hospital and three weeks at home to recover post-stroke before classes started at SCAD.
It is now April 2011. I am graduating in nine weeks with a BFA in Interactive Design. SCAD has been an amazing experience in a lot of ways. BUT I do think you are 100% correct, that the skill-set can be self taught with the proper motivation and resources. I have never managed to become a multi-faceted coder... I can code pretty nice websites (both in AS3 and HTML), but CMS based stuff is still a skill to be learned. SCAD, did however, teach me how to become a self-reliant, self-motivated knowledge seeker. Two wonderful professors constantly pushed me to reach my true potential. My true passion lies in UX/UI design and that is path my career is now focused on.
Now most days, I am up at 5:30am or so (so I can work before our 8 month old twins get up!), reading most of the materials you suggested plus some others (Quora, Mashable, UX Magazine, Smashing Magazine). I have been building my online presence, actively working on projects (both student AND personal!), and finding my way in this EVER changing environment.
In 2008 i started this path thinking I would become a website designer. In 2011 that term is as outdated and archaic as the technologies I was learning then... The one bit of advice I can add to the excellent advice above is this: NEVER think you are going to be done learning. This field is about constantly learning as much as possible above any one specific skill-set.
These have been the hardest years of my life, but ultimately the most rewarding...
One last thing: Listen to the advice on SCRUM and Agile, ABSOLUTELY necessary for large scope group projects!
Pavel (not verified)
Mon, 04/04/2011 - 17:59
Permalink
Thank you for sharing this!
Thank you for sharing this! After years of working with PHP, databases, networking and linux I finally decided to become a web developer. And now I'm searching for everything about that. What I'm looking for is a roadmap of how to become a good web developer. And your article is just in time. :)
jp.stacey
Tue, 21/04/2015 - 11:59
Permalink
A note to SEO agencies:
A note to SEO agencies
This post is over four years old, and yet still it gets a fair amount of traffic. That means it's of interest to SEO people, purely because they want to wangle links to their clients into it, hoping as they do to leach off my search results, in order to simplisticly and idly improve search results for themselves in turn.
When you email a writer to ask them to edit four-year-old content, for your financial benefit and your clients' financial benefit, with little or no benefit to either the writer or the reader of such legacy/archived content: that's the definition of advertising, which I don't permit on my personal blog. Moreover, the ludicrousness and desperation of such requests—it's not as though this post gets that many visitors, after all—brings you, your company, your client and your entire industry into disrepute.
After the datestamp on this comment, anyone who asks for such edits will be named here: themselves, their company and their client. Without any outbound links as compensation. You're welcome.