Bibliography

Brown2011
Amy Brown and Greg Wilson (eds.): The Architecture of Open Source Applications: Elegance, Evolution, and a Few Fearless Hacks. Lulu, 2011, 978-1257638017. Descriptions of the architecture of two dozen open source systems written by the people who created them.
Brown2012
Amy Brown and Greg Wilson (eds.): The Architecture of Open Source Applications: Structure, Scale, and a Few More Fearless Hacks. Lulu, 2012, 978-0201103427. More descriptions open source system architectures written by those systems' creators.
Brown2016
Amy Brown and Michael DiBernardo (eds.): 500 Lines or Less: Experienced Programmers Solve Interesting Problems. Lulu, 2016, 978-1329871274. Scale models of real applications, with commentary from their creators.
Casciaro2020
Mario Casciaro and Luciano Mammino: Node.js Design Patterns. Packt, 2020, 978-1839214110. A readable, up-to-date technical exploration of Node's more advanced capabilities.
Davis2018
Ashley Davis: Data Wrangling with JavaScript. Manning, 2018, 978-1617294846. A step-by-step guide to managing data with JavaScript.
Fucci2016
Davide Fucci, Giuseppe Scanniello, Simone Romano, Martin Shepperd, Boyce Sigweni, Fernando Uyaguari, Burak Turhan, Natalia Juristo, and Markku Oivo: "An External Replication on the Effects of Test-driven Development Using a Multi-site Blind Analysis Approach". ESEM'16, 10.1145/2961111.2962592. The latest in a long line of studies to find that test-driven development has little or no impact on development time or code quality.
Fucci2017
Davide Fucci, Hakan Erdogmus, Burak Turhan, Markku Oivo, and Natalia Juristo: "A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?". IEEE Transactions on Software Engineering, 43(7), 2017, 10.1109/tse.2016.2616877. An evidence-based look at whether writing tests first produces better code faster.
Kernighan1979
Brian W. Kernighan and P. J. Plauger: The Elements of Programming Style. McGraw-Hill, 1979, 978-0070342071. An early and influential description of the Unix programming philosophy.
Kernighan1981
Brian W. Kernighan and P. J. Plauger: Software Tools in Pascal. Addison-Wesley Professional, 1981, 978-0201103427. Teaches readers how to write good programs by showing them how to build good tools.
Kernighan1983
Brian W. Kernighan and Rob Pike: The Unix Programming Environment. Prentice-Hall, 1983, 978-0139376818. An influential early description of Unix.
Kernighan1988
Brian W. Kernighan and Dennis M. Ritchie: The C Programming Language. Prentice-Hall, 1988, 978-0131103627. The book that made C a popular programming language.
Meszaros2007
Gerard Meszaros: xUnit Test Patterns: Refactoring Test Code. Addison-Wesley, 2007, 978-0131495050. A guide to writing good unit tests within a standard framework.
Minahan1986
Anne Minahan: "Martha's Rules". Affilia, 1(2), 1986, 10.1177/088610998600100206. Describes a lightweight set of rules for consensus-based decision making.
Oram2007
Andy Oram and Greg Wilson (eds.): Beautiful Code: Leading Programmers Explain How They Think. O'Reilly, 2007, 978-0596510046. Chapter-length descriptions and analyses of programmers' favorite pieces of software.
Osmani2017
Addy Osmani: "Learning JavaScript Design Patterns". A guide to design patterns using JavaScript.
Petzold2008
Charles Petzold: The Annotated Turing. Wiley, 2008, 978-0470229057. A fascinating look at one of the pivotal moments in the history of computing.
Smith2011
Peter Smith: Software Build Systems: Principles and Experience. Addison-Wesley Professional, 2011, 978-0134185965. A practical overview of the build process and tools to support it.
Tudose2020
Cătălin Tudose: JUnit in Action. Manning, 2020, 978-1617297045. A guide to the most popular unit testing framework for Java.