People and Culture

Mastering full-stack development: Insights from an experienced Software Engineer

Discover the Path to Seniority, the Role of Education, and the Importance of Practical Learning in the IT Industry.

Engineer with old cd's
5 minutes to read
Author

"Welcome to the Hüb – a place where our experts frankly share their opinions, ideas, and expertise of the industry as well as its future, and important trends you need to know about."

In today’s 17th episode in the series, we talk with Pavel Belov who works as an Expert Java Engineer at Zühlke.

There is more to real-life coding than you might think when learning to code by yourself

Although some aspects of programming have become simpler with time, programming as a area of expertise has become increasingly complex. A good example could be an online shop application that encompasses everything from the database on the back end to a modern and intuitive UI at the front end. To me, being a full-stack developer means creating an application that caters to all the user's needs.

I've been programming for 16 years, half my life, starting in school and continuing through university. But when I started my career eight years ago, I realized that I wasn't as prepared as I thought I was. While I had a strong theoretical background and some coding skills, real-life coding was quite different from what I was used to. I had to learn how to solve tasks in general, how to communicate with other people on my own and other teams, and how to understand requirements and other parts of the system that other programmers had developed before me. The main difference between then and now is practice and solving different types of problems. By the way, not all problems can be solved or should be solved, and knowing when to spend time on something or when to move on is also something that comes with experience. Ultimately, only practice can lead to becoming a senior or advanced software engineer.

The question everyone asks – do you need school to be a good developer?

While theoretical learning is still useful in certain areas of development, I don't think it's the most important aspect. I know people who decided to become programmers without attending school or university and have successful careers. Formal education helps, but it's not a deal breaker if you don't have it. Knowing more is always better, but it is possible to learn from practice alone.

The education system hasn't evolved much, unlike other areas of human life. For example, public transport and manufacturing have become way more efficient and automated. On the other hand, the traditional education system with a teacher in the front and students listening to a lecture hasn't changed much in centuries. The current education system prioritizes theoretical knowledge over practical and real-life learning. It's more about surviving and passing exams, not really learning, and many students often forget everything they learned soon after the exam, which is a shame.

Education is not only essential for human progress, but it can also be fun. I believe changes are needed to make the process more personal and engaging, to involve more people, to simplify it and make it more practical. That way, we can gain useful knowledge that is applicable to our lives, rather than just memorizing facts for exams.

Many students feel a lot of pressure around their exams and believe that their performance will have a big influence on their future. However, even if you're not a good student, it doesn't mean that you won't succeed later. My advice is to not focus too much on grades because they are not as important as you may think. Instead, focus on trying a variety of things, allow yourself to make mistakes, and follow what you find interesting. Real life is more complicated and offers more possibilities than you may believe during your education. So try to feel less pressure and explore your interests.

Hustle culture and work-life balance

I believe in work-life balance and I don't think companies should require their staff to learn after working hours. Resting is important for both mental health and productive work. Learning something new should be part of the job in working hours, and I appreciate when companies provide opportunities like conferences and courses. However, for me, the best way to learn is through practical experience. When facing a new task, I learn from it and retain the knowledge better than just learning theoretically. It's important for companies to allow for personal and professional growth, but learning should be balanced with rest and practical experience.

Make life easier for future you

One of the things I learned from my teaching career is how to explain things effectively. This skill is useful when writing documentation because it's important to make it clear and understandable for anyone who reads it, not just those who are already familiar with the context. As a teacher, I learned to imagine that I didn't know the subject matter and to use real-life examples to make it easier to understand. This approach helps me in my work because good documentation should be clear and easy to follow, even for someone who has no prior knowledge of the subject matter.

Have you heard the phrase, "Always code as if the guy who ends up maintaining your code will be a psychopath who knows where you live"? I've improved it in my own way. I believe that we should always code as if the person who ends up maintaining our code will forever be us ourselves. Thus, by making our code as simple and efficient as possible, we're making life easier for our future selves. That's why I always try to write code that is easy to understand and maintain. It not only makes my own life easier but also benefits my colleagues and the company. So, my advice would be to keep it simple and make life easier for yourself and others in the future.

Pavel Belov
Contact person for Bulgaria

Pavel Belov

Pavel Belov was born in a multinational family (Russian father and Bulgarian mother), so from his early childhood he lived in two countries. He started school in Bulgaria, but later moved to Russia and graduated there. He studied at the IT Faculty of Saint Petersburg University LETI and has Masters degree in Computer Science. For 2 years he was also a Probability Theory teacher at the same university.

Pavel started his career as an IT engineer in April 2015 and joined Zühlke in September 2022. His main area of expertise is Java backend, but he is also interested in the front end and in full stack development.

Apart from his work, he is passionate about mentoring, public speaking and traveling.

Contact
Thank you for your message.