The Missing README Software Engineering Links & Resources
Chris Riccomini on November 1, 2021This page contains all books, links, and resources referenced in The Missing README: A Guide for the New Software Engineer. If you find these resources useful, you might enjoy the book! You can buy it on Amazon or anywhere books are sold.
Chapter 1 - The Journey Ahead
A tour of the book and the beginning of your career.
- No references.
Chapter 2 - Getting to Conscious Competence
Skills to learn on the job and what to expect from yourself.
- All You Have to Do Is Ask: How To Master the Most Important Skill for Success
- Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman
- Extreme Programming Explained: Embrace Change
- On Pair Programming
- Presence: Brining your Boldest Self to Your Biggest Challenges
- Space Invaders 77
- Teaching for Learning
Chapter 3 - Working with Code
Working with legacy code and how to prevent technical debt.
- Choose Boring Technology
- The Hard Thing about Hard Things
- How to Write a Git Commit Message
- The Legacy Code Programmer’s Toolbox
- The Mythical Man-Month
- Refactoring: Improving the Design of Existing Code
- TechnicalDebtQuadrant
- Working Effectively with Legacy Code
Chapter 4 - Writing Operable Code
Use metrics, logging, configuration, and write tools to make your software easy to run.
- The Amazon Builders’ Library
- Building Secure & Reliable Systems
- Clean Code
- Code Complete
- OWASP Top Ten
- Site Reliability Engineering
Chapter 5 - Managing Dependencies
Versioning strategies, transitive dependencies, and how to avoid dependency hell.
Chapter 6 - Testing
Testing philosophies and how to write safe, fast, predictable tests.
Chapter 7 - Code Reviews
Learn to make code reviews helpful instead of a nuisance.
Chapter 8 - Delivering Software
Continuous integration and deployment strategies including blue/green deploys, dark launches, and more.
- The Amazon Builders’ Library
- Apache Developers’ & Contributors’ Overview
- Continuous Delivery
- Git for Teams
- An Overview of Packaging for Python
- Preparing Spark Releases
- Release It!
- Site Reliability Engineering
Chapter 9 - Going On-Call
How to go enter your team’s on-call cycle and deal with production incidents.
- A List of Post-mortems!
- Best practices for working with Customer Care
- Incident Postmortem Template
- What Happens When the Pager Goes Off?
- Site Reliability Engineering
Chapter 10 - Technical Design Process
The technical design process, including experiments, problem definition, documentation, and collaboration.
- design_doc_template
- Effective Software Design Documents
- Elements of Style
- Hammock Driven Development
- How to Write Usefully
- Kafka Improvement Proposals
- Manager’s Schedule, Maker’s Schedule
- On Writing Well
- Python Enhancement Proposals
- Rust RFCs
- Write Like You Talk
Chapter 11 - Creating Evolvable Architectures
Build evolvable software using architectural best practices like YAGNI and by learning to maintain compatibility.
- Building Evolutionary Architectures
- Data Mesh
- Designing Data-Intensive Applications
- Elements of Clojure
- How do I make a field “required”, like in Protocol Buffers?
- Implementing Domain Driven Design
- A Philosophy of Software Design
- Simple Made Easy
Chapter 12 - Agile Planning
Learn to participate in Agile development practices like sprint planning, stand-ups, and retrospectives.
Chapter 13 - Working with Managers
Build a healthy relationship with your manaager and learn to work with common management practices like 1:1s.
- An Elegant Puzzle
- The Manager’s Path
- Thanks for the Feedback: The Science and Art of Receiving Feedback Well
- Managing Up
- High Output Management
Chapter 14 - Navigating Your Career
Position yourself to grow into senior or staff and staff roles, and learn to navigate the promotion process.