Jiří Šmolík: Grey Eminence of Karlín Backend
Interview Not Only about Backend
Jiří Šmolík is one of the most senior developers in Ackee, but he doesn't like to brag about his work. As a team leader, he has the entire backend under his thumb and fingers in almost every project. It would be difficult to find a bigger expert on Node.js, Javascript or the architecture of backend applications.
Do you remember how your journey with the backend began?
If I don't count my beginnings at the Faculty of Information Technologies at Czech Technical University, for me, the backend started with Ackee. I came for an interview, and a few days later, I got a new job and a project. I pulled a laptop out of my bag and immediately started working on it. (But unfortunately, the project has already died). I worked under one backend developer, and at that time, we have done it in PHP still. These were different technologies than today.
We will get back to this. How has your job changed since then?
From the start, I was supervised by the more experienced developers, and somehow I played on my sand. I would receive a specific assignment, which I was able to complete with ongoing consultation. And that was it. It was about basic tasks that a person in my place should be able to do and know from school. Write a simple script, connect it to a database and so on.
And after that, it wasn't so simple?
One person cannot do the projects we do at Ackee today. Usually, you need a whole team. And sometimes even more teams across different platforms. They have to communicate with each other, and it is essential to think about it more. As a team leader now I can't do without the broader context.
How did you end up being in the position of a team leader?
Gradually, I gained a greater overview of app development in general. Even much larger applications, which I had no idea then, how they are done. The company grew, we recruited new people, the teams got bigger. The need for a team leader position somehow came out of that. And according to the management, I was probably the most suitable person. So part of my job now includes also caring about the team and its results.
What else does the position of team leader require?
First of all, provide a functioning backend team for Ackee. It means being responsible for the team's outputs from a technical perspective. And then the mentioned care for people. In addition to team meetings, also 1:1 meetings are important, which I have with each team member. We deal not only with how they feel and how they work. I try to move them technically forward or improve them in what they already manage. The most important thing is that everyone on the team is satisfied. So they can work on their projects in peace without worrying about the broader context. What the leadership guys were for me back then, I am now to the others.
What does your typical day at work look like?
Well, that's a good question. I haven't coded larger projects for some time, but I'm in the architect and technical supervisor’s role. It means that my day begins with email and communication in general, whether it's team members or clients. I look at merge requests, I do a code review, and I consult it with others several times a day so that everything is as it should be. A lot is going on right now because we are working on two big projects. I try to lead people to ask someone more experienced on the team instead of worrying about it themselves. And I also continuously prepare myself and others for meetings.
Can you tell me what exactly you are working on with the backend team now?
We are working on two new applications for Livesport – FlashNews and FlashSport. These are the biggest things we've ever done. We have built Tapito in the past, which was our largest project at the time. But Livesport bought it and decided to take our acquired know-how and build two entirely new projects with us. It is difficult both technically and organizationally. It is necessary to coordinate and supervise the whole team.
What project do you consider the most challenging? And how did you manage to finish it?
The biggest challenges are these two projects I have mentioned before. However, I wouldn't consider them finished yet. The biggest brunt awaits us with the launch of a large advertising campaign for one of them. But we believe it will turn out well because we do everything for it. We were able to try a lot of new things which we carefully chose to achieve the desired result.
So you like to try new things? What do you think now about Javascript on the server, since at Ackee are backends written in Node.Js?
Exactly! Back then, it had some things that other languages didn't have. But above all, it was a novelty, and it was easy to write in it. These are two conditions that technology must have for us to adopt it.
However, there are more camps. Someone hates it, someone loves it. I feel that because of its simplicity, it is more accessible and attracts many people. Basically, anyone can write anything. The Internet is full of packages written by people without any technical background, and it's pretty much reflected in that. You need to be careful about that.
Would you highlight any current trends in the backend? Where do you get inspiration?
The primary source for me are various technical newsletters or people in the team. I also follow a lot of tech accounts on Twitter. (You can find inspiration at the end of the interview, editor's note.) Some trends are not applicable in our environment in the company. And then there are, for example, fifty-year-old trends. People talk about them at conferences, but that usually means that it's an alpha version that can't be used in production. So even a year old YouTube record is fine.
And how do you approach those trends in Ackee?
We have been using REST for a long time, and the current trend is something else, non-REST. A lot of people switched to GraphQL. It is not the latest technology, but it is a protocol that, compared to REST, makes a lot of things easier. Now we rely on the existing alternative, which is gRPC. It's a relatively unproven technology, but I'm all the happier that we're testing it, and we're successfully adapting it.
And what about programming languages?
We tried to implement Go. Firstly, to expand the portfolio and also because we wanted to try something else. It has a similar use case as Node.Js, but slightly different advantages. Some time ago, our CTO Dominik even started a GO school. We haven't managed to catch up with any production applications yet, but I think it could be considered a trend.
The commit messages, which are full of emoticons at Ackee, seem trendy to me, but I know that there are strict conventions behind it. How did it come about, and how do these rules help you at work?
At Ackee, we like emoji, and because we find it more fun, we use this gitmoji convention. Each emoji defines a different change, so at first glance, you can see what change has occurred in the application by using only one or two characters. Whether it's cosmetic adjustments, harmless configuration changes or repairs. As the saying goes, a picture says more than a thousand words.
And the last question – what do you do when you don't code?
Well, I also like to code in the evenings – my things or I play with something I’m dealing with at work. Of course voluntarily. :D When I’m not happy with how I have done it, I try it at home, and I’m interested in how similar things are solved elsewhere.
And outside working hours, anything. I like to run, ride a bike and play WoW. I used to play Counter Strike too, and when the boys want to, sometimes we play Transport Tycoon as a team, or we meet to play board games.
Inspiration from Jirka:
- Thoughtworks Technology Radar
- Node Weekly
- Twitter Node.js
- Twitter TypeScript
- Technologist/speaker Kevlin Henney
- TypeScript guru Dragomir, who answers perhaps all of the TS questions on StackOverflow