A Book on Growing as a Software Engineer

I'm writing a book for developers who want to grow to be better software engineers. Sign up for updates on its progress and see the website for more information.

Who am I?

I'm a developer, who, after a decade of working at startups, Silicon Valley and European tech companies - Skype, Microsoft, Skyscanner, Uber - moved into engineering management. As a developer, I grew to senior and principal engineering positions. I worked across the stack, doing thick client, web, mobile, backend development, working with at scale with mobile and distributed systems. As a manager, I coached and mentored engineers with different experience levels and backgrounds. I helped them to grow further, become more efficient, and successfully get promoted to the next level.

What will be in the book?

The book offers guidance on how to grow as an engineer, at a tech company, all the way to staff/principal. It follows the structure of a typical career path of a software engineer, from starting off as a software developer, levelling up to senior engineer, all the way to being successful at the staff/principle/distinguished position, making an organization-wide impact. It summarizes key lessons learned during my 10+ years developer career and the last few years of mentoring, coaching and promoting engineers.

The book also addresses the most common challenges engineers working at tech companies have and at fast-growing startups have. It touches on using modern tools and operating large systems day-to-day.

Who is this book for?

It's for software developers, who work at a company and want to grow further. My experience comes from working at tech companies and startups - however, the advice shared should be applicable across software engineering, as a whole. It covers the "hard" parts of software engineering (code, architecture, getting things done), the "softer" parts (communication, teamwork, influencing others), and dives into career progression.

It's for engineering leads and managers, who want to get hands-on tips on how to mentor, coach, and grow engineers into better versions of themselves.

Much of the content of the book comes from my personal journey and from having helped many engineers grow faster. It's especially useful for people working at or wanting to work at tech companies and startups.

How is this book different from others?

I've found very few good resources on how to grow as a software engineer, outside of getting better at coding. There are a lot of good books on how to write clean code and refactor well, but few ones that help answer the question: "how can I level up, as a software developer, working at a tech company?". Since becoming a manager, I found myself helping developers grow to the next level. The more people I've mentored, the more I found myself repeating similar advice. While some of this advice was technical, some of it had nothing to with coding. It did have a lot to do with communication, influencing people, making your voice heard, thinking strategically and owning your career.

Table of Contents

Areas the book will cover:

Part 1: Developer Career Fundamentals

  • Career paths at different types of companies
  • Owning your career. Performance reviews, promotions and switching jobs.
  • Lifelong learning: the base of a successful career.
  • Thriving in different environments: from startups, through high-growth companies, to large tech companies.

Part 2: The Competent Software Developer
Traits to become a dependable software engineer (the SE1/SE2 equivalent of most tech companies).

  • Software development basics from language proficiency to refactoring and readable code.
  • Getting things done, unblocking yourself and social capital.
  • Tools of the productive engineer: iterating quickly, testing, CI/CD.
  • Thriving at this level and levelling up.

Part 3: The Well-Rounded Senior
Becoming the pragmatic, senior engineer who have the depth and breadth of knowledge to reliably solve challenging problems.

  • Software engineering: depth vs breadth, tech debt and scaling best practices.
  • Shipping in production.
  • Getting things done: short iterations, getting things properly done.
  • Collaboration and teamwork: code reviews, mentoring and giving feedback.
  • Software architecture: planning, RFCs and distributed systems basics.
  • Thriving at this level and levelling up.

Part 4: The Pragmatic Tech lead
Skills to become an effective tech lead/team lead. Tech leads are usually senior engineers, with additional responsibilities / challenges.

  • Project management: practical skills to successfully ship in tech companies.
  • Team dynamics and team processes.
  • Communication and collaboration: working with stakeholders, mis-understandings and preventing them.
  • Getting things done: orchestrating large efforts, long-running projects and migrations.
  • Servant leadership: traits of a positive lead and growing others.
  • Thriving at this level and levelling up.

Part 5: The Role-Model Principal/Staff/Distinguished Engineer
Engineers who have company-wide/organization-wide impact and are often on a parallel track to engineering management.

  • Making company-wide impact
  • Software engineering: upping the quality of engineering org-wide. Detecting & resolving software engineering bottlenecks.
  • Software architecture: scalable and resilient architecture, architecture that actually ships into production.
  • Collaboration: influencing others, pairing with the business and scaling yourself
  • Thriving at this level. What is beyond these principal/staff/distinguished?

I'm interested! What next?

You can also help shape the content of the book, in two ways: