We just discussed how software maintenance is both difficult and expensive. Our challenge is to reduce complexity and get code that is easy to modify. To succeed, we need to prioritize what improvements to make based on how we actually work with the system. That way, we get the most value in the least amount of time.
In this chapter, you’ll learn novel strategies from forensic psychology that you can use to identify and prioritize software-design issues. It isn’t enough to look at a static snapshot of the code; we also need to look at how the system evolved. We do that by treating version-control data as our evidence.
Along the way, you’ll learn techniques to identify code that is hard to understand and tricky to modify. It’s code that slows down your productivity and degrades the quality of your system. Knowing where the true problems are lets you make improvements where they are needed the most.