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 me know and I'll add it to the list.
Code style
- Research paper: To camelcase or underscore, Dave Binkley et al
- Research paper: I know what you did last summer: an investigation of how developers spend their time, Minelli, Mocci and Lanza
- Research paper: A metric for software readability, Buse and Weimer
- Book: "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: "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: "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: "Refactoring to Patterns" by Joshua Kerievsky A unification of the classic 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: "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
Program Understanding
- Book: "The Programmer's Brain" by Felienne Hermans A survey of research on programming and cognition, covering topics such as how to read code more effectively and how to write code that is easier to read and share.