Tackling the big fish
More often than not, the problems you originally encounter will be the big fish. I mean, it’s always preferable to start off trying to catch the small fry in the creek, but before you know it, the creek turns into a lake, and the lake turns into the ocean. And you’re swallowed into the waters. So hopefully you’ll know how to swim. Flailing about will help you stay afloat for awhile, but in the end you’ll run out of energy if you’re not efficient, and then you’ll slowly be resigned to your fate.
So I’ll teach you how to swim.
Technique is key, baby steps
When thrown in the waters of a big deep pool of code, you want to be able to sift through it efficiently. No matter the code base, even if it’s a big pile of mess, you should start off with a general understanding of the underlying mechanics. Documentation is usually what people try to use to help this process out, but everybody is different so you have to adapt to your needs. I like to try to break the code down into it’s pieces, and then figure out how the pieces work together to run the machine.
Depending on the application, one tool that I use is creating a schema relationship outline for the database. If your application is heavy in the database department, then having a view of all the columns in the tables, the relationships between tables, and the constraints makes it easier to gain a good macro view of the application.
Again, this depends on the type of person you are for the most part, but I find that visualization and having things physically in front of me helps in the process of learning new things. So if I’m tasked with solving a bug in a specific part of the code that I’ve never seen before, I like to visualize the flow of the code. This sounds very much like stepping through code line by line, and in some sense it is, but hopefully that isn’t the first thing you do, since that is a very time consuming task and tedious. Knowing the flow of information through the code, and through the database will help gain insight into the infrastructure of the application.
Putting it all together
So after breaking things into pieces, and understanding the flow of the application, the last piece is doing it all together. This just comes with practice, and doing things over and over again. You’ll find out what works, what doesn’t, what needs to be adapted. The key point is to always be looking to improve your technique. It’s a never ending quest for efficiency, and after awhile it becomes habit. The hardest part is forming the habit, and then continuing on with it.