If you’re in tech and you have friends outside our industry, you are probably regularly asked some flavor of the question, “how do I do what you do?”, which is usually a question regarding high pay, freedom of work location, what I would call an “adult” level of trust from your colleagues and superiors, and flexibility in how you get the work done, among other benefits. There is no magic to working in tech; if you want to use your brain without needing an advanced degree, it’s a great way to get paid and survive, and maybe even buy a house and retire some day. For many it is a position of privilege that enables getting there – for me that was absolutely the case, which is a discussion better in person than on a public blog post. Furthermore, the way to “get a tech job” evolves all the time – the path I took would not look the same today.
Recently my partner was asking more seriously about what a path like this could look like, and asked somewhat rhetorically, “Should I just go to a code school?” And I have pretty strong negative feelings on that. The ONE code school that I used to think was pretty decent has also really disappointed me in the last few years. In my opinion, the folks that will get a job and stay in industry for more than a year or two would have done so without the expense and unaccredited/ever-changing program of a code school. Saliently, you cannot earn as an instructor for a boot camp/code school (interchangeably in this blog) what you can earn in industry. I can think of a dozen people who did these programs whose instructors suddenly dropped in the middle of a term, because they were doing the job while applying to software roles. I used to tell folks to check if the instructors had themselves graduated from the code school they were teaching at, which tells me whether or not the code school is teaching you to perform this program, or actually learn practices for industry.
So! What to do? I’m self-taught, with one code class that I took at the beginning of my journey in 2013. After the course was over, a woman fellow student recommended PyLadies, and I made the decision to go every Saturday and work on my projects and publish blog posts on what I was learning every week, and I did that for a year while I was finishing my degree in French and minor in Mathematics. That led to a weird little internship, which then led to 18mo in Support Engineering at a server config management company, which then, roundaboutedly, led to five years at my old company and three years in my current company as an operations engineer/devops engineer/site reliability engineer (these terms evolve), a space I’ve now inhabited since 2016 over a few roles. So I do think there is real possibility in a background, but consistent, learning toward a tech role, but I find myself frustrated by just how much money that seems to cost. With that in mind, I started punching up what I think would give you a base on which to seek out and competently interview for for entry level technical roles – junior software engineer, technical support engineer (emphasis on technical), IT desk/service, and more.
Language – pick ONE!
Lots to choose from but below is the list I think one could pick from and stick with – don’t bounce around too much once you’ve chosen. It’s important to learn deeply before casting your net too widely. Once you can read one language and make out its control flow reliably, you really can read most any language, and starting to work in a different language is really not too bad. You will find yourself forever comparing a new language’s paradigm to what you already know, so you want to make your first mental model strong. I started with Python and have seen it used from frontend to backend to personal scripting to simple data management, I have learned some C/C++ and boy oh boy can you get paid big bucks for being able to navigate its ancient and hallowed nooks and crannies well, JavaScript and Typescript are foundational and critical for web development, and Java is just ubiquitous. Describing these languages beyond this very brief sketch is outside the scope of this already monster-sized blog post. If there is another language that you are strongly considering that is not on this list, go for it! Learn it deeply. I think the program I’ve developed could very much be applied to many other languages as well, I just think that the five I’ve listed are terrific ones for beginners.
JavaScript, Typescript, C++, Java, Python
Who is this for?
I’m thinking of the adult professionals who can enjoy reading for its own sake and who are motivated to spend a couple hours a week – maybe more if you get really into something. Have you really enjoyed figuring out some piece of Excel automation? Have you gotten really into managing your own workflow, or improved upon/created effective, repeatable, teachable systems for getting some piece of work done? Have you, on your own, decided to pick up and complete a non-fiction book without external pressure? Do you enjoy engaging people on complex topics? If the answer to a couple of these is yes, I think you’d probably do well in a program like this and in this line of work, such as that can be hundreds of kinds of roles.
You’ll need a computer. You don’t need anything fancy, genuinely. A mac is probably best, but you can find used ones between 3-8 years old that will still work for a while, but a windows computer will work fine too. With Windows 10, you can use the Windows Subsystem for Linux 2, or WSL 2 for a real Linux command line. Personally I have not yet stumped my WSL 2 install with anything I’ve tried to do – python, bash, docker, rust, etc. If you would like to pursue a Powershell and native Windows based programming career, this isn’t really the blog for you, and I don’t think I’m the person to advise you on it, but godspeed!
The Program
Finally we come to the program itself that I jotted down one evening about a week ago, and keep chewing on as what I think could really get you a job in 6-9 months, for very little money – a fraction of a fraction of the cost of a code school. And if you get to the end (spoiler: the last one is “take a class at your community college”) and have decided it’s not for you, the money you’ll be out is the cost of a few books, NOT $30,000 or whatever they’re trying to charge these days.
- Join the main language’s slack or discord. Join the beginners channel, and pick five other channels to follow and keep up with. Make one of them social, and join conversation a couple times a week. If the channels aren’t active, pick new ones. Come up with a technical question to ask at least once a week in your learnings. Try to answer other newbie questions. This will be part of your learning experience for the rest of this program.
- Optional: a codecademy (or comparable free) class on one of the recommended languages
- One beginning programming book with exercises
- 3-5 videos and exercises on Git and version control
- PROJECT: Spend two weeks building something with what you learned. Feel free to liberally crib from the book you selected in step 3!
- One beginning HTML and CSS book with exercises
- PROJECT: Spend two weeks building a local website with just html/css. Cribbing rules apply.
- One beginning systems or networking or ops or AWS book (not azure and not gcp)
- Optional but highly recommended: bash and Linux command line basics
- The Phoenix Project book
- Forge Your Future with Open Source book
- A second and more specialized programming book which contains exercises in the same language you chose above
- PROJECT: Spend two to three weeks building a project based on the specialized book you read.
- Workshop a larger idea* for a project, which will require your language of choice and html/css. Find a collaborator from your slack. Work on it for six weeks. Scoping this can be hard, but your new colleagues and your collaborator can work on this with you. *If your language is c++, skip the html/css aspect.
- A community college course in your chosen language
- Stay active in the slack, start building a resume of projects with old jobs relegated to 1-2 lines each.
“But why this and not that?”
There are some pretty opinionated recommendations in the above list! My intention is not to offend but to offer my professional perspective. I really think you can throw a dart and find a perfectly good book to learn with, and as you develop and make connections with people, you’ll find the books you want to read on these topics. They can’t DRM you out of your own physical book, either. If you prefer e-reading or audiobooks (probably a little harder for hands-on computer learning but not to be discounted and plenty powerful still!), please feel free. Personally, I like to have the paper book, and find it’s harder to ignore than a PDF in yet another browser tab, competing for my attention with social media and whatever else I’m looking at at the moment. This isn’t a program I am administering, it is a set of guidelines I am recommending.
I feel that Git is something that is best suited to personal instruction, so instead of videos, you could ask a friend in your new slack for an intro if that is appropriate, or honestly if you’ve read this far and you’re still interested, I will try to make time for this for you, the reader!
If you’re going to learn a cloud hosting system, just learn AWS. GCP and Azure exist, but the ideas are the same so using a different one after learning a bit about AWS is not too big a lift. AWS is used all over and defined the game. Just be careful with the free tier if/when you start making infrastructure on there.
I think that this curriculum is missing an introduction to databases, and I really welcome your feedback on where that would fit in this setup.
The Phoenix Project and Forge Your Future might seem like odd items out in this list. However, TPP is a business of technology book that is well written and exciting and ~fictionalized, and the insights it offers are innumerable and years later, I find myself thinking about it and recommending it. Forge Your Future with Open Source is a how-to for getting involved with Open Source, which is a common but challenging recommendation for newbies, and this book explains and demystifies – and justifies! – how and why to get involved at this level.
Don’t sleep on the slack. Seriously, do not proceed without step 1! Join the language slack, get involved, get to know people, make it part of your community and your life and this program. You will not get a job if you don’t make friends in this network of people. Folks hire their friends. If you’re a beginner, you simply will not get a job over someone else if you are a total unknown. Once you have the resume, this will be less (or differently) important, but you probably don’t yet, so it’s time to add to the rich community of this language with your awesomeness! And you’ll be adding as much as you are receiving! Look for other questions to answer, ways to help, volunteer opportunities, and the “payoff” in lifetime connections and strength of networking will be utterly invaluable.
Thanks for reading! Please comment and let me know what you think! You can also email me at bootcamp at rkode dot com if you would prefer.