Getting hired at a better team/company as a software engineer.

This is not exactly a guide but some thoughts I have had recently after interviewing a few candidates for SE roles.

The Challenge of Hiring Software Engineers

As I've been conducting interviews for software engineering positions across various teams in my company, I've observed a concerning pattern: many candidates lack the fundamental skills required for our team.

Common Interview Challenges

Key issues I've encountered include:

  • Python developers struggling with core language concepts and problem-solving
  • Mid to senior engineers unable to articulate architectural decisions or describe their systems
  • Limited experience with production incident management
  • Unfamiliarity with modern software development practices

Modern Software Engineering Isn't Rocket Science

The field of software engineering is surprisingly approachable – it's one of the aspects that initially drew me to it. While building great software requires careful consideration, and teams benefit from both exceptional performers and reliable contributors, the fundamental principles remain straightforward.

For those seeking to understand these fundamentals, "Software Engineering at Google" is an invaluable resource. Though some might argue that Google's scale isn't relevant to their context, the core principles are universally applicable.

Evaluating Your Team's Engineering Culture

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.

Escaping a Stagnant Team

Begin by attempting to improve your current team environment. Showcase modern practices and tools, demonstrate their value, and encourage adoption. If you consistently encounter resistance or disinterest in improvement, consider exploring new opportunities.

Keep in mind: joining a stronger team requires elevating your own skills first. Hiring managers are typically reluctant to onboard engineers who haven't maintained currency with modern practices or demonstrated thoughtful system ownership.

Pro tip: Professional growth doesn't require overtime. Allocating just one hour daily to learning or experimenting with new debugging approaches can significantly enhance your regular work productivity.

Professional Development Strategy

To position yourself for better opportunities:

  • Read essential software engineering books (both traditional and audiobooks)
  • Follow conference talks (e.g. PyCon for Python developers)
  • Subscribe to engineering blogs from top tech companies
  • Practice coding regularly (whether through LeetCode, personal projects, or contributions to open source)
  • Understand DORA metrics and capabilities
  • While coding challenges and system design interviews aren't perfect, they're valuable when combined with real-world knowledge
  • Use resources like System Design Primer to start learning about larger systems, even if you have not worked on them yourself.

Finding time for professional development can be challenging, particularly with family commitments. However, investing in your growth is essential before expecting others to invest in you.

The Path Forward

The age-old wisdom "Look after the pennies, and the pounds will look after themselves" applies here. By mastering fundamentals and embracing best practices, your growth as a software engineer will naturally follow. Focus on steady, intentional improvement rather than seeking dramatic overnight changes.