В Англии все одержимы футболом. Уйма любительских команд и куча стадионов. И вот через знакомых ко мне обратился один англичанин, у которого была идея и немного денег — он попросил сделать приложение, в котором люди могли бы управлять своей любительской командой по футболу. Расставлять людей на поле, делать замены, искать игроков, заказывать стадионы и общаться в чате.
В то время у меня был странный период в жизни — и я не знаю, как вообще выжил. Днем университет, ночью работа бэкендером с дежурствами до утра, и где-то в промежутках курсы андроид разработки. Причем у меня хватало энергии и энтузиазма ходить туда не для галочки — а по настоящему загореться.
Поэтому я согласился на работу. И это была просто отдушина после того, что я пережил в бэкенд разработке.
В моей школе в кабинете математики висела табличка с надписью, которая сразу меня заинтриговала. Потом я не раз убедился в верности этих слов:
Программа делает не что ты хочешь, а то, что написано
Когда я поступил в универ, на встрече с преподавателями заявил, мол, хочу быть программистом. Меня заверили — будешь. Правда добавили, чтобы стать программистом придется учиться всю жизнь. Как-то по-своему это истолковав, я не стал растягивать обучение на всю жизнь и навалился по полной: пары в универе, курсы по вечерам, фриланс по ночам.
Поиск подработки завел меня в интересный проект: разработка движка распознавания речи на плюсах. Вместе с командой мы боролись за процент распознавания: я реально надеялся прокачать машину до 100% результата!
Это была настоящая боль перфекциониста. Я придумывал свои решения, брал чужие опенсорсные движки, разбирал их на винтики, и собирал заново. Кастомизировал код, не спал ночами, клевал на парах. Разматывал километры кода ради нескольких процентов на финише.
Ничего так и не вышло. Только через пару лет я узнал, что это было недостижимо. Мне попалась новость о том, что нейронная сеть фейсбука распознает лица с вероятностью не более 95%. Я посочувствовал фейсбуку: даже такой крупной компании не удалось достичь сотни. А еще в статье была отличная приписка о том, что человек распознает лица с вероятностью 93%. Серьезно?
Так я впервые немного разочаровался в разработке
Попробовал фронтенд, но все, что тогда о них знал, лежало в области стереотипа «они делают сайты». Уже тогда это звучало скучно. Хотелось чего-то по-интереснее. Чтобы найти новую область, я двинул в Сколково.
В Сколковской магистратуре платили хорошую стипендию. Но если ты хочешь жить в Москве на широкую ногу, заколачивай чуточку больше. Я наткнулся на вакансию компании из финсектора. Нужно было писать на питоне бэк и иногда дежурить по ночам.
На собеседовании меня хорошенько погоняли по многопоточности, по плюсам на листочке (писать код от руки было тяжело). Поспрашивали какие-то базовые вещи по питону, и в итоге взяли.
До этой компании я работал только в небольших командах. В кейсе с распознаванием речи мы трудились впятером, здесь же яблоку негде было упасть от разработчиков. И все они знали больше меня. Я сыпал вопросами, и кайфовал, когда моя работа получала фидбэк. Первые три недели я осваивал ремесло. Каждое код-ревью заканчивалось ответом “плохо”. Я всё переделывал, но лучше не становилось. Мой код должны были заапрувить как минимум 4 человека. Бывало, трое говорили “норм”, а четвертый все равно находил, к чему придраться.
Там же мне показали интересный способ ревью — я отдаю лиду код, он помечает некоторые места, но не говорит, в чем там проблема, я должен попытаться понять сам. И ты реально начинаешь думать — это очень прокачивает.
Но даже такой строгий контроль за качеством не спас от беды.
Работа была связана с базами данных. На серверах компании хранились тонны финансовой информации клиентов (банковские карточки, истории операций). Раз в 5 дней выпадала ночь, которую я должен был провести на работе. Я следил, чтобы все работало, отвечал на почту и звонки. Мне нравились ночные дежурства. За выход платили даже не двойную, а тройную ставку. Просидел вахту с девяти вечера до шести утра — получил оплату как за 3 дня. А что еще нужно студенту?
Кроме денег студенту нужно высыпаться
В нашей компании все рабочие процессы были выстроены безупречно. Проверки, тесты, ревью. Снова проверки, тесты и ревью. Но даже такая система может дать сбой, и ты должен быть готов, что тебя словно солдата-срочника, поднимут утром по тревоге.
В один прекрасный день я вернулся с дежурства. Просто валился с ног. Пошел в универ — поизображал студента. Вечером я вырубился замертво, а не было и восьми часов. Хотелось проспать вечность, не меньше.
Но в 4 утра меня разбудил человек, который отвечал в компании за весь бэк — он позвонил мне впервые за все время.
— Ты что-нибудь делал вчера с базой?
— Нет, ничего особенного.
— Вставай и срочно к компу.
Я конечно жаворонок, но все равно офигел от звонка. Мое дежурство было накануне аварии.
Конечно, первая мысль — я все нахрен сломал
Оказалось, целую группу пользователей просто выпилили. Ее не было в продбазе. Но она существовала здесь всегда, куда она провалилась? Начал искать. Посмотрел по логам, что запускалось. Начал курить эти логи (первые полчаса ушли на то, чтобы проснуться, еще полчаса — разогреть логи и понять, какие скрипты запускались). Выкачал себе скрипты, посмотрел, что они делали, нарыл, какие из них лезли именно в это место. И нашел ошибку.
Запустил на тестовом окружении — тестовые пользователи выпилились. Хм, посмотрел, как эта штука проверялась. Почему-то на этот раз, пусть у нас и три девстенда, первый и второй пропустили, а третий даже не свалился. Тест на это никто не писал (поставил себе галочку написать, чтобы больше такого не происходило).
Параллельно со мной так же сидели и искали проблему куча народу, постоянно созваниваясь. Наконец, в 6 утра мы поняли, что кто-то написал скрипт, проверил на тесте, но не учел один важный кейс. В итоге юзеры подпали под тех, что подлежали удалению.
Так мы за ночь грохнули около миллиона пользователей
Мы восстановили базу, сделали бэкап. Пока мы не знали о проблеме, пользователи вводили новые и новые данные, в течение всей ночи. Мы написали всем о технической неполадке, закрыли вход, чтобы не было потока новой информации. Предстояло мёржить базу за 7 часов, накатывать на ту, что в ноль, возвращать всех пользователей. Тем, кто пытался зайти, но не смог, компания отписала отдельные извинения, задарила бонусы.
К 7 утра мы все починили. В 8 часов компания уволила человека, который все это заварил.
Парень работал хорошо, всегда все проверял. Пару раз он даже делал мне ревью, и советовал реально классные вещи. Но это как с вождением. В первый год за рулем ты боишься всего, и плетешься в правом ряду. Потом немного расслабляешься, и в этот самый момент попадаешь в аварию!
Стал бы я увольнять человека за ошибку? “Программа делает то, что ты ей написал”. Но мы же разрабы, мы постоянно ошибаемся. Представьте, как этому парню было плохо тем утром. Да и зачем выставлять человека, который теперь будет выверять в своем коде каждый символ? Но менеджмент хотел крови, и в следующие пару недель вылетели еще несколько причастных к этому случаю.
Я поработал там еще пару недель, но уже понимал, что хочу уйти из бекенда.
В Сколково обратил внимание, как мне интересен проект с андроид разработкой. Мы разрабатывали приложение и связывали его с ардуино. Задача была довольно простая: надо было подключиться к ардуино по bluetooth или wifi с телефона и передать команду. В приложении была пара экранов с кнопками. По задумке ардуино была связана с макетом умного дома и эти кнопки должны были открывать и закрывать окна.
Причин влюбиться в андроид с первого взгляда было хоть отбавляй
Мне очень понравилось, что есть UI. Понравилась возможность делать анимации (сейчас в андроид разработке я люблю это больше всего). Документации от Google была гораздо лучше той, что мне до этого довелось видеть. Java зашел больше питона и C++. Пока проходил курсы по андроиду на курсере, понял одну вещь:
мне важно сразу видеть результат.
Также стало проще объяснить, чем я занимаюсь. Попробуйте рассказать человеку, что такое работа в бекенде. Зачем это нужно и так далее. С андроидом просто достаешь телефон и говоришь — вот это приложение я сделал.
Тот кейс с футболом — Мне дали написанный индусами проект. Честно говоря, справились они не очень. Вместо того, чтобы выделять в функцию код они копировали 700 строк снова. Рефакторинг занял две недели.
И все равно я закончил его и просто дико кайфанул. Я понял, что хочу этим заниматься и дальше, принялся искать уже компанию для работы. Прошел андроид школу e-legion, сделал тестовое, устроился — а теперь возглавляю здесь Android разработку.
И несказанно рад, что в четыре утра меня не поднимут спасать горящие базы, и не заставят потом составлять расстрельные списки.