The Missing README front cover

The Missing README

A Guide for the New Software Engineer
by Chris Riccomini and Dmitriy Ryaboy
August 2021, 288 pp.
ISBN-13: 
9781718501836

Download Chapter 6: TESTING

For new software engineers, knowing how to program is only half the battle. You’ll quickly find that many of the skills and processes key to your success are not taught in any school or bootcamp. The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade.

Early chapters explain what to expect when you begin your career at a company. The book’s middle section expands your technical education, teaching you how to work with existing codebases, address and prevent technical debt, write production-grade software, manage dependencies, test effectively, do code reviews, safely deploy software, design evolvable architectures, and handle incidents when you’re on-call. Additional chapters cover planning and interpersonal skills such as Agile planning, working effectively with your manager, and growing to senior levels and beyond.

You’ll learn:

  • How to use the legacy code change algorithm, and leave code cleaner than you found it
  • How to write operable code with logging, metrics, configuration, and defensive programming
  • How to write deterministic tests, submit code reviews, and give feedback on other people’s code
  • The technical design process, including experiments, problem definition, documentation, and collaboration
  • What to do when you are on-call, and how to navigate production incidents
  • Architectural techniques that make code change easier
  • Agile development practices like sprint planning, stand-ups, and retrospectives

This is the book your tech lead wishes every new engineer would read before they start. By the end, you’ll know what it takes to transition into the workplace–from CS classes or bootcamps to professional software engineering.

Author Bio 

Chris Riccomini is a software engineer, startup investor, and advisor with more than a decade of experience at major tech companies such as PayPal, LinkedIn, and WePay. He has been involved in open source throughout his career and is the author of Apache Samza.

Dmitriy Ryaboy is a software engineer and engineering manager. He’s worked at a variety of companies and organizations, including Lawrence Berkeley National Laboratory, Cloudera, and Twitter. He helped create and grow multiple open-source projects, including Apache Parquet. Dmitriy is currently the Vice President of software engineering at Zymergen.

Table of contents 

Preface
Chapter 1: The Journey Ahead
Chapter 2: Getting to Conscious Competence
Chapter 3: Working with Code
Chapter 4: Writing Operable Code
Chapter 5: Managing Dependencies
Chapter 6: Testing
Chapter 7: Code Reviews
Chapter 8: Delivering Software
Chapter 9: Going On-Call
Chapter 10: Technical Design Process
Chapter 11: Creating Evolvable Architectures
Chapter 12: Agile Planning
Chapter 13: Working with Managers
Chapter 14: Navigating Your Career

Reviews 

“This is an impressively thorough overview of the many skills a new software engineer will need to learn, beyond coding, to be successful in the job. A great book for new college grads and those just entering the profession who want to see what the next phase of their career curriculum will be.”
—Camille Fournier, former Vice President of Technology at Goldman Sachs and author of The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change

"The Missing README is exactly the book I wish I had when I started my career. Fun to read, full of sage advice and priceless stories. It is like having coffee with a senior mentor, except you don't even need to come up with the right questions. Very useful for engineers early in their career, and senior engineers who wonder what they missed."
—Gwen Shapira, Engineering Leader at Confluent

"The Missing README is an excellent practical introduction to the day-to-day realities of software engineering in the 21st century. It covers the wide range of essential skills, techniques and heuristics that you'll need to be an effective part of any team that builds, deploys and operates production systems."
—Adewale Oshineye, Developer Advocate at Google and co-author of Apprenticeship Patterns