I've received this question in many variations over the past few years, so I wanted to write a detailed post to cover my thoughts on it.
I can't write about what path you should take, or what the best path is. But I can share the path I took. So, think of this more as a story than a how-to.
I don't have any formal education, and certainly no higher education. I was home-schooled until the age of 16, at which point it was legal in the state of Massachusetts to "drop out" with my parent's permission, which they provided. The "home-schooling" was extremely casual and disorganized. I didn't get my GED and I've never taken a test in my life.
I worked in construction, painting, demolition, and other odd jobs (max $10/hour) before starting my web development career.
I'll break this into two categories - the things that I've done to get started in my career, and things I've noticed in applicants to Grafton Studio that have set them apart (and in two cases resulted in a job with us).
Before landing my first job at a web design agency, I spent about a year (on and off) doing small websites on a freelance basis. I found these clients through Craigslist and had a few referrals from friends.
The Craigslist work was not glamorous or impressive in any way - and it certainly didn't pay well - but it got me used to doing work for other people, whereas I had only built websites for myself prior to this.
These handful of small website projects also gave me something concrete (albeit amateur) to show to agencies when applying for jobs.
I applied for an junior front-end developer position at an agency (whose job posting I found on Craigslist!) and they gave me a chance. I suspect this was because I had actual live client websites to show them and I proved my desire to learn. I was also humble and didn't try to bullshit my experience, which I suspect helped.
I learned more in the 1 1/2 years at this first agency than I had in the previous 7 years of dabbling in web design/development on my own (with huge gaps of doing nothing on it at all).
This was because I was on one project after another constantly, with new challenges and quality standards put in front of me every week, and with other developers and designers around me who I could learn from.
I think that last part is applicable at any point in your career, even if it hasn't started yet. Find other developers, make friends, share ideas, ask questions. Show them your projects and get feedback. Go to meetups and talk to people who are in the jobs you want to be in.
After 1 1/2 years at this company, I developed a strong interest in web applications. Most of my work involved building brochure websites within CMSes, which was starting to get repetitive.
In my personal time I was diving into back-end development (PHP & MySQL at the time) and was very excited about the idea of building web software. I built a few simple applications on my own to practice what I was learning. One was an extremely basic social network and the other was a tool for managing code snippets online (this project is actually still alive and kicking with a few thousand real users).
With this new focus and interest, I started looking for software startup companies to apply to. I landed my second job at a startup that had a subscription SaaS product.
Going forward, I kept repeating these same principles. Not because I "had to do them to move up", but because I genuinely enjoyed creating things, and genuinely enjoyed learning new technologies and tools.
The hardest part is getting your foot in the door of your career. From there you just have to strive to do good work, to learn from those around you, and to never let yourself feel like you've got it all figured out, because that's when growth comes to a screeching halt.
At Grafton Studio, we hired 3 people since founding the company in early 2014.
The first hire was a designer and a friend from my first job, so there was no interview process. I liked him and I liked his work. The second and third hires were both front-end developers and complete strangers.
We posted these positions on multiple job boards and received about 200 applications as a result. That's a lot to sift through. Unfortunately, many applicants could very quickly be written off (no work provided, extremely entry-level skillset, claiming expertise in areas of very basic understanding, etc.)
But some stood out, and this is why:
A well-written email that sounds mature but also personable and down-to-Earth goes a long way. Being helpful, polite, and genuinely interested in the company you're applying to does show.
This is an obvious one, but if someone sends on a few nice looking websites or applications they've built, it's immediately encouraging.
Alternatively, a crappy looking website/web application doesn't inspire much confidence - even if the code is rock solid and well-organized, and even if you weren't responsible for the design. The poor design might not be your fault, but it's your portfolio and you will be judged by the work you present.
This point mostly applies to front-end developer applicants.
Our most recent developer hire has a nice-looking personal website with a blog where he has written several web dev articles. He also has a YouTube channel with a series of front-end development tutorials. That was incredibly encouraging. I immediately got the idea that this guy is genuinely interested in programming and wants to become great at it.
Ambition, proven by repeated action, is hard to ignore.
We start potential full-time hires on a one-month trial period.
During this period, it is not most important that the person knows how to do everything put in front of them immediately. What matters more is their aptitude for learning. Their ability to read up on a subject or problem, wrap their head around it, ask a few questions, then go away and implement it (within a reasonable amount of time) is paramount.
Especially when starting out, how a person responds to instruction or correction is something we pay close attention to.
Instruction needs to happen with high frequency. It's how someone goes from being a junior developer to a senior one. Correction is incredibly important. It's how the work we put out is at a standard we're proud to put our name to - even if the person who did the work is new in their career.
It works the other way, too. The ability to teach and correct other team members (including myself) is highly valuable. This is why seeing an applicant who writes and shares knowledge online is a great early sign.
I hope this was helpful to you. I'm always open to questions and I try to help when I can, so feel free to connect with me on Twitter or send me an email.
Send me a message and I'll get back to you within one business day.