1 option
Your code as a crime scene : use forensic techniques to arrest defects, bottlenecks, and bad design in your programs / Adam Tornhill.
- Format:
- Book
- Author/Creator:
- Tornhill, Adam, author.
- Language:
- English
- Subjects (All):
- Computer architecture.
- Computer programming--Management.
- Computer programming.
- Physical Description:
- 1 online resource (319 pages)
- Edition:
- Second edition.
- Place of Publication:
- [Place of publication unknown] : The Pragmatic Programmers, LLC, [2024]
- Summary:
- Your Code as a Crime Scene, Second Edition by Adam Tornhill provides software developers with forensic techniques to analyze and improve codebases. The book emphasizes understanding the technical and social aspects of software systems, demonstrating how to identify and address complex code structures and technical debt. It introduces methods for visualizing code complexity, refactoring, and aligning architectural designs with business goals. Intended for software architects, developers, and team leaders, it integrates insights from forensic psychology to enhance code comprehension and maintenance. The book combines practical tools with data-driven analysis to facilitate effective code management. Generated by AI.
- Contents:
- Cover
- Table of Contents
- Foreword
- Acknowledgments
- Welcome to the Crime Scene
- Why You Should Read This Book
- Who Should Read This Book?
- Why Read This Book Now?
- How to Read This Book
- Toward a New Approach
- Get Your Investigative Tools
- Part I-Identify Code That's Hard to Understand
- 1. Optimize for Understanding
- Understand That Typing Isn't the Bottleneck in Programming
- Meet the Challenges of Scale
- Beware the Lure of Complexity Metrics
- 2. Treat Your Code as a Crime Scene
- Take a Crash Course in Offender Profiling
- Apply Geographical Offender Profiling to Code
- Limit the Search Area: Spatial Patterns in Code
- Be Aware That Hotspots Reflect Probabilities
- 3. Discover Hotspots: Create an Offender Profile of Code
- Mine the Evolution of Code
- Explore the Complexity Dimension
- Intersect Complexity and Effort
- Drive Refactoring via a Probability Surface
- Exercises
- 4. Hotspots Applied: Visualize Code from the People Side
- Visualize Source Code
- Break Barriers via Language Agnostic Analyses
- Determine How Hot a Hotspot Is
- Understand That Bugs Breed Bugs
- Know That Information Is Only Good When Acted Upon
- 5. Detect Deteriorating Structures
- Calculate Complexity Trends from Your Code's Shape
- Inspect Negative Space in Code
- Prefer Trends over Absolute Values
- Evaluate the Growth Patterns
- 6. Remediate Complicated Code
- Meet Your Brain on Code
- Spot Nested Logic That Taxes Working Memory
- Refactor Complex Code via Simple Steps
- Evade Object Disorientation
- Use Abstraction as a Tool for Thinking
- 7. Communicate the Business Impact of Technical Debt
- Know the Costs and Consequences of Technical Debt
- Know Why Half the Work Gets Done in Twice the Time
- Make the Business Case for Refactoring.
- Fight Unplanned Work, the Silent Killer of Projects
- Differentiate Remediation Time from Interest Payments
- Part II-Build Supportive Software Architectures
- 8. Use Code as a Cooperative Witness
- Recognize the Paradox of False Memories
- Reveal the Dynamics of Change
- Inspect the Modus Operandi of a Code Change
- Understand the Reasons Behind Temporal Dependencies
- 9. Architectural Reviews: Support Redesigns with Data
- Don't Shoot the Messenger
- Use Sum of Coupling to Determine Architectural Significance
- Understand Change Coupling Algorithms
- Catch Architectural Decay
- Modularize Monoliths
- 10. Use Beauty as a Guiding Principle
- Learn Why Attractiveness Matters
- Use Beauty in Code
- Analyze Pipes and Filters Architectures
- Analyze Layered Architectures
- Analyze Microservice Systems
- Reverse-Engineer Your Principles from Code
- 11. Expose Hidden Bottlenecks: Delivery and Automation
- Understand What's in an Architecture
- Profile Targets in Test Code
- Create a Safety Net for Your Automated Tests
- Avoid the Automated-Test Death March
- Design for Human Problem-Solving
- Part III-Meet the Social Side of Your Code
- 12. Meet Norms, Groups, and False Serial Killers
- Learn Why the Right People Don't Speak Up
- Understand Pluralistic Ignorance
- Witness Groupthink in Action
- Discover Your Team's Modus Operandi
- Mine Organizational Metrics from Code
- 13. Discover Organizational Metrics in Your Codebase
- Kill a Project: A How-to Guide
- Analyze Hotspots for Coordination Issues
- Spot Conway's Law in Your Code
- Act on Inter-Team Dependencies
- 14. See How Technical Problems Cause Organizational Issues
- Have Your Code Motivate Retention
- Discover How Code Smells Lead to Coordination Problems.
- Visualize Organizational Friction
- Measure the Truck Factor in Unhealthy Code
- Uncover the People Side of Code
- 15. Build a Knowledge Map of Your System
- Know Your Knowledge Distribution
- Expand Your Mental Maps with Social Data
- Dig Below the Surface with Developer Patterns
- Use Fractal Figures to Mitigate Offboarding Risks
- Distinguish Use from Misuse
- 16. Move Toward the Future
- Deepen Your Investigation
- Watch the Next Steps
- Stay Relevant: Programming in an AI World
- Watch Evolution in Reverse: Working with Low Code
- Write Evolvable Code
- A1. Solutions to the Exercises
- Part I: Identify Code That's Hard to Understand
- Part II: Build Supportive Software Architectures
- Part III: Meet the Social Side of Your Code
- A2. Get Started with Enclosure Visualizations
- Bibliography
- Index
- - A -
- - B -
- - C -
- - D -
- - E -
- - F -
- - G -
- - H -
- - I -
- - J -
- - K -
- - L -
- - M -
- - N -
- - O -
- - P -
- - Q -
- - R -
- - S -
- - T -
- - U -
- - V -
- - W -
- - Y -
- - Z -.
- Notes:
- Description based on publisher supplied metadata and other sources.
- Part of the metadata in this record was created by AI, based on the text of the resource.
- Description based on print version record.
- Includes bibliographical references.
- Other Format:
- Print version: Tornhill, Adam Your Code As a Crime Scene, Second Edition
- ISBN:
- 9798888650844
- OCLC:
- 1439603729
The Penn Libraries is committed to describing library materials using current, accurate, and responsible language. If you discover outdated or inaccurate language, please fill out this feedback form to report it and suggest alternative language.