Everyone in England is obsessed with football. Lots of amateur teams and tons of stadiums. And through some acquaintances, an Englishman approached me with an idea and some money – he asked to make an application in which people could manage their amateur football team. Place people on the field, make substitutions, look for players, book stadiums and chat.
At that time, I had a strange period in my life – and I don’t know how I survived at all. University during the day, at night work as a backend on duty until the morning, and somewhere in between courses of android development. Moreover, I had enough energy and enthusiasm to go there not for show, but to really catch fire.
In my school, in the math classroom, there was a sign with an inscription that immediately intrigued me. Then I was more than once convinced of the correctness of these words:
The program does not do what you want, but what is written
When I entered the university, at a meeting with the teachers, I said, they say, I want to be a programmer. I was assured – you will. True, they added that to become a programmer you will have to study all your life. Having somehow interpreted this in my own way, I did not stretch the training for a lifetime and piled on in full: couples at the university, courses in the evenings, freelancing at night.
Looking for a part-time job took me into an interesting project: the development of a speech recognition engine on the plus side. Together with the team, we fought for the percentage of recognition: I really hoped to pump the car up to 100% of the result!
It was the real pain of a perfectionist. I came up with my own solutions, took other people’s open source engines, took them apart into cogs, and reassembled them. I customized the code, did not sleep at night, pecked in pairs. I unwound kilometers of code for a few percent at the finish line.
Nothing came of it. It wasn’t until a couple of years later that I found out that this was unattainable. I got the news that Facebook’s neural network recognizes faces with a probability of no more than 95%. I sympathized with Facebook: even such a large company failed to reach a hundred. And there was also an excellent postscript in the article that a person recognizes faces with a probability of 93%. Seriously?
So for the first time I got a little disappointed in development
I tried the frontend, but everything I knew about them then lay in the area of the stereotype “they make websites”. It sounded boring even then. I wanted something more interesting. To find a new area, I moved to Skolkovo.
The Skolkovo magistracy paid a good scholarship. But if you want to live in Moscow on a grand scale, nail a little more. I came across a vacancy for a company from the financial sector. It was necessary to write back in python and sometimes be on duty at night.
At the interview, I was thoroughly driven by multithreading, by pluses on a piece of paper (it was difficult to write code by hand). They asked around for some basic things about python, and in the end they took it.
Before this company, I only worked in small teams. Five of us worked in the speech recognition case, but here the apple had nowhere to fall from the developers. And they all knew more than me. I was bombarded with questions and blissed out when my work got feedback. The first three weeks I mastered the craft. Each code review ended with a “bad” answer. I redid everything, but it didn’t get any better. My code had to be approved by at least 4 people. Sometimes, three said “norms”, and the fourth still found something to complain about.
They also showed me an interesting way of reviewing – I give the lead the code, it marks some places, but does not say what the problem is, I have to try to figure it out myself. And you really start to think – it is very pumping.
But even such strict quality control did not save us from trouble.
The work was related to databases. The company’s servers stored tons of customer financial information (bank cards, transaction history). Once every 5 days, there was a night that I had to spend at work. I made sure that everything worked, answered mail and calls. I liked the night shifts. For the exit they paid not even a double, but a triple rate. I stayed on duty from nine in the evening until six in the morning – I got paid as in 3 days. What else does a student need?
In addition to money, the student needs to get enough sleep
In our company, all work processes were built flawlessly. Checks, tests, reviews. Again checks, tests and reviews. But even such a system can fail, and you must be prepared that you, like a conscript soldier, will be raised in the morning on alarm.
One fine day I returned from duty. I just fell off my feet. I went to the university and portrayed a student. In the evening I passed out dead, and it was not even eight o’clock. I wanted to sleep for eternity, no less.
But at 4 am I was woken up by the person who was responsible for the entire backing in the company – he called me for the first time ever.
– Did you do anything with the base yesterday?
– No, nothing special.
– Get up and go to your computer urgently.
I’m a morning person, of course, but I still went nuts from the call. My watch was on the eve of the accident.
Of course, the first thought is I broke it all
It turned out that a whole group of users had just been cut. She was not in the store. But she always existed here, where did she fall? I started looking. Looked at the logs that started. I started smoking these logs (it took the first half an hour to wake up, another half hour to warm up the logs and understand which scripts were running). I downloaded the scripts for myself, looked at what they were doing, dug up which of them climbed into this particular place. And I found a mistake.
Launched it on a test environment – test users sawed out. Hmm, looked how this thing was tested. For some reason, this time, even though we have three devstends, the first and second were missed, and the third didn’t even fall. Nobody wrote a test for this (I ticked myself to write so that this would not happen again).
In parallel with me, a lot of people were sitting and looking for a problem, constantly calling up. Finally, at 6 am, we realized that someone had written a script, checked it on a test, but did not take into account one important case. As a result, users fell under those that were subject to removal.
So we banged about a million users overnight
We restored the database, made a backup. Until we knew about the problem, users entered new and new data throughout the night. We wrote to everyone about a technical problem, closed the entrance so that there was no stream of new information. It was necessary to freeze the database in 7 hours, roll it over to the one that was zero, return all users. For those who tried to enter, but could not, the company wrote off a separate apology, charged bonuses.
We fixed everything by 7 am. At 8 o’clock, the company fired the man who brewed it all.
The guy worked well, he always checked everything. A couple of times he even reviewed me and suggested really cool things. But it’s like driving. In the first year behind the wheel, you are afraid of everything and trudge in the right lane. Then you relax a little, and at this very moment you have an accident!
Would I fire a person for a mistake? “The program does what you wrote it.” But we are developed, we constantly make mistakes. Imagine how bad this guy was that morning. And why put up a person who will now verify every character in his code? But the management wanted blood, and in the next couple of weeks, several more involved in this case flew out.
I worked there for a couple more weeks, but I already realized that I wanted to leave the backend.
In Skolkovo I noticed how interested I am in a project with android development. We developed an application and linked it to arduino. The task was quite simple: you had to connect to the arduino via bluetooth or wifi from your phone and send the command. The app had a couple of screens with buttons. As conceived, the arduino was associated with the layout of a smart home and these buttons were supposed to open and close windows.
There were more than enough reasons to fall in love with an android at first sight
I really liked that there is a UI. I liked the ability to do animations (now in android development I love this the most). The documentation from Google was much better than what I had seen before. Java has gone over python and C ++. While I was taking courses on android on the cursor, I realized one thing:
it is important for me to see the result immediately.
It also made it easier to explain what I am doing. Try to tell the person what a backend job is. Why is it needed and so on. With an android, you just take out your phone and say – I made this application.
That case with football – I was given a draft written by Indians. To be honest, they didn’t do very well. Instead of extracting code into a function, they copied 700 lines again. The refactoring took two weeks.
And I finished it anyway and just got crazy. I realized that I wanted to continue doing this and started looking for a company to work with. I went through the android school e-legion, made a test, got a job – and now I’m heading Android development here.
And I’m incredibly glad that at four in the morning they won’t lift me up to save the burning bases, and they won’t force me to draw up execution lists later.