1 Revealing an app’s obscurities


This chapter covers

  • The definition of a code investigation technique
  • What code investigation techniques we use to understand Java apps

A software developer has various responsibilities—most of which depend on how they understand the code they are working with. Software developers spend much of their time analyzing code to figure out how to correct issues, implement new capabilities, and even learn new technologies. And time is precious, so developers need efficient investigation techniques to be productive. Learning how to be efficient in understanding your code is the main topic of this book.


Software developers generally spend more time understanding how the software works than writing code to implement new features or correct errors.

Often, software developers use the word debugging for any investigation techniques; however, this is only one of the various tools available for examining logic implemented as code. While debugging should mean “finding issues and solving them,” developers use it to name different purposes for analyzing how code works:

  • Learning a new framework
  • Finding the root cause of a problem
  • Understanding existing logic to extend it with new capabilities

1.1 How to more easily understand your app

First, it is important to understand what investigating code is and how developers do it. In this next section, we look at several commonly encountered scenarios in which you can apply the techniques you’ll learn in this book.

1.2 Typical scenarios for using investigation techniques

1.2.1 Demystifying the unexpected output

1.2.2 Learning certain technologies

1.2.3 Clarifying slowness

1.2.4 Understanding app crashes

1.3 What you will learn in this book