Work Life Balance
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.
Visualization #
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.