How to become a programmer: Kirill Zonov’s story

Three individuals viewing a large framed artwork of a person with an orange hat blowing a fire-breathing creature, surrounded by various smaller framed pictures on a gallery wall. Three individuals viewing a large framed artwork of a person with an orange hat blowing a fire-breathing creature, surrounded by various smaller framed pictures on a gallery wall.

Childhood

We were all asked “Joe Shmoe, what would you like to be when you’re older?” when we were children. I wasn’t an exception. I answered that I wanted to be a president. I was told that there could be only one president. Life is tough. So after some thought I decided that I was going to be a programmer.

The years went by, computers advanced; I loved playing Heroes of Might and Magic 3 and Unreal Tournament, but never felt like programming. In the meantime, peer networks just started to flourish in the town where I lived, and the cable Internet was very expensive. And at that time I realized that messing around with networks was more exciting than just playing. So in less than a year I installed twisted pair cables on three neighbouring houses and about twenty people used my Internet with great (for that time) bandwidth.

It became worse when at high school I went to Delphi classes. We were creating jumping balls and other dumb things. I wasn’t really impressed by that and decided that programming wasn’t for me. However, I made a Windows Tweaker using the very same Delphi for a programming competition for students and even won an ingenuity award.

University days

The time has come for me to enter university, and I decided not to consider the programmes that concentrated mostly on programming. So I chose Computer Enginering where I had to mess around with my favourite Linux, networks and microcontrollers. The studies weren’t difficult for me, so from the very beginning I started working as a system administrator and moving around the city, solving technical problems with Windows for lesser mortals. And when the programming classes started, I was disappointed. The professor discouraged us completely from programming, even though he taught us .net and Java and C++. So I finished all my term papers successfully, but preferred to work as a system administrator anyway, until...

Programming life

Until I happened to make it into an outsource company, where programmers used Ruby. I was working there for half a year, crawling under the tables with the cables in my hand, monitoring SMB servers, and suddenly the thought that they were having more fun than me crossed my mind. They had Scrum and all sorts of meetings, even stand-up ones, and the only thing I got is coffee along with the private office. So I went to my boss and said that I wanted to be a programmer too and asked for help. He had the heart of gold, didn’t hinder and gave me a discount for their programming classes instead. He also allowed me to do the test assignment and have an interview.

And then things escalated. I worked in this company for some time, then freelanced, then created a team, then was an owner and a CTO of an outsource company for quite some time, then freelanced again with a small group of friends and then even relocated to far Europe from a small town on Volga.

Ruby was my main and favourite language, and still is, even though now there are Clojure, React Native, Swift, Node.js, and even Kaggle Python script on my GitHub profile.

Mentorship

For starters, let’s talk about my mentorship experience. When I was in the process of setting up my own company, I hired mostly beginners and half of the time I spent on training them. I’m rather impatient by nature, so the training process involved not giving the knowledge to the employees on a silver platter, but mentorship. I gave them an assignment to dig into, they did that, stumbling onto something and asking what that was and what to do with that, and then I explained everything.

It was bad news when they did’t ask, it meant they were stuck or too shy to inquire, and in that case I tried to find out myself what was going on and then act according to the same plan. If the person was savvy enough, after a couple of weeks there was a new programmer in the team. Speaking of which, everybody I trained or retrained are now senior developers or CTOs.

Some might suspect that I have not enough money and a lot of free time in that far Europe and so I decided to be a mentor. Well, I work as a Sir Senior Developer, so my financial life is fine. Besides that I also visit some meetups, read books, work on my pet projects, run marathons and semi-marathons, so I might say I have a rather busy life. But there are some reasons why the mentorship is attractive for me:

  1. I believe that a person needs a lot of professional connections, if they want to make progress on their job. What I mean is that you need colleagues of the same level as yours, with whom you can discuss hot topics and advance, competing with them. You also need a mentor or anyone who’s more awesome than you, who you can spend time with and look up to. It’s good if you have a mentee as well, because you can share your knowledge with this person. It’s like a water cycle, you need to get knowledge, but you also need to share it.

  2. While living here I often see that Russians (I’m talking here about the language, not the nationality) might overshadow any European, considering if not knowledge, then at least motivation. So here I nourish my patriotic feelings, as I want to scale up the collective intelligence of Russian programmers.

  3. This one is a super important and selfish point. When a newbie asks me something I don’t know, it helps me a lot to understand my own blind spots.

Can you give some advice that is usually considered to be controversial?

Always remember that if you are a trainee or a junior developer in some company, this company has invested its time and money in you. So try to respect it. A usual payback period of a rookie programmer is two or three years. So even if you’re not ready to stay at the same company for such a period, appreciate what they’ve done for you and don’t hesitate to say ‘thank you’. It’s such a small world, especially a programmers’ one.

How do you maintain your skills to be relevant? How do you grow and get better as a developer?

I’m not going to say anything surprising here. I read news of any kind (podcasts, weekly newsletters, Reddit), communicate with my colleagues and discuss some stuff with them, visit meetups and conferences, read books.

Your top 3 books for a newbie?

Your working area photo


If you’re still thinking about starting programming, don’t just think, do it %) It’s an immense world with a whole bunch of exciting things.


Перевод с русского на английский сделан Анной Можаевой.

Translated from Russian by Anna Mozhaeva.