This is not exactly a guide but some thoughts I have had recently after interviewing a few candidates for SE roles.
I've been conducting numerous interviews recently, hiring software engineers for both my team and other teams within my company. While I've met many wonderful candidates, I've noticed a concerning pattern: many engineers lack the fundamental skills needed for modern software engineering teams.
Here are some recurring issues I've encountered:
Software engineering is surprisingly approachable – that's partly why I was drawn to it. While building great software requires careful consideration, and there's room for both "10x engineers" and reliable team players, the fundamental principles remain consistent.
For anyone looking to understand these fundamentals, I highly recommend reading "Software Engineering at Google". While some might argue, "but we're not operating at Google's scale!" the core principles apply universally.
I strongly recommend reading "The Phoenix Project". This novel follows Parts Unlimited's transformation from traditional enterprise software development to embracing DevOps principles. It's an excellent benchmark: if your team's processes align more with the "before" than the "after," it's time for change – either within your team or by finding a new one.
Start by trying to elevate your current team. Introduce modern practices and tools, demonstrate their benefits, and encourage adoption. However, if you consistently face resistance or apathy toward improvement, it might be time to move on.
Remember: to join a better team, you need to level up your skills first. Hiring managers are hesitant to bring on engineers who haven't kept pace with modern practices or shown thoughtful system ownership.
Pro tip: You don't need to work overtime to improve. Dedicate just one hour daily to learning new skills or trying new debugging approaches. This investment will make you more productive during your regular working hours.
To position yourself for better opportunities:
Finding time for professional development can be challenging, especially if you have young children. However, you must invest in yourself before expecting others to invest in you.
As the saying goes, "Look after the pennies, and the pounds will look after themselves." Master the fundamentals, embrace best practices, and you'll naturally evolve into a better software engineer. The key is consistent, deliberate improvement rather than dramatic overnight changes.