
Jack the Ripper and legacy codebases have more in common than you'd think. Inspired by forensic psychology methods, you'll learn strategies to predict the future of your codebase, assess refactoring direction, and understand how your team influences the design. With its unique blend of forensic psychology and code analysis, this book arms you with the strategies you need, no matter what programming language you use. Software is a living entity that's constantly changing. To understand software systems, we need to know where they came from and how they evolved. By mining commit data and analyzing the history of your code, you can start fixes ahead of time to eliminate broken designs, maintenance issues, and team productivity bottlenecks. In this book, you'll learn forensic psychology techniques to successfully maintain your software. You'll create a geographic profile from your commit data to find hotspots, and apply temporal coupling concepts to uncover hidden relationships between unrelated areas in your code. You'll also measure the effectiveness of your code improvements. You'll learn how to apply these techniques on projects both large and small. For small projects, you'll get new insights into your design and how well the code fits your ideas. For large projects, you'll identify the good and the fragile parts. Large-scale development is also a social activity, and the team's dynamics influence code quality.
Also, very tangentially, to the notion of the Developer's Legacy Index: https://www.javaadvent.com/2021/12/using-jgit-to-analyse-the...
Here are mine, in order of how a developer starts their journey, from basic to scaling problems:
1. Code: The Hidden Language of Computers (Pure Basic: Starting with Binary) 2. Working Effectively with Legacy Code (Dealing with an ugly codebase) 3. Refactoring Improve the design of the existing codebase (Making changes safely without breaking the code) 4. Test-Driven Development (TDD) (Once you’ve learned all the above, you always start writing tests first) 5. Head First Design Principles (Terminology and concepts for maintainable and extendable design) 6. Algorithms to Live By (Algorithms are fundamental ideas before we write any code) 7. Git Pro (Software cannot run without a Version Control System (VCS). We use it every minute of our working day) 8. Your Code as a Crime Scene (Finding problems in the code using code history) 9. Data-Intensive Applications (Databases are everywhere) 10. Software Engineering at Google (Addressing the biggest scaling problems)
Honorable Mentions: 1. Clean Code (Writing code that is easy to understand by other developers) 2. The Soft Skills (Coding alone is not enough to be a great software engineer) 3. Peopleware (Managing software teams).
Also, I am planning to write a short book summarizing all the important points from these above books. If you are interested in getting one or want to be part of an early reader, please email me at burhanrashid5253@gmail.com.
1. Code: The Hidden Language of Computers (Pure Basic: Starting with Binary)
2. Working Effectively with Legacy Code (Dealing with an ugly codebase)
3. Refactoring Improve the design of the existing codebase (Making changes safely without breaking the code)
4. Test-Driven Development (TDD) (Once you’ve learned all the above, you always start writing tests first)
5. Head First Design Principles (Terminology and concepts for maintainable and extendable design)
6. Algorithms to Live By (Algorithms are fundamental ideas before we write any code)
7. Git Pro (Software cannot run without a Version Control System (VCS). We use it every minute of our working day)
8. Your Code as a Crime Scene (Finding problems in the code using code history)
9. Data-Intensive Applications (Databases are everywhere)
10. Software Engineering at Google (Addressing the biggest scaling problems)
Honorable Mentions:
1. Clean Code (Writing code that is easy to understand by other developers)
2. The Soft Skills (Coding alone is not enough to be a great software engineer)
3. Peopleware (Managing software teams).
Wonder if this is getting better, at least for newer (than COBOL) technologies.
There's books like Your Code as a Crime Scene and Sustainable Web Development with Ruby on Rails, along with ideas to address tech debt like No Broken Windows and Chesterton's Fence.
Service providers like Tidelift, who help sustain open source devs, and even upkeep companies that maintain Rails apps.
