A question came up on Reddit by a former military technician who planned to go from zero to full time programmer in less than a year by saving money and studying with something like Free Code Camp. That person got some grief. I say it’s a great idea. Here’s what I explained after the person contacted me through Reddit’s personal messaging facility.
First off, thank you for your service.
I looked at the conversation again and it didn’t seem overwhelmingly negative. One of the hardest things in life is to absorb feedback when it’s negative. I find there’s almost always something to get out of it. But it sure wasn’t fun to read from your perspective, either. It can also be a very fine line between living your dream and being realistic. I claim your plan is doable, and it straddles that fine line just the way it should.
The short answer is: Free Code Camp, plan still to be frustrated and to run a lot of experiments on your own, specialize specialize specialize, and have a very focused plan.
Longer answer. I got started when I was in my early 20s in the early 80s. I thought it was already too late. I am totally self taught, and there was obviously no Web to use at that point. Took me about 5 years to become a FT programmer while I worked at tech writing jobs. Given today’s resources, I could easily break that down to your time frame. (Within 15 years I had made enough to retire, though I am [not the retiring type](https://www.reddit.com/r/todayilearned/comments/3gbx78/til_that_the_founder_of_esnipe_a_website_that/)).
So your first job is to know exactly what your goal is. It is essential that you know this before you continue with your plan. When I was in your position I knew that without a degree I had to be better than everyone else, at something they didn’t want to do. At that time, it was programming assembly so I could become a game developer. I would eventually switch to compiler writing, but all the skills were transferrable.
Free Code Camp rightly forces you to learn a number of big disciplines, but it would help if you know early on that you want to be a UX designer, a back end DB programmer, a Javascript middleware specialist, whatever. Here’s the key. It actually doesn’t matter which one you choose as long as you don’t hate it. Because your plan is to get really really good at that specialty, so good you’re obviously better than the other candidates you’re competing with, you will automatically broaden your horizons as a programmer and end up learning the fundamentals no matter what you choose.
You’ll be scared by the idea of specializing, because it will necessarily cut off other possibilities. So that means you need to choose something that is highly likely to be around for the next 5-10 years, which happens to mean anything taught in the main Free Code Camp curriculum. But look at it from the point of view of a future employer, many of whom could well be risking their own money to hire you, if you interview at small shops. If you needed a Python-backed DB app written and you found yourself talking to candidates who said they knew a little Python and a little Redis and a little PHP and a little Meteor and a little MongoDB, vs. someone who had 3 live Python apps available on the web and could explain every design choice, which would you rather hire?
Remember how I said I got started because I wanted to program games? Never finished one, but because I learned assembly so well it was natural to root around for angel money to launch my own startup for a compiler (back in the day, when compilers could make money). Also I was technically hired by a game developer because I knew assembly, though they folded before the first day I started! (I’ve been through 3 boom/bust cycles in this business so far.)
How do you decide what to specialize in? Do a few toy apps (that actually go up on the web, as you’d do at Free Code Camp), look at job listings and see which ones are most interesting to you now, even though they’re aspirational. Look at the places you would truly like to work. Maybe it’s small local companies, maybe it’s Google, maybe it’s the library system, maybe it’s a federal bureaucracy, maybe it’s freelancing, I don’t know. Only you do.
You will no doubt find that Free Code Camp doesn’t have all the learning materials you need. No one source ever will. Don’t sweat it. Google the shit out of every problem you have, post to stackoverflow & reddit, whatever. Ignore the haters, except the ones who give you good info. Thank them. But the point is, don’t give up on Free Code Camp if they don’t tell you everything you need to know. Doing well in this business means everyone is self taught to one degree or another.
BTW, I’m pitching Free Code Camp not because I have experience with them or any financial interest, but because they course they describe is exactly how I would present the curriculum. It has theory, practice, and then actual real delivery of code to be consumed by live humans in a production environment. This is epic and will separate the men from the boys. I don’t know if their course is absolutely complete but it doesn’t matter. You can use their framework to learn everything you need. If you must, choose a different path to your education but make sure follows the same contours.
And while I said specialize specialize specialize, I lied a little. Get super good at one thing, and pretty damn good at a second. So: UX designer who is not afraid to do CRUD apps with PHP, or a Python programmer who can also use Javascript/jQuery to liven up that CRUD app, etc. Then learn how to sell yourself, which means to be able to spit out your specialty in one sentence: I made simple CRUD apps in Python fast. I make secure web apps that follow industry standards and are easy to maintain. I make intuitive UIs that disabled users can always navigate without ever getting lost. I do super fast in-memory database apps using pure Javascript and Node. That kind of thing.
I am always studying for my next job, even though I have been CEO of my own company for 16 years. In my case I am studying how to make high performance web apps using Go and MySQL on Google App Engine. Maybe not a good risk for you, but the point is, I have specialized on what I think is a usable skill set for 10 years from now.
You make me a little nervous because you expressed the need to be motivated. I grew up not rich in a neighborhood I am very glad not to live in. I sat down when I was young and rationally decided that a white collar job was the most efficient way to get the fuck out of that neighborhood without a college education. By 14 I was interviewing people who had done similar things, and found that programmers had the perfect way out. Good programmers were so rare employers would overlook their lack of a college education. That is absolutely true today. (I also wanted to be a rock star but didn’t practice enough. By the time I was 25 I jettisoned that idea permanently because I hadn’t worked hard enough at it.) If I were you I would take a bit of time to imagine my life if I don’t graduate Free Code Camp vs if I do. Think about it very carefully. If that’s not enough motivation I am wasting the hour and a half it took to right this, although I think I’ll turn it into a blog post.
So. Decide what you want to do by balancing what people are hiring for vs. what you like. Get damn good at it by learning it deeply and shipping bad code that people will criticize. You will get good jobs, I promise.