Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs
Adam Tornhill

#Software
#Code
#Crime_Scene
Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you can apply strategies to identify problems in your existing code, assess refactoring direction, and understand how your team influences the software architecture. With its unique blend of criminal psychology and code analysis, Your Code as a Crime Scene arms you with the techniques you need to take on any codebase, no matter what programming language you use.
Software development might well be the most challenging task humanity ever attempted. As systems scale up, they also become increasingly complex, expensive to maintain, and difficult to reason about. We can always write more tests, try to refactor, and even fire up a debugger to understand complex coding constructs. That's a great starting point, but you can do so much better.
Take inspiration from forensic psychology techniques to understand and improve existing code. Visualize codebases via a geographic profile from commit data to find development hotspots, prioritize technical debt, and uncover hidden dependencies. Get data and develop strategies to make the business case for larger refactorings. Detect and fix organizational problems from the vantage point of the software architecture to remove bottlenecks for the teams.
The original Your Code as a Crime Scene from 2014 pioneered techniques for understanding the intersection of people and code. This new edition reflects a decade of additional experience from hundreds of projects. Updated techniques, novel case studies, and extensive new material adds to the strengths of this cult classic.
Change how you view software development and join the hunt for better code!
What You Need:
You need to be comfortable reading code. You also need to use Git (or Subversion, Mercurial or similar version-control tool).
Part I-Identify Code That's Hard to Understand
1. Optimize for Understanding
2. Treat Your Code as a Crime Scene
3. Discover Hotspots: Create an Offender Profile of Code
4. Hotspots Applied: Visualize Code from t he People Side
5. Detect Deteriorating Structures
6. Remediate Complicated Code
7. Communicate t he Business Impact of Technical Debt
Part II-Build Supportive Software Architectures
8. Use Code as a Cooperative Witness
9. Architectural Reviews: Support Redesigns with Data
10. Use Beauty as a Guiding Principle
11. Expose Hidden Bottlenecks: Delivery and Automation
Part Ill-Meet the Social Side of Your Code
12. Meet Norms. Groups. and False Serial Killers
13. Discover Organizational Metrics in Your Codebase
14. See How Technical Problems Cause Organizational Issues
15. Build a Knowledge Map of Your System
16. Move Toward the Future
A 1. Solutions to the Exercises
A2. Get Started with Enclosure Visualizations
Adam Tornhill combines degrees in engineering and psychology to get a different perspective on software. He works as an architect and programmer and also writes open-source software in a variety of programming languages. He's the author of the popular book Lisp for the Web and has self-published a book on Patterns in C. Other interests include modern history, music, and martial arts.









