- Proficiency in xyz language is extremely important. I think this is misunderstood to mean that becoming a Python/Typescript/whatever expert is what differentiates the pros from the bros. I would actually recommend studying the theory of programming languages from first principles, instead - Dan Grossman's "Programming Languages" class on Coursera is great for this. It lays the foundation for understanding how any programming language works, from a theoretical and mechanics basis. I was able to pick up new languages and understand concepts in existing languages way, way faster after building this foundation. The "10 hours to Python mastery" types of courses are a waste of time and focus on the wrong things in my opinion - invest the time in foundational knowledge instead.
- YouTube videos and blog posts are sufficient to become a proficient programmer. This is a bit of a con in my opinion. Both formats are like a sugar-heavy diet - you'll feel high and satisfied quickly, but in the long-term, the lack of information in these formats will starve you of high-quality information. Get into a habit of returning to first principles - figure out what the canonical textbooks are for the subject matter you are trying to learn about, acquire them, and read chapters out of them when you are stuck on a problem. This will deepen your understanding and give you a basis for exploring related subjects. Also, read the man page. Read the man page. Read the man page.
Also check out OSSU (https://github.com/ossu), which has a bunch of great recommendations for free/nearly-free courses that will complete a full CS curriculum. I lack a CS degree, so I periodically reference this curriculum when looking for a new subject to study in my downtime.
Happy to talk more if you're interested, we need more smart and capable individuals like yourself in this field.
1. Credentials & connections: You went somewhere (graduated from a good program) and/or know someone who gets your foot in the door. Some FAANGs will hire this way through internships.
2. Horizontal transfers: You're in a company doing something that also has SWE roles, and you ask for a transfer into a team and gradually work your way up, maybe from some adjacent feel (QA, DevOps, UX, etc.)
3. Applications and interviews: It used to be possible to come from no real background except whatever you learned on your own / in school / online / at boot camp, pass some preliminary interviews, and get a job.
#3 used to be very common for most of the people I knew, actually (in small-med local businesses, not big FAANGs), at least from the mid 2000s till during and just after COVID. Then the bubble burst and hundreds of thousands of layoffs happened and I don't think anyone is hiring junior SWEs right now =/ I'm not sure if that pathway will ever come back, since AI can do most of that now. (And yes, nobody knows how we're going to get new seniors if we cut off the pipeline of juniors... but I guess that's a tragedy of the commons situation that no one company wants to try to solve on their own.)
If I were you, I'd try #1 or #2 instead. Does your uni have any IT/SWE-adjacent jobs? Usually they have some website hosting service etc. that they maintain for faculty to use; maybe there's some coding involved in there. Or do you have any connections you can reach out to?
If not, I'm afraid this is very tough time to break in. Even for people with a lot of experience it's really tough.
Maybe if you're going to try applying, having experience in academia could be helpful in verticals that particularly value that, namely government, consulting, R&D, science, pharma, etc.?
Best of luck to you.