Трудовые будни айтишников ассоциируются с постоянным сидением за компьютером. Во многом это действительно так, но график у каждого свой. Наш герой Алексей Каньков — бэкендер, который работает на удаленке и уже полгода живет в Грузии. Посмотрите, как выглядит его типичный рабочий день.
08:00. Просыпаюсь. Не по будильнику, просто дети уже встали и, как обычно у них принято, начали шуметь. Беру телефон и смотрю, что произошло за ночь, — много рассылок в почте. Удаляю лишнее, потому что люблю пустой почтовый ящик. Листаю соцсети, Telegram, YouTube. Не знаю, зачем я это делаю. Нужно отучить себя от этой привычки.
08:20. Обычно я не завтракаю. Насыпаю в кружку растворимый кофе и сахар. Добавляю кипяток и молоко. На нормальную кофеварку тратить деньги жалко, потому что мы сейчас живем кочевой жизнью. Не хочется терять деньги за купленную технику, которую не заберешь с собой. Выхожу на балкон. И захожу обратно. Уже ноябрь, а ноябрь в Грузии — это холодно. Днем обещают +15, а сейчас около +7. Начинаю подумывать о том, чтобы переехать в более теплое место. Совсем разбаловался. Я родом из Алтая, там в ноябре уже снег лежит. А тут говорят, что и зимой снега почти не бывает. Врут, наверное?
9:00. Начинаю работать. Я делаю то, что никто не видит глазами, а именно — бэкенд, внутреннюю часть сервиса. API, над которым я сейчас работаю под капотом, очень асинхронен. REST API-обработчик, принимающий запросы от браузера, шлет задачи в очередь RabbitMQ (брокер сообщений). Обработчики задач достают их из очереди по мере поступления и выполняют. Плюс к этому часть процессов запускается по расписанию. Сейчас пытаюсь отловить баг — статусы объектов неправильно сохраняются в базе данных MySQL. Доступ к одним и тем же объектам в базе данных получают одновременно несколько процессов сразу. И результирующий статус зависит от того, в какой последовательности эти процессы отработали. Это как тот кот, который и жив, и мертв. Непонятно, какое стечение обстоятельств приводит к проблеме, потому что влияет много асинхронных процессов. Кто знает, может быть, это еще зависит от фазы луны и погоды на Марсе?
11:00. В Slack бот пишет, что моего ревью ждут 2 пул-реквеста на GitHub. В нашей компании принято, что любые изменения в коде, будь то новая функциональность или починка бага, должны посмотреть как минимум два других программиста. Для этого и нужны пул-реквесты, наборы изменений. Люблю ботов — с ними просто. Они делают свою работу и не просят повышения зарплаты. Не то что люди — то у них выгорание, то болит голова. А если серьезно, то этот бот сильно помог решить проблему ревью кода: если раньше он мог провисеть неделю, то сейчас укладываемся за несколько дней. Просматриваю чужой код. Люблю, когда пул-реквесты небольшого объема. Пишу пару небольших замечаний на тему того, что я бы сделал по-другому, но все равно апрувлю, потому что не нашел ничего критичного.
Читайте также: Апрувить пул-реквест: сленг разработчиков и как его понимать
12:00. Обед. Сегодня готовлю я. Дети у нас на семейном обучении, поэтому иногда я стараюсь разгрузить жену. Слово «готовлю» я понимаю довольно широко. Повар из меня так себе — могу сварить пельмени или пожарить картошку. Тут с пельменями плохо, поэтому будут хинкали. А еще пользуемся доставкой из ближайших ресторанов — это тоже входит в мое понятие «готовить». Доставка еды в Грузии радует — от 30 минут до часа, и всё на столе.
13:00. Командный митинг. Члены нашей команды не сильно разбросаны по миру. В основном все в Европе: 10 человек из 5 стран — Латвии, Португалии, Греции, Грузии и Мальты. Как всегда, все рассказывают о том, как прошел их вчерашний день, какие планы на сегодня. Ничего нового. Люблю такие ежедневные встречи. Когда раньше работал из офиса, думал, что совсем интроверт. Но стоило перейти на полную удаленку, как сразу понял, что и мне нужны люди вокруг. Иногда без них хочется выть.
13:40. Продолжаю отлаживать код. В конце концов нахожу ту самую проблему. И думаю: как я ее не заметил раньше? Все так просто, оказывается. И даже погода на Марсе тут была ни при чем. Большую часть этого проекта я написал сам с нуля. Следовало ожидать, что все должно быть идеально: сам себе делаешь дизайн системы, придумываешь структуру базы, полностью сам реализуешь. Что может пойти не так? А ведь идет. Не то чтобы все плохо, но сейчас мне хочется сделать некоторые вещи по-другому. Надо будет когда-нибудь все переписать 😉
16:00. Делаю очередной перерыв в работе. Иду на YouTube и нахожу несколько интересных курсов по технологиям, которые я не очень хорошо знаю. Добавляю курс по PyTorch (фреймворк машинного обучения для языка Python) из канала freeCodeCamp в «Посмотреть позже» — кто знает, может, когда-нибудь займусь и искусственным интеллектом. Открываю «Посмотреть позже» и вижу, как много там уже таких курсов. Одни начаты, другие почти закончены. Но суть в том, что многие из них не будут закончены никогда. Удаляю из плейлиста пару видео, которые были актуальны пару лет назад, а сегодня их можно уже в музей.
16:30. Возвращаюсь к коду. А точнее, к тестам. У нас в компании нельзя закрыть задачу, если код покрыт тестами меньше чем на 70 процентов. А лучше — 80. Благодаря новым тестам нахожу один небольшой баг.
18:00. Ужин. В этот раз готовит жена. Проблема с готовкой в том, что местная кухня сильно отличается от той, к которой мы привыкли. Поэтому в основном продукты в супермаркетах рассчитаны на вкусы местных. Например, большинство сыров, которые тут продают, очень похожи на то, что у нас называют брынзой. Купить привычные нам сорта можно не в каждом магазине. Приготовить простой борщ — тоже целое приключение. Например, квашеную капусту тут не найти, да и свекла есть далеко не везде.
19:00. Судейство хакатона. На прошлой неделе напросился судьей на хакатон. Одна компания решила привлечь таким образом внимание к своему продукту. Призовой фонд небольшой — $1500. Двадцать пять работ дошли до конца. Просматриваю презентации и код.
Некоторые работы смотреть просто грустно: в презентации лишь набор каких-то скриншотов без объяснения. Пытаюсь хоть как-то найти в этом что-то ценное. Лезу в исходный код на GitHub. Волосы встают дыбом: код такой, что начинаешь сомневаться в будущем нашей профессии. К счастью, от начинающих специалистов есть и вполне приличные работы. Но, конечно, они отличаются от тех, которые писали люди с опытом.
Получается избиение младенцев: участвуют и разработчики с десятилетним опытом, и новички. Разумеется, шансов на победу у последних тут нет. Все призовые места получают опытные программисты.
21:00. Время прогуляться. Надеваю наушники, включаю недослушанную книгу и в путь. В последнее время подсел на книги Нила Геймана. Сейчас слушаю American Gods. Час прогулки позволяет немного отдохнуть голове и размяться ногам.
22:30. Дети спят. Можно побыть спокойно с женой, попить чай с печеньем.
00:00. Ложимся спать.