Home Development for Android Is it worth firing a rabbi for a big, expensive mistake? I think not, but management wanted blood

Is it worth firing a rabbi for a big, expensive mistake? I think not, but management wanted blood

by admin

Is it worth firing a rabbi for a big, expensive mistake? I think not, but management wanted blood
Everyone in England is obsessed with soccer. Lots of amateur teams and lots of stadiums. So I was approached by an Englishman who had an idea and some money, through some acquaintances, to make an app where people could manage their amateur soccer team. Put people on the field, make substitutions, search for players, book stadiums, and chat.
I had a strange period in my life at the time – and I don’t know how I even survived. University during the day, backender work at night, and android development courses somewhere in between. And I had enough energy and enthusiasm to go there not for a tick – but to really catch fire.
So I took the job. And it was just an outlet after what I experienced in backend development.
In my high school, there was a sign hanging in the math room that immediately intrigued me. Then I was repeatedly convinced of the correctness of these words :

The program doesn’t do what you want, it does what it says

When I went to university, at a meeting with the professors I said, "I want to be a programmer. I was assured – you will. But they added, that to become a programmer you have to study the rest of your life. Somehow I interpreted it in my own way, and I did not want to stretch the training for the whole life, I worked hard: couples at the university, courses in the evenings, freelancing at night.
The search for a part-time job led me to an interesting project: the development of a speech recognition engine on the pros. Together with the team we struggled for recognition percentage: I really hoped to pump the machine up to 100% result!
It was a real perfectionist’s pain. I came up with my own solutions, took other people’s open-source engines, took them apart, and reassembled them. I was customizing code, staying up nights, pecking away on fumes. Unwinding kilometers of code for a few percent at the finish line.
Nothing ever came of it. It wasn’t until a couple of years later that I found out that it was unattainable. I got the news that Facebook’s neural network recognized faces with no more than a 95% probability. I felt sorry for Facebook: even a company this big couldn’t reach a hundred. And the article also had a great postscript about humans recognizing faces with a 93% probability. Really?

So for the first time I was a little disappointed in the development of

Tried frontend, but everything I knew about them then lay in the realm of the "they make websites" stereotype. Even then it sounded boring. I wanted something more interesting. To find a new field, I moved to Skolkovo.
The Skolkovo master’s program paid a good stipend. But if you want to live the high life in Moscow, make a bit more money. I came across a vacancy for a company in the financial sector. I had to write back-end python and sometimes I had to be on duty at night.
At the interview they gave me a good run-through on multithreading, pluses on the worksheet (writing code by hand was hard). They asked me some basic python stuff, and finally got me the job.
Before this company, I had only worked in small teams. In the speech recognition case, there were five of us, but here there was nowhere for the developers to go. And they all knew more than I did. I was bombarded with questions, and I was thrilled when my work got feedback. For the first three weeks, I mastered the craft. Every code review ended with a "bad" answer. I reworked everything, but it wasn’t getting any better. My code had to be reviewed by at least four people. At times three of them said "ok", but the fourth one would still find something to complain about.
They also showed me an interesting way to review – I give the lid the code, he marks some places, but he doesn’t tell me what the problem is, I have to try to figure it out myself. And you really start to think – it’s very pumping.
But even such strict quality control did not save the trouble.
The job involved databases. Tons of clients’ financial information (bank cards, transaction histories) were stored on the company’s servers. Once every 5 days, there was a night that I had to spend at work. I made sure everything worked, answered emails and calls. I loved the night duty. It wasn’t even double, it was triple pay for going out. I was on watch from 9 p.m. to 6 a.m. and I got paid for three days. What else does a student need?

In addition to money a student needs to get enough sleep

In our company, all work processes were lined up flawlessly. Checks, tests, reviews. Checks, tests, and reviews again. But even such a system can fail, and you have to be ready, that you, like an enlisted man, will be raised in the morning on alarm.
One day I came back from duty. I was just exhausted. I went to the university and pretended to be a student. In the evening I passed out dead, and it was not even eight hours. I wanted to sleep forever, no less.
But at 4:00 a.m. I was woken up by the man who was in charge of all back at the company – he called me for the first time ever.
– Did you do anything with the base yesterday?
– No, nothing much.
– Get up and get to the computer right away.
I’m a morning person, of course, but I’m still freaked out by the call. My shift was the day before the accident.

Of course, my first thought is, I broke the whole fucking thing.

Turns out an entire group of users had just been kicked out. It wasn’t in the foodbase. But it had always existed here, where had it gone? Started looking. Looked at the logs, what was running. Started smoking these logs (the first half hour was spent waking up, another half hour – to warm up the logs and understand what scripts were running). I downloaded the scripts, looked at what they were doing, dug what they were doing in this exact spot. And I found the error.
Ran it on a test environment – the test users dropped out. Hmm, looked at how this thing was tested. For some reason this time, even though we have three devstands, the first and second missed, and the third didn’t even crash. No one wrote a test for this (ticked myself off to write so this wouldn’t happen again).
Simultaneously with me a bunch of people were sitting and looking for the problem, constantly calling each other. Finally, at 6 am we realized that someone had written a script, checked it on the test, but did not take into account one important case. As a result, the users were subject to deletion.

That’s how we killed about a million users overnight

We restored the database, made a backup. While we didn’t know about the problem, users were entering new and new data, all night long. We wrote to everyone about the technical problem and closed the login so there was no flow of new information. We had to mop up the database in 7 hours, roll up the one at zero, bring back all the users. For those who tried to log in, but could not, the company wrote a separate apology and gave bonuses.
By 7:00 a.m. we had it all fixed. At 8 o’clock the company fired the person who made it all work.
The guy worked well, always checked everything out. A couple of times he even did a review for me, and advised me on really cool stuff. But it’s like with driving. The first year you’re driving, you’re scared of everything, and you’re slipping into the right lane. Then you relax a little bit, and at that very moment you get into an accident!
Would I fire a person for a mistake? "The program does what you wrote it to do." But we’re developers, we make mistakes all the time. Imagine how bad this guy was that morning. And why expose a man who is now going to have to check every single character in his code? But management wanted blood, and over the next couple of weeks a few others involved in the case dropped out.
I worked there for a couple more weeks, but I already knew I wanted to leave the backend.
In Skolkovo, I noticed how interested I was in a project with android development. We were developing an application and connecting it to the arduino. The task was quite simple: we had to connect to the arduino via bluetooth or wifi from the phone and send a command. The application had a couple of screens with buttons. The idea was that the arduino was connected to a smart house and these buttons were supposed to open and close the windows.

Reasons to fall in love with android at first sight were plentiful

I really liked that there was a UI. Liked the ability to do animations (now in android development I love that the most). The documentation from Google was much better than what I had seen before. Java was more fun than python and C++. While taking courses on android on courseware, I realized one thing :
it’s important for me to see the result right away.
It also made it easier to explain what I do. Try telling a person what a backend job is. Why it’s needed and so on. With android, you just pull out your phone and say – this is the app I made.
That soccer case – I was given a project written by the Indians. To be honest, they didn’t do a very good job. Instead of allocating code to a function they copied 700 lines again. Refactoring took two weeks.
And anyway, I finished it and just got wildly high. I realized that I wanted to keep doing this, so I started looking for a company to work for. I went to android school e-legion, did some testing, got a job and now I’m in charge of Android development here.
And unspeakably glad that I won’t be woken up at four in the morning to rescue burning bases, and won’t be forced to make a firing list afterwards.

You may also like