My bonafides: I’m a college drop-out with a background in mathematics who went from teaching and having almost no coding experience to working at a big tech company in SV in ~3 years. The result is not typical, but I’ve seen it repeated enough to know that I’m not just a fluke. I recently saw another college drop-out make the jump in 18 months.
I befriended a software engineer enough to get a basic idea of what was needed to break into the industry. I needed to learn web development and be able to deploy apps that worked and were well tested. I also needed to pass whiteboard tests.
I started with “eloquent javascript” and learned how to write JS and use the DOM. I then taught myself React, express, and just enough SQL to write things to postgres, and set up a super simple app. I then deployed the app to heroku. After deploying to heroku, I learned to redeploy it to AWS. I added on various features that felt “production-y” like OAuth with Google to show I could write business code.
While I was working on this project I read “cracking the coding interview” and began doing what we now call leetcodes. I also accompanied my leetcodes with Skienna’s “Algorithm design manual” for when I got out of my algorithmic depth. I was also reading hacker news which was very useful in filling out “unknown unknowns” like the dangers of having too many dependencies etc. The site also pointed me to some inspiring characters like Rich Hickey from whom I derived much of my early engineering philosophies.
A note here: Because of my math background, algorithms were easier for me than they will be for most people. I had been taking graduate courses in mathematics when I dropped out (long story) and nothing I’ve encountered in CS has been mathematically difficult by comparison.
After 6 months of prepping like this, hundreds of applications, and doing a lot of networking in the bay area was enough to get a 1099 contracting gig. I kept studying very hard during my time contracting. I read multiple books on design to make up for my lackluster CS skills, “Don’t make me think”, “Cadence and slang” “About Face” all come to mind. The sensibilities from those books gave me a lot of rope with the team as I learned to not write terrible code a lot of the basics of development (command line tools, how to write a PR, etc.)
I also continued to study CS. I worked my way through CLRS (“Algorithms”), “Operating Systems: Three Easy Pieces”, “Engineering a Compiler”, and “Networking, a top down approach”. I did most of the problems in these books as well as projects meant to be paired with them (either from the book or from university sites I could find). This took me roughly 2 years on top of my job, which I converted to full time from contract. I then went back to job prepping, practicing leetcode every day. After 3 months I started interviewing and got multiple offers. I’ve been at big companies ever since.
In retrospect, I probably over-prepared for the jump and could have made it faster. The bar for a software engineer at a large company was a lot lower than I imagined. I’ve continued to study through other textbooks, I’d say it’s made me stronger than most of my peers who took classes that may have targeted only a few chapters.
I’d say if you can be disciplined enough to study in this way I imagine you could get better paying tech job as well. Best of luck.