Some advice I pass along to other software engineers sometimes.
- Meet people! See what you can learn from what they're doing, and maybe you can share what you're learning too. Also, learn about where they're working. You can ask them if they know of any job openings.
- Learning programming/software engineering skills
- FreeCodeCamp - lots of good in-depth tutorials in many different areas (full stack, AI/ML, data science, even data structures/algorithms)
- DataTalksClub - DataTalksClub has free online courses and cohorts for learning data engineering, ML, MLOps. Includes homework as well as projects and a slack community
- Side projects - pick something you want to build (doesn't have to be totally novel or earth shattering), build it, and find ways to go deep (this is the most important part)
- Austin Henley's project ideas
- Publish your side projects in Github. Even if the company you're interviewing at doesn't look at your Github, it's good to have a record of what you learned
- Write learnings in a personal blog - a good way to track what you're learning and also publicly show it
- This also helps you solidify what you're learning. If you can explain it, it means you've learned that topic well
- Start simple. Even text notes saved in a Google doc or Github is better than nothing.
- Dev.to is one example of an online community where people write blogs about their learnings
- Polish up resume.
- Showcase what you've done for the "3 Cs": company, customer, colleagues. How did you bring value to these 3 very important aspects of your job? (the 3 Cs aren't relevant only for interviewing; they're also important in your day to day and affect your career growth!)
- Not only "what you did" but "why it's important".
- Preferably keep it to 1 page
- Always ask clarifying questions (no assumptions, make it clear to yourself and interviewer what you're trying)
- Mock interviews
- Ask friends, school colleagues, etc. if they can help you do mock interviews
- Interviewing.io also provides some anonymous interviews, might cost money
- Youtube mock interviews - Lots of recorded mock interiews on youtube
- Technical interview preparation
- Data structures & algorithms
- Blind 75 - Leetcode questions that are categorized. Very helpful in learning the types of questions interviewers ask
- NeetCode 150 - Blind 75 + 75 more problems
- System design
- Interviewing.io system design guide - system design interview guide (free!). Usually for senior engineers, but also helpful any level of engineer
- Interview preparation newsletters - 2 that I recommend for system design and FAANG interview questions
- ByteByteGo - the authors also have prep books!
- Quastor
- Data structures & algorithms
A lot of the information in books can be found for free on the internet, but books provide a nice packaging of the ideas. A good book's ideas will flow logically, and the structure makes it easy to consume and process these ideas.
Call it soft skills if you want, but these are the skills that actually help you go places and get things done
- Crucial Conversations (Kerry Patterson) - learn how to talk to people effectively
- Never split the difference (Chris Voss) - I'm not great at negotiating things, but this book helped me change how I approach discussions
- Extreme Ownership (Jocko Willink)
More engineering focused
- The Phoenix Project (Gene Kim) - project management in the form of a very relevant story
- Staff Engineer (Will Larson)
- The Staff Engineer's Path (Tanya Reilly)
- The Manager's Path (Camille Fournier)
- The Software Engineer's Guidebook (Gergely Orosz) - note: I did not read this yet, but I have read most of his newsletters and they're packed full of awesome information
- Designing Data Intensive Applications - read this if you want to design highly scalable systems
- A Philosophy of Software Design - A pretty easy read; addresses software complexity and how to break it down
- SRE book - how Google does SRE. You might not be building Google infrastructure, but the philosophy and ideas in this book (e.g. oncall practices) are very helpful