Ten years of writing code by hand
Last winter I was going to quit and never work as a programmer again. I was sick of writing code, sick of leading, sick of everything. This is how I got there.
Now I haven’t written code by hand for several months. I don’t see why I would: an agent does the same, better and a hundred times faster. A year ago I couldn’t imagine working the way I work now, even close.
My job changed completely in less than a year. A scrum team — usually five to eight people, sometimes up to eleven — became two developers and a business analyst, with agents doing the writing. I want to write about this properly, in four posts: this one about how it was before, then how the work looks now, why an ordinary scrum team will not get this kind of speed even with agents, and what it costs.
These posts are long, and they are personal on purpose. For me they are a way to close the years when I wrote code with my own hands. There is no tutorial here — the harness I work with has its own posts (the first one, the revision). This is the other side of it.
The road
- before IT
- learning
- EPAM
- 2006 – 2010 Restoring historic buildings in St Petersburg
- 2010 – 2014 Tour guide on Phuket Then a photographer, virtual 3D tours
- 2011 Industrial climbing
- 2014 – 2016 Back in Russia Yoga classes, gypsum stucco, construction
- 2015 Restoring a historic interior
- Sep 2016 Learning JavaScript
- Spring 2017 First job, a small startup
- Autumn 2017 EPAM
- 2019 – 2021 Big online shops The crunch and the burnout
- 2021 – 2023 An internal portal, a team of four
- Oct 2021 Leaving Russia
- 2024 – 2026 The dream team, a WYSIWYG editor Ends in January 2026
Hanging on a rope
Rope access, a high-rise facade
I remember the first time I hung on a rope. It was very scary. I thought I was terribly afraid of heights, and to go over the edge the first time I needed at least forty minutes of fighting with my own fear. Then it became normal, and I worked. The work was hard, but I liked it very much, because you see the result right away.
That was not the first thing I did and not the last. The road into programming was long and went through a lot of places, so let me start from the beginning.
Before IT
Once I hitchhiked, quite a lot and for a long time. Somehow I ended up in Thailand. I had no money, I needed some work, and my friends worked as tour guides. So I just decided to join them.
First I tried Pattaya — I didn’t like Pattaya much. Then I went to Phuket, and on Phuket for about a year and a half I led sea excursions: to the Similan Islands, to Phi Phi and to others, there are a lot of them there. Between the seasons the guys invited me to work as an industrial climber, and I went for one summer. At some point I got tired of being a guide and decided to try myself as a photographer. I tried shooting people — it didn’t work out very well. So I started making virtual 3D tours for commercial real estate — two of them are still on the About page. It was a fairly successful small business, which unfortunately ended when another coup started in Thailand, in 2014, and the money ran out.
Two of the jobs before programming
At some point I came back to Russia. Nobody there really needed 3D tours. Sometimes I taught yoga, gave personal classes. But at some point there was really not enough money, and I decided to go to a construction site.
Before that I had worked a lot on the restoration of historic facades in St Petersburg. This time it was installing new gypsum stucco in new flats. I call that restoration too, because very often we came after other craftsmen who had done it badly, and our crew redid it. I liked working on construction very much.
The big minus of this work is that there is fairly little money in it, even though climbers are paid not badly and restorers are paid not badly. There is still a ceiling, and you will not get above it, unless you become a foreman. And the work is very hard physically; I didn’t really have enough health for it. So I decided to become a programmer.
Why programming
Why I needed the money is simple: the family grew, and when we came back to Russia, money became really short. We lived on literally kopecks and ate whatever there was.
I thought about what I could do at all and what I could earn with. I was in a situation where it was not clear where to go next. But I decided to go into programming, because I always liked computers; I loved playing games since I was a child. And I had had some small programming freelance work on WordPress, on PHP — I earned some money with it.
It was a big boom then. A lot of people were going into programming, people were really needed. And I fitted into this movement successfully, just because I thought about it rationally: this is probably the most effective thing I can do.
Then I did an interesting thing: I asked all kinds of acquaintances who works as what kind of programmer. At first I wanted to do Java, because it pays more. But it turned out that the entry into Java is quite hard, and I decided to become a frontend developer, in JavaScript.
One book and a few months
After one big job I had enough money to sit at home for two or three months and study — I don’t remember exactly how long, most likely September to November 2016. When the money started to run out, I went back to the gypsum work and studied in the evenings. I didn’t stop for a single day.
At the beginning it was very hard, because by then I had not used my head for a long time, honestly. I was afraid I wouldn’t manage. But I never doubted the method: when the approach is rational, success is, generally, inevitable. And I have a lot of patience and method. The main book was Eloquent JavaScript. I simply took a chapter, read it, and after the chapter did the exercises. I did them honestly and didn’t read the next chapter until I had done the exercises for the previous one. Slowly moving forward like this, rereading the material again, and again, and again — until the whole book was done.
This blog started exactly then. The first post is from 31 December 2016: “Hello World!”, with a promise of the first little project. It came four days later: the Game of Life, one of the exercises from that same book, written in plain JavaScript. All eleven demos from 2017 that are still on this site — the L-systems, the roses, the random walkers — I wrote by hand, line by line, in the year I learned.
A crazy, brilliant director
How I found my first job, I don’t really remember; I think it was an ad somewhere. It was a startup in St Petersburg. The guys hired developers to sell their services on Upwork — they were a kind of proxy. The idea was to take young developers who wanted to learn, find the talented ones, train them, sell their services on Upwork and keep a percentage. Two other people went there together with me. We were, basically, super-juniors.
The director of this company was a really very talented programmer. And completely crazy. He, for example, slept… well, he had 26-hour days: not 24 hours like a normal person, but 26. So every day his night shifted forward a bit, and he came to work at a different time. Sometimes he didn’t talk to anyone. Sometimes he shouted at us.
But he was very talented, and he built a foundation that I honestly still use. He taught how applications develop, where to start, where to look for information. How to test, what to rely on, what to pay attention to and what not. How to work with people, how to work with the client. That architecture matters, and to think as an engineer, TDD and extreme programming. I stayed there until late evenings, learning. All this base I still use.
The startup ran out of money, and I was hired into EPAM through a friend.
Six months that became nine years
I meant to stay six months at most. And bam! I stayed for nine years. And exactly because of the people.
The guys I met on my first project were absolutely golden, fantastic. It was one office, about fifty people on the project, and we were together for two and a half years. I had a wonderful team lead, a wonderful project manager. We drank beer together, hung out together, stayed after work. I really went to work with joy. And all the people I worked with then became my friends; with some of them we still talk.
And they were very talented. Again, I got into a team where everyone was at a fairly high level. So I managed to get comfortable with programming relatively quickly and to get the experience I needed to become successful later — first a senior, then a team lead, then teaching.
I did a lot of teaching at EPAM. I ran a lot of entry interviews. I still do assessments and prepare people for them — for the move to the next level. And yes — it sounds silly — the company maybe partly became my family too, and some kind of support at the moment when I left Russia. That is probably also why it is hard for me to part with it. It is like a glimmer of that old world, which isn’t there any more.
How a scrum team worked
My day as a lead, at the peak, started at nine. Half an hour of coffee and email. Then meetings back to back for four or five hours, with code review and ad-hoc messages in between. The calls were status, conversations with the client, helping and unblocking developers — calls and approvals took up to 70% of my time as a lead, while a regular developer spent 15–20% of theirs on them. Lunch with colleagues in a café. After work, a couple of hours at the architecture school, EPAM’s internal course for architects. The days were very fast and filled with people to the limit. People usually don’t like that, but I often enjoyed it: the days were not filled with code to the end, and there was a lot of context switching, which I liked — talking to people, checking work, showing work.
I worked in outsourcing all these years: e-commerce at first, big online shops, then life sciences. For the last five years I led teams. A typical team was two or three frontend developers, two backend, one DevOps, two testers, a scrum master, a project manager and a business analyst.
flowchart TB client["the client"] pm["project manager"] ba["business analyst"] sm["scrum master"] lead["team lead (me)"] fe["2–3 frontend"] be["2 backend"] ops["1 DevOps"] qa["2 testers"] client --> pm client --> ba pm --> lead ba --> lead sm --> lead lead --> fe lead --> be lead --> ops fe --> qa be --> qa
The process was standard scrum with a lot of approval rounds. Work was split into epics, then features, then tasks; there was a WBS — a breakdown of the work into pieces — sprint planning, refinement, estimates in story points. A feature went into a sprint, then into testing. A typical two-week sprint delivered one page, or one block on a page. Infinite scroll with facets for a shop took about three sprints — a month and a half. The API was ready, we did only the frontend. The hard part was SEO: while you scroll, the URL has to change to the right page. The product tiles had different heights, so the moment of switching to the next page was hard to catch. And the scroll had to work both down and up. Now something like this takes about a day — but that is the next post.
A developer’s day went on code review, a lot of it, on demos to the testers, and on debugging: hunting bugs took up to 30–40% of a developer’s time. The bugs came mostly from regressions, from developers’ inattention to detail, from backend contracts that were not fully worked out, and from tech debt that was always underfoot with no time for it. Tests and tech debt were usually skipped. There was never time for them.
Velocity existed, but urgent tasks kept landing in the middle of a sprint and broke the plan, and bug fixing spoiled the picture too. And we underestimated, constantly: pressure from management, not understanding the depth and complexity, optimism. So before releases we often stayed late or worked weekends — every time, and that was the bad part.
Kraków
Kraków, January 2019
It was January 2019, with the old e-commerce team, when we were building a big shop. There was a business trip. The client invited us to their office, where we did what we always did — worked, developed — and in the evenings walked from the hotel to eat. One of those days was my birthday, 21 January. We went out together — well, not exactly to celebrate the birthday, that was more of a bonus. I probably didn’t even tell anyone it was my birthday; I don’t remember well. We just got drunk on beer in that steak house and told jokes. It was just super, very fun; there was some incredible lift of the spirit and unity. And very, very tasty food — really the best burger of my life. It was great.
The team at the table
Burnout
The burnout is a hard topic. It was a big online shop, from May 2020 to January 2021, and I was invited there as a team lead. At that moment I had little experience as a lead and didn’t really understand how to distribute my load. I tried to be the team lead and the architect, and do interviews, and go through the architecture school, and at the same time write code. Probably if I had chosen one thing, I would have avoided burnout — well, at least in that form.
We were running fast. We were rushing mostly because, when the contract was signed, we — more exactly, EPAM — offered terms under which everything would be ready by a certain date. But, as usual, during development some questions came up which took a long time to settle. It was partly a move from legacy to a new technology. The legacy was probably PHP — I don’t remember exactly — or Java. We were moving to Next.js. Next.js was new for me, and under the hood the API was GraphQL, which was also quite new for me. New technology, full of details I didn’t know yet. We had to do fairly complex things: manage the context of what comes from the API, mutate it on the frontend, make sure it all didn’t fall apart with server-side rendering.
And all of it was under pressure from managers, who passed down from above a constant feeling that we were not making it, that we had to be very, very fast, that we needed to be done yesterday, and that it was the developers’ fault that we were not making it. It was never said directly, but it sounded as the leitmotif of all that work. And of course it pressed on you psychologically. The project was on fire and went past the deadline several times — not because of COVID, but because of over-optimistic managers who promised too much. It was hell, five or six months non-stop.
An ordinary day was just hard work. You open the laptop, close it twelve hours later and don’t remember where your day went, because the whole day went there. Sometimes I didn’t have the strength or the time even to eat. Thank God I wasn’t alone then, and at home I was helped a lot.
It all came together. That architecture school, which I went to then and actually couldn’t even finish properly — somehow I finished it, just for the tick. And the interviews, which I just really wanted to do; I loved doing them. It was a way to get a little distraction from the project I was fed up with. And then, yes, I took COVID seriously. Everyone was at home under the heavy stress of getting sick. All of it came together and led to the burnout.
But of course, gradually, I stopped holding up. I became irritable, angry, I snapped at the people close to me. Depression started; I was sad all the time. But I kept working — and kept on until my head started to hurt very badly. It became like this: I open the laptop, sit down, work for half an hour — and my head just starts to hurt so much that I can’t with it… well… I just can’t work any more. My blood pressure went up, my face went red.
Then I told my lead, most likely on a one-to-one call: “Listen, I can’t. I think I’ve got really sick.” I left the project and went to the bench — paid time between projects at EPAM. Back then you could sit on the bench for a while, wait for a project, rest a little. I rested about two months on the bench and gradually started to recover. But starting to work again was still hard: at the beginning of the new project, for a long time, I couldn’t work at full strength — I got tired fast.
Afterwards nobody even said thank you. Mostly it was because of the general atmosphere of the work, which causes a kind of general irritation inside the team. People were just tired of each other, and of course no words of gratitude were left for anyone. Nobody blamed anybody directly, but the general atmosphere was quite oppressive.
The village
I lived in a village then. I moved there in 2020, escaping the lockdowns: a friend rented me a house, and I spent the winter from 2020 to 2021 there — the last months of the crunch, and then the bench. On the bench I just walked, went to the forest, made bonfires — nature always restores me. Long nights, the fireplace, no programming at all. Back then I also started doing yoga again after a long break, and gradually came back to myself. I have taken care of my body a lot since then — exercise, good food.
I came back gradually too. I started to set myself boundaries. When a new project came, I cut the load to a minimum and worked only on the project, no extra duties. I worked on it deliberately slowly, keeping the work-life balance, leaving work on time no matter what. At some point I moved to a four-day work week. I still work a four-day week, and it helps me a lot, because I have three days to rest from work. Unfortunately I have to pay for them with my salary, but I think it’s necessary.
The full recovery took about a year and a half or two, I think. And completely-completely, I think, I never really recovered, but now it’s probably fine. Boundaries — that is what I changed. And I started telling all the other guys who got into the same situation that they shouldn’t do it like that.
Now the situation is a bit similar again. With agents everything seems easy — it’s like a slot machine in a casino: you pull it, and it throws you another hit of dopamine. And you have to deliberately refuse it at the moment you understand it’s time: time to close, time to finish.
Somebody nobody wanted to work with
After the bench, from March 2021 and for two years, I led a team of four developers on an internal company portal for a client. The project was so-so, not very interesting — just some internal company portal. But there I met a guy nobody wanted to work with.
One developer joined the team where I was the lead, and I saw right away that he was talented, because he went deep into what he was doing and always tried to find the cause of a problem, not just fix the bug.
And he was very bad with people. He came from a small town, had never worked in a team, and found it hard to talk to people. His English was weak, and people didn’t want to work with him, because he was so unsociable. I became his resource manager — at EPAM, the person who looks after a developer’s growth and projects. He wanted to leave the company.
I didn’t do any special trainings for him or anything like that. We just talked, chatted a lot, and one way or another touched on teamwork. Before that he had not worked in big teams and didn’t know how important the unity between people that happens in these teams is.
Actually, that unsociability was just a defence. He needed time to soften and to lower these shields a little. And he is really a wonderful, kind guy. When he relaxed a bit — and we worked together for a year and a half — he became a super cool, full member of the team. After the time we spent together, he is very much in demand everywhere now; people want to work with him. And we are still friends, a little. He lives in Turkey.
Why I liked being a lead
Again, because it is a lot of work with people. I always liked telling someone something, explaining something, helping people. When you are the lead, it is a natural, big part of your work. And it is very important that you, so to say, unblock other people, who either can’t, don’t know what to do next, or don’t understand what to do next.
This very work of removing barriers, removing obstacles, and teaching — I like it more than anything in the world, really. It is very-very important to me, and it gives great satisfaction.
That is how it looked from my side. From the client’s side it looked like this: in January 2022 an architect there wrote a recommendation for me on LinkedIn. I’ll quote it as it is, only without the client’s name:
Igor is one of the best developers and tech consultants I know. At [the client] we are every day happy to work with him.
We are lucky to work as one team with people from EPAM, regional IT and corporate IT. This is of cause [sic] possible because everybody and specially Igor concentrates on results and quality. It is so great have a business relationship that is based on trust and not time consuming politics.
Leaving
St Petersburg. I just love this city. I love the architecture; I worked a lot as a restorer on different historic buildings there. And I feel completely in my place there. I like the canals, I like that the river goes through the city, I like the granite, I like the architecture very much. I lived there for a long time, in the centre. It’s a special place where everyone in Russia who is somehow different from the rest comes. You meet all kinds of freaks there, and it’s very cool.
I miss Petersburg very much. But of course, now when I come — and I come once a year — it has changed a lot. The city I loved is almost gone, because everyone left. The city became different. But I still love it very much and would like to come back someday.
Autumn 2021, it was October. I was anxious, because in Russia the crackdown on the internet had started. I remember they started banning VPNs and censorship began. I thought this was leading to nothing good. And after the experience with COVID I decided to just take a kind of pause from life in Russia and live somewhere else. At that moment it was possible; EPAM allowed it.
I drove through Georgia into Turkey. I didn’t plan not to come back, but I took my things with me just in case. I didn’t know where I was going; there was no clear plan. Fethiye came on someone’s advice. We just arrived there. It turned out to be a small, great town by the sea, with a wonderful climate, very cheap.
And when the war began and everybody started to leave — to Turkey too — it was completely natural for me, since I was already there, to get involved in helping people. Again this same unblocking, removing obstacles. I invited everybody to Fethiye. A kind of community formed there: guys from EPAM, from St Petersburg — a lot of people came. At one point Fethiye became an EPAM settlement.
But then in Turkey problems with documents started, problems with legalisation. And many people saw Turkey as a transit point before going further, to Europe. I also understood quite fast that I don’t want to live in Turkey — the culture is very different. I thought for a long time where to go, chose between South America, Western Europe and Serbia. In the end I settled on Serbia, because it is close to Russia in culture and of course a pleasant country to live in.
The dream team
My last real scrum team. At the peak, I think, we had five developers. I was the lead. There was one guy on the backend and three frontend developers. We also had a project manager, who was also the business analyst, and two testers. Why was it wonderful? Because we were all friends, because everyone was a wonderful person.
It was 2024 to 2026, already after COVID, and we were scattered — a remote team. It was a life-science project, a WYSIWYG editor. Sometimes after work we would call each other and just chat. Everyone worked together very well, and we had a very friendly process. We kept more or less all the scrum ceremonies, but that wasn’t the point. The point was that the people were very good.
I’m very fortunate to have met these people. My last real scrum team was perfect, just amazing people, and I love all of them.
The last code I wrote by hand
The dream team ended because the client ran out of money and decided to replace developers from the CIS with developers from India. Gradually, one by one, two by two, people started to leave. It became clear that it was all ending, and I left too. That was January 2026. It was very sad. But I understand that since we work in outsourcing, it is unfortunately an unavoidable part of life — you have to change projects, jump from one to another, even though you get attached to people. I try to keep in touch with them and not get lost in this big world. Everyone moved to different parts of the world because of the war; all of them still work, not all at EPAM. Good friends.
That WYSIWYG editor was the last project where I wrote a big amount of code by hand. I did a lot of profiling there and dug around in the Redux store. It was a very complex project. After it there was a small one, software for scientific microscopes, where by hand I made only small edits and tests — and I moved to agents quickly. The last big thing I remember writing myself is that editor.
And then one more thing, which I understood only now. When I came up with some project of my own, what always stopped me was that I would really have to spend a lot of time writing that code myself. It was a kind of block that didn’t let me start. So during the years at EPAM there were practically no pet projects. GitHub shows it better than I can say it:
The year I learned, I started something every few weeks. Then for eight years almost nothing. Then 2026. What happened in 2026 is the next post.
People
Leading, unblocking, teaching — it was hard work, but rewarding. And now it is not needed. That’s a loss.
I think people were always the most important thing in the profession for me. And I’m a bit sad that all our work is getting fragmented, teams are getting smaller, that the machine is replacing us. We can work fast and efficiently — very fast and very efficiently. But this brotherhood, this society, is in fact already gone.