The importance of understanding what you're doing

Following tutorials is an easy and hands-on way to try and learn new things. The question here is… are you really learning or just following a procedure to achieve something? Knowing what you’re doing is one of the many aspects that matter when performing a critical task, those which are commonly found at the job.

The academic life prepares students in a lot of ways: from the basics of their profession to problem solving through teamwork and collaboration. However, there are skills which are not present in the curricula. I remember Dr. Patricia Salinas stating that most of the skills required at advanced courses of mathematics (e.g. spatial visualization) are not actually taught at school, back from my time at the Mathematics Department in Tec de Monterrey.

I remember my first programming classes. They were just following procedures (no pun intended) to generate some code. A year later we were taught keywords and what they did according to the programming language we were learning at that time (C, more likely). Data structures came later and the story was pretty much the same: we learned words, not concepts. The story went on and on for OOP, computer vision and distributed systems.

This all became clear when I actually needed to implement things. At the time I wondered if it was a common thing among students to half-heartedly learn to use their tools of the trade. Was the situation the same for other fields? But all became clear when both colleagues and superiors showed the same signals: we all were learning in the process.

One day, an overwhelming amount of work pushed me into looking for ways to optimize my job routines. I had to be efficient if I wanted to finish the job on time. And so I realized something quite obvious: doing things the right way from the beginning saves a lot of time.

Whenever I took part in a somewhat complex project, I took detailed note of the requirements. I started to generate comprehensive documentation, tests and diagrams to actually understand what I was doing. After this design phase, implementation was way easier than expected.

However, planning for too long is usually not a desirable strategy in the industry. Results are needed ASAP, so quick disruptive solutions are preferred over long-awaited master plans. I had to be prepared for these kind of projects too.

Then again, the answer was the same. Know what you’re doing. Mastering the use of your tools is essential: get to know your environment and invest time to find out what does the command which you always type do. Ask questions and look for advice if you need it. Don’t take things for granted. This is crucial if you’re looking to get yourself into R&D.

The code of thousand lines starts with just one. In the end, you should be able to understand everything you’ve written. Also, remember to share your knowledge. Keep it flowing so everyone can benefit from what you’ve learned.

Xavier F. C. Sánchez Díaz
Xavier F. C. Sánchez Díaz
PhD candidate in Artificial Intelligence

PhD candidate in Artificial Intelligence at the Department of Computer Science (IDI) of the Norwegian University of Science and Technology