Tech Talks: Confessions of a Software Engineer
Janko Sokolović, a software engineer at Zühlke Serbia and co-founder of ispovesti.com, a household item with every computer-literate person in Serbia, shares tips and tricks he learned working as a software engineer while developing the famous website.
Insight in brief
In the Tech Talks blog series, we tackle emerging trends & topics with style and clarity in an effort to connect the professionals and move the whole industry forward.
Tips on how to maintain quality
If someone wishes to work in the world of software development and take a complete dive into it – I would advise them to focus on the quality of what they are producing. This is not the case with many companies in Serbia. Taking courses and workshops can serve as an excellent base, but they do not guarantee the quality of the execution. Focus less on researching new technologies, especially if you are working with front end development and have to follow updates every once in a while in order to stay relevant. Instead, focus on the foundation, like clean code or test-driven development.
There are no shortcuts on the path to quality. You get there with time and experience. Once you are “battle-tested“ you spend more time working on actual problems, and you get a chance to perfect what you do. It is only in those cases that you can return to a code you wrote earlier and notice all its flaws. That kind of process makes you realize why certain tasks were done in that particular way – that’s when you get that “a-ha!“ moment.
You won’t often get that time to look back and spot issues on projects working for different clients though. That is why it’s so important to master the basic principles of OOP, SOLID and such because you can apply them on every project, regardless of language or technology stack.
Spend more time thinking about how to develop good design and focus on setting up a solid foundation for a particular project.
Learning and developing your skills after hours
The competition in this field has become much stronger in the last few years in Serbia. Besides, technology is growing exponentially. To work, and even more importantly – to learn only during the working hours is simply not enough. An industry in which you have to constantly keep up with new technologies doesn’t allow any kind of stagnation. I try to keep up with new bleeding-edge technologies, to see if there is any big change or a paradigm shift in its principles. But I won’t delve too much because I know I won’t need a lot of time to adapt to it when the time comes. It’s more important having a base of knowledge and widen it regularly.
Recently, I’ve been doing a lot of coding challenges and solving algorithmic problems. I’ve also been exploring principles of design and architecture as they apply to any kind of technology that might come about in the future. Reading and watching courses doesn’t give you info on what is most important and what to pay special attention to. Coding challenges, in general, don’t have a relationship of a younger-to-more-experienced colleague but are rather a solo endeavor. In Zühlke, however, we sometimes do them with and for younger colleagues. This is so we can help them out and learn together. Many of the topics we end up covering and learning are not even taught in university courses.
Knowledge sharing is going to get harder and harder because there is more content that comes as technology develops. In such a vast sea of information, it can be difficult to deduce which information is of importance and what to focus on. It is unrealistic to think that learning five courses at the university will make you a good programmer. It is a process that lasts a lifetime.
Dealing with the "imposter syndrome"
People who want to learn shouldn’t shy away. This is known as „imposter syndrome“ in the industry, where many programmers have a feeling that older and more experienced colleagues know more, and that they can’t rise to their potential. „Oh man, he just mentioned a technology I don’t know, that I haven’t used or heard of. I’m going home now to explore it because I feel like I am not worthy of this job.“ Instead of harboring emotions and thoughts like these, you should be honest, transparent, and always ask when you don’t know something.
If you are only in this for the money - don't do it
Motivation is really important, and the lack of it is the biggest problem for engineers in Serbia. People enter this industry mainly because of a good salary. There are more and more of us, but it’s not realistic that so many people are interested in the same field of work all of a sudden. That is why - if you don’t have proper motivation and you just can’t wait to close your laptop and head home at 5 PM - this kind of a situation will oversaturate the market with engineers, but not with the ones which will produce quality software.
This, like any other job, should be done because you want to do it, not only because you are getting paid well at the moment. Even the minority of developers that are doing it just for the money will still be valuable since not all projects require the highest quality. Many IT projects are not business-critical and can afford to be of average quality. Unfortunately, these coding-monkey projects are here to stay, but it shouldn’t hinder us from striving to get better.
How I got the idea for ispovesti.com
I started working on web development after University. I felt like I had some spare time I could fill by working on some extra projects.
That’s how I started developing apps with a friend from school and soon after I had one simple idea, which later grew into Ispovesti.com. The story was not serious at first. I knew very little about the good principles of programming, proper design and architecture. That is why it only took a few hundred users who joined the website in real-time that I started experiencing issues, lags and bugs of all sorts. We even faced some security problems. When I look back on the level of coding I’ve done, I am not pleased to this day.
But I was helped by older colleagues with more experience who were in university at the moment. They helped me patch things up.
If I was to change anything, looking at it all back now – I’d maybe be tempted to tell myself: „Wait until you are more knowledgeable to make the website better“ – but on the other hand, maybe the timing was just right. If I waited for perfect code, or a perfect site, maybe it would all be for nothing, no followers or visitors. Maybe I’d be too late. This is a very common issue. You need to find the balance between the quality of work - the so-called „perfect code“, timing and the value we can bring to the end-users. Then it all escalated very abruptly and suddenly. At its core, it was a very simple idea - people being able to write anything without logging their actions in or leaving any kind of personal data.
Bonus skills all Software Engineers need to develop
People who can delegate to teams and other software engineers are in high demand. The so-called technical leads, who work in agile environments, have experience in pitching, presenting ideas and are constantly interacting with people such as Product Owners and stakeholders.
Developing your soft skills is fundamental as an asset besides programming. Besides, you should try to put yourself in situations that might be out of your comfort zone, such as public speaking or a technical topic talk. By stepping out of your comfort zone, you are expanding it even more. Be careful about what you are learning exactly, and what you invest time in when it comes to software. The knowledge that you pick up in school is easy to forget, which is why you should always keep refreshing it.
It is also important to keep up with trends and technologies, visit conferences and hear about new frameworks and tools in the line of work so you can try them out. The other 50% of your self-development should be spent on soft skills. Work on bettering communication skills, teamwork and focus on seeing the broader picture instead of just completing tasks.