The “how to get your foot in the door” question is always tricky. Personally, I have found the most success leaning on the power of recruiters and head hunters. This is especially true if you have a less conventional background (no degree) or little experience.
The reason for this is because HR application systems these days nearly universally have some parser binning a large portion of resumes and applications long before a human ever sees them. Don’t have a degree? Binned. Missing a keyword? Binned.
Recruiters will often have direct connections with the hiring managers in their area and be able to “put a good word in” for you. I’ve seen a few people get good results focusing on their LinkedIn profile, reaching out to as many recruiters as possible. Scheduling phone calls or face-to-face conversations is 1000x better than instant messaging.
That being said, you need to impress. Therefore, you should have a strong portfolio or demonstrated experience. You should have a fairly full github profile, with good activity stats. This is what my chart looks like while working a fulltime job and attending university:
If your focus is to find a job, and you’re not working, it should likely be a lot more filled up.
As for what you should put in your portfolio, I want to say it barely matters with one caveat: it needs to be somewhat original, not following a tutorial. There are trends hiring managers see with portfolios that make a lot of candidates look the same. For a long time, TODO apps were the fullstack application to put on your resume. I think some youtube videos told people this so like 4/5 new developers had it as their showcase piece. For the last couple of years, COVID tracker apps have dominated. A lot of people have started shifting to that.
Myself, I’ve had a variety of things I worked on over the years. I built a mario maker clone in a game engine which included a rest api for user management and level storage. I built a fairly substantial container management system that balanaced containers across multiple docker endpoints hosted across different systems. Some C++ client/server applications. I also have a main YouTube channel where I’ve been on-and-off posting tutorials for the more tricky things I’ve learned over the years. Whenever I feel that there wasn’t a good lesson available and I had to struggle for a few hours, I organize the work and condense the knowledge as succinctly as possible. This is good for your portfolio and helps you retain everything.
In the end, find something meaty that you find interesting and try to build it. Stick it on GitHub and look for the next thing. This will set you up to be able to “unstick” yourself, give you a grasp on some of the larger software engineering concerns around architecture and generally make you less annoying to senior engineers. This may sound harsh, but this is some of the justification for paying junior engineers so much less. They take up a lot more of a senior engineer’s time.
Building on that, the final piece of advice I give everyone: never accept a junior/ internship role. It’s more beneficial for you to spend 6 months building an impressive portfolio and getting a full position than settling for a junior role at (usually) a massive pay cut with the same professional responsibilities. Your first role in the industry plays a large role in your career’s short and longterm trajectory (Don, 2012.) The salary difference between a “junior software engineer” and “software engineer” is usually substantial. Think 50–60k/yr to someone else’s 85–100k/yr.
Hope this is useful, sorry for the wall of text. I always have lots to say.
Don. (2012, September 26). How Your Starting Salary Affects Your Career Earnings. 20s Finances. https://www.20sfinances.com/how-your-starting-salary-affects-your-career-earnings/