As a mid-level (not senior yet) SDE, what are the core skills I should be consistently developing to grow my career, not only for promotion within the company, but also for personal growth, and to get ready for diverse opportunities years ahead?
I know we have covered lots of topics, like DS & Algo for interviews in case you suddenly get laid off and you are looking for opportunities, communicate well with colleagues to make impact, and manage up to avoid getting into PIP, System Design skills.... But is there a list of Soft AND Hard skills that are core to a engineer's career in long term?
Make friends with coworkers (engineers, PMs, Designers, anyone who works in your company). Share and teach about the skills you have, your unique culture, hobbies, etc. And learn what they are doing and their backgrounds with genuine interest. Diverse perspectives help you grow.
Learn to the identity comfort zone and complacency in yourself, and kill them as soon as you find them.
Other things you can do are: Get a mentor in and out of the company. Read books on technical topics.
Start writing. Lamport once said, "If you’re thinking without writing, you only think you’re thinking." and that means writing helps in thinking. If you are not writing, then you are not thinking (kind of). If you are not thinking, then others are thinking for you.
I have a lot of thoughts here, but I'll keep it short with my Top 3 for each alongside my top recommended resource for each one.
I wanted to include code review, but I feel like there's a big overlap between it and code quality and it's also sort of a soft skill as it's very communication-oriented.
For additional inspiration, I recommend this thread as well: "What are software engineering fundamentals?"
At a high-level, your mindset should evolve over time by moving away from overly tactical and technical learning. This is very important as you grow from mid-level -> senior and effectively required growing from senior -> staff. The technical tactics (i.e. "This is the best way to write a RESTful service in Python") change all the time in software. Fundamentals like knowing how users will stretch your code to the breaking point and understanding how to win over other people to push big projects - These are concepts that will stay the same and remain useful 5, 10, and even 25+ years into the future.