I recently passed my 15-year(!) anniversary here at Newfangled. At 17, right out of high school, I was remarkably lucky to land an internship where I could learn this, um, newfangled web technology.
While I tend not to dwell on milestones, this did prompt me to think a bit about my entry into programming. I’ve been asked several times recently by students and young developers how they might improve their marketability, so I’ve compiled some of those conversations here.
I should point out that my perspective is shaped by the type of developer that thrives at the kind of company Newfangled strives to be. Our emphasis on work/life balance is not an accident – we deem it a requirement for intensity, involvement, and creativity each day at work. More specifically, we don’t distinguish between front-end (javascript, html) and back end (php, mysql) development. A developer is involved with a site build from the very beginning, and follows it through to completion (and beyond). In that sense, we need to be proficient in all phases of the development cycle. An eagerness to communicate and brainstorm throughout the entire project is crucial.
So what prepares you (in my opinion) to be this kind of valuable developer?
…
Build stuff. Functional things. Practical things. Things that show your ability to think through a problem from beginning to end, not just your ability to work with a particular concept/technology/buzzword. That said, don’t let this stop you from experimenting, trying out new ideas, even if they don’t go anywhere.
Write. If you have a wordpress blog, great. Visiting it, though, would I know that you were passionate about web development?. Did it give me pause, or make me laugh? You don’t have to write highly technical articles. Perhaps start by talking about the process and decisions that went into each of the projects you’re showcasing. Maybe augment those case studies with more general posts about technologies or concepts you’re interested in. This ties back to my first point – you always need to be experimenting, and as you do so, use that as an opportunity to share what you’ve done.
Work on at least one non-technical project a week. This is easier said than done, of course. Preferably, though, find something requiring you to get dirty and use your hands. The clarity and insight will empower your problem-solving abilities when you are working on technical challenges.
Intern/volunteer. This is my boilerplate advice for anyone getting started in any industry, not just web developers. If you have no real-world experience, get some. While you may not get paid (much), the amount of marketable skills you learn will more than make up for for that. The point here is not to offer to work for free in hopes that you might eventually get hired (although that can sometimes happen). Rather, the point is that there are a lot of things that you can only learn by being thrown into the context of a fast-moving, complicated company with real clients. Finding someone that will let you work with them is not that hard, if you offer to do it for cheap or even free. It might not be a large company, or your dream job, but with enough networking you can find an opportunity to learn quite a bit. Even one day a week of real world experience is invaluable.
…
This last bit is really the most crucial. While a solid background and understanding of computer science is important, at this point that is assumed. The beauty (and curse) of this profession is that an advanced degree is not the ticket to entry. Rather, it is the personal values that you build as an individual – your approach to problems, your creative process, your natural place in a team environment – that define your merit. These are not traits you can learn passively. The sooner you get involved – with a company, a project, or a community – the sooner you will determine how you personally manifest these values.
And that’s why I’d hire you.