Other Resources
There are many articles, blogs, books and podcasts that are very interesting for more reading on the topics discussed in class. We’ll update this list as the semester goes, and if you have suggestions of materials to share, please let us know and we’ll add it to the list.
Podcasts
The Software Engineering Radio podcast (also available wherever you get your podcasts) aims to produce educational material for professional softare developers, and includes conversations between experts and researchers on various software engineering topics. Here are a few of our favorites that are most relevant to topics that we cover in this class:
- Donny Nadolny on Debugging Distributed Systems, with Robert Blumen, 2017
- Jafar Soltani on Continuous Delivery for Multiplayer Games, with Nate Black, 2018
- Chris Richardson on Microservice Patterns, with Robert Blumen, 2019
- Margaret Burnett on Gender, Cognitive Styles and Usability Bugs, with Felienne Hermans, 2019
- Michaela Greiler on Code Reviews, with Felienne Hermans, 2020
Code style
- Research paper: To camelcase or under_score, Dave Binkley et al
- Book (free via library): “Refactoring: Improving the Design of Existing Code” By Martin Fowler
The definitive list of “code smells” that should be avoiding in programming, matched up with “refactoring” techniques to improve that code
Debugging
- Book (free via library): “Effective Debugging: 66 Specific Ways to Debug Software and Systems” by Diomidis Spinellis
A helpful guidebook for debugging, laying out different strategies that are effective for testing different kinds of debugging hypotheses.
Design Patterns
- Book (free via library): “Design Patterns Explained: A New Perspective on Object-Oriented Design” by Alan Shalloway and James Trott
In-depth coverage of design patterns, considering why they are important in software development, how to apply them, and descriptions of some common patterns. - Book (free via library): “Refactoring to Patterns” by Joshua Kerievsky
A unification of the class Gang of Four Design Patterns work with Fowler’s refactoring work, with practical example of how to introduce patterns into existing code bases to improve code quality. - “Fundamentals of Software Architecture” By Mark Richards and Neal Ford
An overview of software architectural patterns and their role in successful software projects.
Infrastructure + Operations
- Book (free via library) “Site Reliability Engineering” By Betsy Beyer, Chris Jones, Niall Richard Murphy, Jennifer Petoff
Site Reliability Engineering is a topic very related to software engineering: while software engineers might focus primarily on the design and development of software systems, SRE’s are engineers who focus on the deployment, monitoring and maintenance of that software. This book documents the SRE practices at Google.
JavaScript
- Book (free via library): “Modern JavaScript for the Impatient” by Cay Horstmann
Program Understanding
- Book: “The Programmer’s Brain” by Felienne Hermans)
An early-release text that links studies in human cognition to software engineering taks like reading and writing code.