Atualização: February 22, 2023

Editores: Daniel Tanaka

Bio: Backend developer @ ZBRA, focusing on clean code and best practices.

How to organize a study plan

The IT professional needs to be always up to date and constantly evolving. Technologies and new methods for accomplishing tasks emerge all the time, so you have to study a lot! There are several bases and tools that a professional should study. How to put together an efficient study plan focused on what you want to study? This text is based on the internal experiences of some ZBRA employees, which helped them to be increasingly prepared for this challenging universe.

Where to study? There are specialized platforms for courses within the area of technology and development, such as Alura (only available in Portuguese) and Pluralsight. They have courses in several areas of computing, such as programming, Artificial Intelligence, and DevOps, among others. There is the advantage of having audiovisual and more didactic content (always depending, of course, on the creator of the course). In addition, they also offer a starting point for those who have just entered the platform, such as trails that group several courses in a specific area, thus helping the student to better target which courses to study.

It is important to point out that there is always the option of searching for available courses, which usually have a description of their contents, and creating a personalized track. This can also be done with the help of a more experienced person in the area in which improvement is desired. With this approach, there is the advantage of having a more personalized and tailored track for the student.

Another option is to consult specific ‘roadmaps’, which contain the main concepts and technologies that deserve focus when being studied. Care must be taken, however, as there are maps that tend to be very extensive and allow the study of contents that may not be as relevant as they seem. They can be used as a kind of guide, but the ideal is for the student to create his own personalized roadmap, with the help of someone more experienced in the area of study.

Another important point to be considered when studying is to focus on understanding well the concepts behind the tools taught. We must, for example, understand the concept of a class in Object Orientation, instead of just trying to focus on how to create one in the most diverse programming languages without necessarily understanding its purpose. Several important people from the development world, such as Robert Martin (Uncle Bob) and Martin Fowler, have shown the importance of a good conceptual base when building complex software systems, with several articles and texts on software design architecture, and clean code, among others. In our experience, people’s transition between different tools and technologies tends to be much easier when you have a good conceptual base instead of focusing on a specific tool (language, framework, among others), which tends to have different forms of implementation and, therefore, various forms of application of the same concept, making the understanding of these concepts using only and exclusively these tools in something confusing.

Having an experienced person as a tutor can help a lot in this task. If the student has contact with a more experienced person in the area he wants to focus on, it is highly recommended to have a conversation with him from time to time in a mentoring process. These conversations help clarify doubts that the student may not have thought about when he was watching a course, and can also clarify the rationale behind a given technique taught in the course.

It is also recommended the practical application of the studied content, for better assimilation. In the experience of the author who writes to you (:P), it was suggested by his tutor, Filipe Sbragio, the realization of ‘Code Kata’s. Dave Thomas, one of the authors of “The Pragmatic Programmer” (along with Andrew Hunt) and the Agile Manifesto, was one of the first to coin this term. In one of his blog posts, he defines Code Kata as “an attempt to bring the hands-on element to software development. A ‘kata‘ is an exercise in Karate in which a form [of exercise] is repeated over and over again, producing small improvements with each repetition.” In addition, he states that his objective is to practice programming exercises in a controlled environment, in which the person can feel free to make mistakes and learn from them.

The ‘Code Kata‘ worked by the author of this text can be found in the repository ‘GildedRose-Refactoring-Kata‘, by Emily Bache. In this one, in particular, we tried to work with code reading, refactoring, and application of unit tests and Design Patterns, essential concepts for a back-end developer. A few years after carrying out these studies and practical exercises, closely monitored by a more experienced person, it was possible to feel in practice the difference made when it came to developing and moving between technologies and projects.

If you don’t have contact with someone more experienced in the area you want to deepen, some of these platforms also offer access to forums for discussion and questions, which can also help.

Finally, it is recommended to set aside time for study. This helps focus and organize the content to be studied.

Each person can learn better in a specific way, but, in general, the application of the techniques presented above helps a lot in the effective learning of the contents, significantly impacting the code quality level! We hope that these techniques help you to have quality studies!