HACKER Q&A
📣 djellybeans

Self-taught roadmap to multiple big tech offers in a few years?


This question might've been asked a few times here, but I've added my personal spin to help be more specific.

This is not a "I want to become a career developer after many years in an unrelated career" situation. This is "I tried building my dev career for 10 years and want to (almost completely) start over".

I have held multiple jobs as a contract web developer, doing sporadic PHP and Ruby work. While I'm not exactly a stranger to cubicles and meeting rooms, my position as a temp worker really doesn't allow me to grow or make very meaningful contributions to a company.

In addition, I don't get compensated well for an engineer (US citizen for context). Most I've made in a single year is $55k gross in a MCOL area. Almost all is 1099 work

Back to the problem I want to figure out, I know I have a difficult road ahead, what with 2.5 years unemployment and sporadic contract work. Over a thousand job applications and zero offers. I have no interest in trying to run a business. My priority is financial stability (never had 401k or company health insurance) and having a more "mainstream" software engineer career.

(I'll also need to rebuild my network almost from scratch as my former colleagues do not reply to my inquiries about jobs anymore. It's kind of difficult with lockdowns still putting IRL meetups on hold, but I'm part of a few tech professional chat groups.)

The usual route for a CS student is to maintain good grades, participate in research, academic publishing and extracurriculars to help them get good internships, and one of them may convert to a FT job, all in a few years.

I am trying to construct a similar "self-taught" version plan of that. Take those gradual steps over a span of 2-3 years. Complete some similar bodies of work that gets the large companies want to interview me, and hopefully get a couple offers lined up.

I'm not asking for shortcuts. I just want to expand my options beyond just doing interview prep and digging into my network, which after 2 years without a single "yes", feels like I'm beating a dead horse.


  👤 Blackstrat Accepted Answer ✓
Without knowing your age, your actual background, business knowledge, etc. this is just guesswork. It sounds like you’ve approached your career somewhat haphazardly. Further, it seems you’ve alienated your network. That’s a red flag that shows up when we start looking at references. I’m assuming you don’t have drug or alcohol related issues. If you do, deal with them first. Your resume likely has significant gaps, probably not any specific industry focus, and based on your plan above, no education in software development, computer science, etc. Having hired many developers in my time, I can tell you that you have an uphill battle. So my first question is what are you bringing to the table? What are you really good at? What business domains or industries do you know well? What makes you a better choice for the hiring manager than other candidates? Do you really want to be in software development or do you just like the earnings potential? If by Big Tech offers, you are talking FAANG then as others have stated, it’s not a likely outcome. Best case, grinding through a CS like self study program over a couple of years is a big undertaking. My suggestion may offer a viable alternative solution. Instead of pursuing a Big Tech job, I would suggest signing on with some staffing firm that offers full benefits, e.g. Robert Half, any similar small local firm, etc. that finds the jobs and places individuals in companies. And should you manage a placement, work your tail off learning not only the technology but the line of business. And deliver quality product. Always be learning and always accept whatever assignments, regardless of whether they sound particularly exciting. Your goal is to build a track record of results, preferably with a specific focus. Once you start building a better resume, think about completing your education more formally. Bottom line, you have a tough road ahead of you that will require discipline, focus, and commitment. Can it be done? Yes, others have done it. Can you do it? That’s up to you.

👤 djellybeans
A lot of questions are being asked already, many of them similar, so I'll try my best to answer most of them, starting with the basics.

- 4 year Bachelor's degree in Fine arts (digital media concentration)*

- Male, age 39

- from 2008-14 my jobs came from Craigslist. Call it a habit from applying to PT jobs in college. I moved onto LinkedIn and other more "real" career boards in 2015 and the job search got much tougher

- I would count at least 2000 applications from 2015 onward. No offers came from applying on LinkedIn etc. Instead they were all from word of mouth from a local tech group that I am a part of. All of them part time, and temp contract jobs

- At least 1000 applications from 2020-present, interviewed at around 20 companies. Most with LinkedIn Easy Apply. A few interviews from direct emails from some manager/sourcer that came across my resume.

- I took an application break to cut back on burnout. The last 6 months are almost application-free

- Nearly all jobs applied are for software engineering. 95% are mid-level or lower rest are senior-level (just to feel things out). I might get as far as 3 rounds with a few interviews.

* Actual time it took to finish the degree was 6 years because I changed majors prior. At year 5 I was in my final year in Art, and I also had a growing interest in comp. sci, but I had to make a tough choice. Graduate at >5 years with the BA degree, or double major BS in CS with Art graduating in >8 years. I thought it would look awful to stay in college that long (plus my debt really started growing at that time) so I cut my losses short and graduated with just the BA.


👤 gregjor
You list the trifecta of red flags for employers:

* No academic or employment history that communicates significant expertise in software development.

* Scattershot and stale work experience that looks bad. At best it looks like you’re not serious about your career. At worst it looks like you have a problem keeping a job.

* Little or no professional network, probably the most important resource when looking for work.

On top of that applying to hundreds of jobs online is the least efficient way to find a job.

To fix these problems you need to reset.

1. Study modern web development (or whatever you want to do) so you can get through interviews and actually do the work when an opportunity comes your way. You can find plenty of free resources online, you just have to put the effort in. For web development that means, at minimum, knowing HTML, CSS, Javascript, a back-end language like PHP or C#, relational databases such as MySQL or PostgreSQL. You should understand HTTP, SSL, DNS, and cloud services reasonably well. I have done WordPress work for $150/hr, and there’s plenty of that work available.

2. Find a small or medium size company that doesn’t have its own IT/development staff. That includes many companies, you will have to ask around. If I were in your situation I would look for companies in my area that are advertising for developers and contact the hiring manager directly, even going to the office in person. Show some initiative. When someone does take a chance on you bust your ass to solve business problems and deliver value. The best way to learn programming is on the job, but you need to add value, not just treat the job as a training opportunity or stepping stone.

3. Socialize with colleagues and people you know and meet who have jobs and run businesses. Not just other programmers — you can get job leads from people who work in management, marketing, sales, finance, etc. Marketing departments often have good budgets and outsource web work because the IT staff doesn’t have the skill or bandwidth, so cast a wider net for professional contacts.

I have some articles on my site typicalprogrammer.com you might find useful (free, no ads).

Good luck.


👤 edude03
It's hard to say without more details however the bit about applying to 1000 jobs definitely raised my eyebrows.

How do you apply to jobs? If you're simply going on indeed or LinkedIn and clicking easy apply I can see why you might not get many responses.

For reference I think I've only applied to maybe 20 jobs in my life and got at least a first interview for 18 of them. That said my process for applying to a job takes at least a few hours if not days, because I research the company, try and understand why they're hiring, try and find people who work their to talk to, then I tailor my resume to the position and apply by asking someone to pass it along to the relevant person. I don't have A CS degree, a deep network or any notable opensource projects so I'm fairly confident this approach would work for anyone.


👤 kleinsch
I do interviews at a FAANG. If you don’t want to post identifying info here, send me your resume and a paragraph intro and I’ll tell you what gaps hiring managers are seeing. Email is in my profile.

👤 bko
A few things that aren't clear from your post.

- Do you have a degree? If so, which subject

- You claimed you sent in over a thousand job applications and zero offers. What kind of jobs are you applying for? How far along in the process do you get?

I think your problem can be broken down into two parts: getting an interview and performing well in the interview. The first part is trickier IMO because its kind of a black box, although I managed to get contacted by big tech without a CS degree. The second part doesn't take years, it takes months of just cramming leetcode interviews. It's no secret what they look for and ask. They want you to do well and give you all the tools to do well. It's just putting in the effort by grinding leetcode an hour or two a day for a month or two.


👤 triceratops
> Over a thousand job applications and zero offers

That doesn't tell us very much. How many interviews did you get from those applications? Are you drawing interest but not converting? Or is there zero interest?

> my former colleagues do not reply to my inquiries about jobs anymore

Because you've asked them too many times already?

Do you have any insight into why none of your your temp stints have turned into permanent roles?

You mentioned you live in a MCOL area but where, exactly? Have you tried changing your location on LinkedIn to a hot tech area, such as the Bay Area, Seattle, or NYC? A lot of interviews are all online now. And even if not, you can pay out of pocket to fly in.


👤 weatherlite
Big Tech is hard. Even if you can get an interview you're competing against so many people it's not likely you will get in (statistically). But let's rephrase what you're asking to "I want to get good/better offers" - the process you need to go through to get those is the same as to get into FAANG. Namely - drill hard on job interviews. You can get good offers from smaller businesses - those will usually actually test your skills as an actual software developer, so make sure you are skilled. If you want more famous names the interviews tend to be more algorithmic. So what is the problem - is the problem your resume isn't actually yielding any interview opportunities? In that case consult with an HR pro, you will need to embellish your resume a bit. If the problem is you're getting interviews but not passing - drill as I said. It's also a matter of luck so you just have to keep trying.

FAANG is a nice goal to have, I don't want to dissuade you from trying, just keep in mind many many people want to be there and there isn't room for everyone. There's plenty of good jobs outside of FAANG.

Another thing that can really help is having a thing that separates you from the crowd - a good Github profile, a good technical blog or even a good Stackoverflow profile (it actually helped me get an offer as the manager was impressed I had a nice Stackoverflow score).


👤 wagslane
So interesting that you post this, it's really what I've been working on in my spare time for the last few years. I have a GitHub with my current roadmap: https://GitHub.com/bootdotdev/curriculum

👤 Spooky23
Take a civil service exam and get a gig with the government or university.

You need to establish some normalcy.


👤 yowlingcat
It's hard to give advice as you haven't given a sense of what your career and academic history looks like. Some questions:

- Are you self taught?

- Do you have a bachelor's degree? One in CS?

- What does your work history look like; have you been full-time employed at any point since entering the work force or has it always been part time contract work?

- Most importantly, why have you only done contract work -- is there something that has prevented you over the course of the last decade from applying to and succeeding in full-time work?

- Do you simply not want it, have you tried it and it hasn't worked out, perhaps a combination of the two?

Based on that you can determine what your next paths forward are.

One approach is applicable if the will to work in a professional capacity is there, as well as the capability, and that all that's missing is that, for lack of a better term, you've been on "sabbatical." If that's the case, doing work on Toptal/Gun.IO/Facet (probably would recommend any of those over Upwork although it is an option of last resort). You should be able to get a decent stream of contract work that way, sharpen your skills and then eventually move to a FT position from there. The most important thing is to get into a rhythm where you are doing work on a regular basis that is useful to your employer so that you have something of value for when you decide to move.

Another approach is taking a reset because you can't do the former. Ways to do a reset include either a bootcamp or an MS program (assuming you have a bachelor's; if not, the bachelor's is an option), as both will likely have placement programs after you complete the program. They will also give you a foundation of some kind to think about problem solving in a structured environment with instructors, all of which increases the possibility you'll have a shot at finding gainful employment.


👤 Hermitian909
As others have pointed out, more background on what your current skillset would make it easier to give advice, I’ll share my journey though.

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.


👤 groffee
Honestly if it's not happened for you in 10 years, it won't happen now.

You can't change who you are.


👤 yourapostasy
Please list all your skills.

PHP and Ruby cannot be your only skills at this stage of your career.

The bar for US-based web developers these days is usually full-stack; lower than that and your competition are offshore developers. We're usually looking for skills in JavaScript, CSS, debugging inside the browser, NPM, SQL in a couple different flavors, basic network troubleshooting (know your way around confirming DNS is working, SSH key exchange debugging, pull and interpret the basics of a TCP dump), SSL certificate management (know how to create a CSR to installing a certificate in a trust store, manipulate a trust store, pull a cert from a server, renew a cert), working in two out of the top three cloud vendors enough to create your own free tier tiny homelab, CI/CD (Git/GitHub, Jenkins, CircleCI), Jira, and containers. This is for a Linux-oriented stack. Decide whether you want to go towards a Linux-oriented skills portfolio or Microsoft-oriented one, trying to tackle both in your situation will quickly lead to frustration, leave it for later when you're established if you really want to pick up both.

One out of many possible "self-taught" version plan of the "usual route for a CS student" for your current situation is to volunteer in your gigs going forward to help anytime there is any crisis or blocker outside your competence area, outside of billable hours. Promise you won't ask questions, only offer remedies to try if you know of any. Start by offering to take on-call duty off the clock as the go to for applications you develop for the operations team to turn to for X months, for as long as you hold a gig there. This will keenly develop your sense of where your application fits into the overall infrastructure, and how to defensively code against false positive alerts that your application "failed"/"hung"/"crashed". When you get to a point that you don't get calls for months at a time, then broaden your offer to help out issues only indirectly related to your application(s), also off the clock.

Actively listen into the conversations about the issues. At first, this means furious Googling of terms you don't understand, more furious Googling of a seemingly straight vertical wall of seemingly impenetrable technologies, and challenging yourself to understand every character of every command and operation you see spill across the screen. Every flag argument, every value of each flag argument, every command, etc. Challenge yourself to understand the interrelationships between the technologies. Offer to record the session for attaching to the issue ticket, and if transcription is available, enable it. Review the recordings over and over until you understand what you are seeing, or until the next problem comes along, whichever comes first.

Then challenge yourself to understand why someone typed a command when they did, what information they were trying to gather, who they needed help from, how they knew they needed that command at that time. Then challenge yourself to work this all out as it is all going in real time. Then challenge yourself in real incidents to pre-anticipate what the lead troubleshooting engineer is doing before they do it.

When you get to the point you're correctly anticipating >80% of the time what they're going to do before they do it, start offering your own suggestions of what to try at the rate of once per session. Feel your way towards increasing the number of suggestions of what to try before it is done. Simultaneously, broaden your understanding of the technologies by implementing them yourself on your own in your own cloud account.

When you start being consistently asked what you think during these troubleshooting sessions, start to volunteer to actually fix the problems as they come up. When you start consistently solving these problems, switch your time spent on them to billable hours if you haven't already.

Wrap all this in a can-do, pleasant, easy to work with personality no matter how much someone goads you. Focus on the mission, get it delivered, pull it across the finish line, positive persona. Be the relentlessly, persistently optimistic glue that gels together the team even under the most stressful production break fix sessions where millions of USD are being lost per unit time, and executive VP's are screaming unhinged into the conference call because the CTO, CIO and CEO are on the other line making ominous noises, because they are on their other line with the BoD making ominous noises.

By this point, you will be asked to switch contract to perm way more than you will ever get offers from blind-applications like you are submitting now. Recognized troubleshooting skills as the "go to debugger" across disparate problem and skill domains is far more rare than any kind of roadmap, self-taught or college-taught, and are highly-sought after no matter the macroeconomic climate. People who can solve problems consistently and faster than anyone else available are the ones who get return calls and high compensation.

Every single contract you've had up to now has offered you this opportunity in the guise of even the smallest problems.


👤 Hakashiro
> I don't get compensated well > 55k

Lol.