31 мая 2019

Будни разработчика

Интересно сравнить свои рабочие будни с буднями коллег по цеху? Или вы пока только задумываетесь о профессии программиста и хотите узнать, чем же на самом деле занимается настоящий прогер? Мы задали одному из наших Senior Developer’ов, Дмитрию, несколько вопросов о профессии и с удовольствием делимся с читателями его взглядом.

Как ты пришел в эту профессию?

Тяга именно к программированию появилась у меня не сразу, но интерес к технике и железу был с детства. Так что я закончил политех, после выпуска проработал инженером сервисного обслуживания год, понял, что мне это не очень интересно, и пошел пробовать свои силы в IT-компанию. Тут мне очень повезло, потому что знаний было не так много, особенно профильных, но мы понравились друг другу, и меня взяли, да еще и не на стажировку, а сразу джуниором. Так все и началось :)

Noveo developer's day начало карьеры

Из чего состоит твой рабочий день? Есть какой-то план, или все меняется день ото дня?

Каждый день по-своему уникален, но почти всегда есть текущий микроменеджмент ребят по задачам — я давно работаю на проекте и в силу этого разбираюсь в нем глубже других членов команды. План работы сформирован заранее, он понятен и конкретен, все задачи распределены, у нас нет краткосрочных спринтов из-за специфики проекта. Я делаю свои задачи, иногда ребятам в команде нужна моя помощь, так что в их задачах мне тоже нужно разбираться, плюс мы с командой каждый день проводим коротенькие SCRUM-митинги, микросовещания по 10-15 минут: обсуждаем, что сделали в предыдущие дни, что собираемся делать сегодня, и если есть какие-то текущие непонятные вещи, тут же их обговариваем и принимаем решение, кто кому чем поможет, к кому подойти, кого спросить. Такие собрания позволяют понять, чем в конкретный момент занята команда, выявить непонимание на ранней стадии.

Noveo developer's day

С чего начинается твой день? Есть какие-то ритуалы?

С кружечки вкусного свежего кофе :) На самом деле супер-ритуалов нет, но в последнее время мне кажется все более удобным начинать день со списка комментариев, полученных из нашей системы менеджмента задач. Таким образом я с утра настраиваюсь на рабочий лад и уже начинаю разбирать кейсы. Мне как тимлиду очень полезно понимать общий скоуп текущих проблем, какие вопросы есть и т.д.

Noveo developer's day рабочее место программиста

Что бы ты посоветовал новичкам?

Тут главное — понять, твое ли это. Если ты приходишь на работу, чтобы формально отработать 8 часов — это блажь, я с трудом верю в успех таких людей, мне кажется, вряд ли они получают действительно хорошие результаты. Это тоже подход, это вариант, это работает, я не спорю, но лично для меня важен блеск в глазах, когда реально прет от того, что ты делаешь, — я другого слова не подберу. Когда ты готов сидеть по 10-12 часов не ради дополнительных денег, а просто потому, что тебе прикольно получить что-то на выходе, тебя радует сам процесс.

А из советов — это постараться найти опытную команду, мне очень хороший старт дала именно моя команда, ребята не ленились мной заниматься: подходили, рассказывали, объясняли, помогали, какие-то книжки в свое время рекомендовали. Потом уже сам стал находить и читать нужную литературу.

Вообще нужно самому слушать, искать хороших учителей, наставников, стараться развиваться самому, обязательно читать околоспециальную литературу (тот же Фаулер, Боб Мартин), есть мастодонты, которые учат не только самому языку программирования, но и тому, как должен выглядеть твой код, архитектура, композиция, общие подходы. Это закладывает очень хорошую базу. У нас в Noveo, кстати, очень сильна эта составляющая: у нас хорошо развита система кураторства, сильные и увлеченные своим делом наставники, давно существует система тренингов, которые постоянно дополняются и совершенствуются, так что новички у нас сразу попадают в хорошие руки!

И еще новичкам на заметку: нужно обязательно воспринимать всю информацию критически, пытаться разбираться в ней, не принимая все на веру. До определенного момента можно развиваться самому, но наступает период, когда нужна команда. Команда дает очень много — и я даже не о знаниях программиста: поработав в команде, начинаешь задумываться о том, что твой код будет читать кто-то другой, пишешь код немного иначе, чтобы другие могли его понять, чтобы он был более расширяемым, более масштабируемым, чтобы можно было его переделать, не начиная все с самого начала.

Что тебя вдохновляет в работе?

Решенные задачи, маленькие успехи и достижения очень вдохновляют. И в какой-то момент уже важно не просто сделать работу, а чтобы код тебе самому нравился. Правда, через неделю ты посмотришь на него и скажешь, что это отвратительно и надо переделывать :) Так всегда, потому что ты немного растешь и меняешься.

Вдохновляют микропрорывы и микропонимание вещей. Очень радовало, когда я начал разбираться с тестированием и у меня было 2 или 3 стадии принятия всего этого. Сначала я писал тесты, потому что мне сказали их писать, я написал, что-то поправил. Потом я осознал, зачем они нужны и как работают и открыл для себя, что не нужно тестировать все, нужно тестировать конкретную функциональность, а не весь проект за раз. На этой стадии уже стало проще и понимать, и писать. И наконец я открыл для себя использование Mock для изоляции «стороннего» кода, чтобы сфокусироваться в тесте только на конкретном кусочке функциональности.

Noveo developer's day в какой-то момент уже важно не просто сделать работу, а чтобы код тебе самому нравился

Правда, что программисты и разработчики — большие перфекционисты? Это про тебя?

Давайте по-честному: с опытом это уходит :) Сначала ты пишешь что-то непонятное, потом начинаешь следить за качеством, делать это красиво, читать паттерны – это способ организации кода в принципе, и потом ты пытаешься впихнуть это везде и вместо того, чтобы написать маленький лаконичный код на 200 строк, ты делаешь 15 классов — и все эти подходы-переходы просто ради того, чтобы использовать то, о чем ты прочитал. Тут главное, чтобы тебе кто-то по рукам надавал. И в какой-то момент ты понимаешь, что это все классно и круто, но оно далеко не всегда нужно; это понимание только с опытом приходит.

В какой-то момент я перестал быть только разработчиком, который тупо делает какие-то задачи, пусть и красиво, эффективно, а стал все-таки больше внимания уделять именно бизнес-задачам и бизнес-процессам, потому что то, что мы делаем, — это всегда не вещь сама по себе, она кому-то нужна. И очень важно понимать, для чего нужно то, что ты делаешь, и находить баланс между «сделать хорошо» и «доставить вовремя». Тут, конечно, встает вопрос технического долга, когда ты закрываешь глаза и говоришь: все, это мы делаем плохо, но быстро, но потом это надо поправить (важно за этим тоже следить). А качественный скачок, на мой взгляд, происходит тогда, когда начинаешь понимать, что ты пишешь не просто код, который работает, а именно продукт для конкретного пользователя. И от этого очень сильно меняется мировосприятие, кодовосприятие. Ты зачастую готов сказать, что вот здесь у меня будет некрасиво и плохо, но в целом оно будет работать ровно так, как надо. И я это сделаю сейчас, потому что завтра заказчик уже, условно, потеряет деньги.

Что самое сложное в работе?

Самое сложное и самое интересное сейчас — понимать, зачем я что-то делаю и как это будет использоваться. Потому что благодаря этому в моей голове формируется архитектура и понимание, как эта штука должна работать, как я напишу, и от этого достаточно сильно может измениться реализация. Мне не нравится, когда мне говорят, как нужно сделать: мне нужно понимать, что делать, а как — я уже скажу сам. В Noveo у меня есть такая возможность — реализовать себя. Может, это слишком бахвально, самоуверенно, но когда ты понимаешь задачу полностью, целиком, ты осознаешь и принимаешь (те самые стадии), тогда она в голове сразу начинает реализовываться: я сразу вижу, с какой стороны мне зайти, куда что писать, какие классы создавать и т.д. Пока этого понимания нет, очень тяжело что-то сделать, потому что действуешь по инструкции: что-то собираешь, собираешь и даже не понимаешь, что получишь на выходе. И вроде как бы делаешь правильно — а результат непредсказуем, ведь у тебя нет в голове общей картины.

Тебе нравится твой уровень ответственности? Что ты предпочитаешь — руководить людьми или заниматься своими задачами?

Уже лет 5 я так или иначе тимлид, и когда прихожу на новое место работы, всегда говорю, что был тимлидом и быть им не хочу. Мне нравится именно сам процесс кода, нравится, когда я что-то делаю и это потом работает, и раньше мне казалось, что я трачу впустую время, когда с командой решаю какие-то вопросы, кому-то рассказываю, как надо сделать, кому-то — как не надо, делаю ревью кода, просматриваю коды, оцениваю, принимаю либо нет. Я думал поначалу, что это потерянное время, мне хотелось писать код, а это удавалось сделать 2-3 раза за неделю, и от этого очень сильно бомбило; было очень много интересных и сложных задач, которые я хотел решить сам, держал их до последнего, но потом понимал и отпускал, отдавал ребятам. И мне это никогда не нравилось, поэтому я говорил, что не хочу быть тимлидом, потому что хочу писать код. Хотя, конечно, очень приятно учить кого-то чему-то полезному. И мне нравится процесс обучения не как в школе с указкой, а какой-то естественный процесс, т.е. подавать пример, показывать хорошие и плохие стороны и давать возможность человеку разобраться самому и выбрать правильную сторону. Иногда приходится быть строгим, порой даже оказывать давление, но я всегда стараюсь объяснять, почему надо или не надо, приводить примеры и контрпримеры. И в последний год, не в последнюю очередь благодаря Noveo, мне это начинает все больше нравиться, хотя, может быть, я просто привык.

Noveo developer's day

Сложности мотивируют или наоборот останавливают?

Когда задача технически нетривиальная, наверное, это вновь сводится к тому, что надо понимать, что делать. У меня есть особенность: мне нужен психологический эффект утенка, когда, чтобы самому что-то осмыслить, ты должен это кому-то рассказать. На самом деле это очень часто работает даже с утенком (т.е. выдуманным другом), но с живым человеком, конечно, лучше, особенно если ему не все равно, он дает обратную связь, и в этой дискуссии рождаются порой интересные решения.

Можешь рассказать, кто такой программист, самыми простыми словами для чайников?

Это не какой-то rocket science, на мой взгляд; главное — у тебя должна лежать к этому душа, это должно быть призванием, как бы пафосно это не звучало. Я считаю, что каждый человек может делать все что угодно, но есть все-таки что-то, что нравится больше, что в силу самых разных факторов лучше получается. Работа должна доставлять удовольствие, ведь мы весь световой день проводим в офисе. Поэтому не надо себя через силу заставлять. И да, наверное, все считают, что айтишники получают просто миллионы денег — тот самый знаменитый миф. И если честно, не то, чтобы это был совсем миф, но надо понимать, что за них приходится работать, все не просто так достается. Это работа, и зачастую не самая простая.

Noveo developer's day Это работа, и зачастую не самая простая

Как ты думаешь, люди с любым складом ума могут прийти в эту профессию или аналитикам и математикам будет проще?

Сложно сказать, наверное, с математическим и аналитическим складом ума все же проще, но есть определенные базовые концепции именно в самом программировании, в любом языке, те же самые понятия переменных, простых конструкций типа циклов и условий, и если ты их не можешь понять никак, можно 20 лет подряд проходить миллионы курсов, проходить их хорошо, но именно с зубрежкой, а не с пониманием. А в программировании нужно как раз наоборот.

Есть ли шансы у гуманитариев?

У всех есть шансы! Я знаю много ребят, которые работают рядом с бывшими филологами, и в целом достаточно неплохо. Да, возможно, они в какой-то момент перестают расти как программисты и уходят куда-то в сторону, например, в менеджмент, в бизнес-аналитики, тестирование, еще куда-то, но почему бы и нет? И хотя все-таки мне кажется, что технический склад ума предпочтительнее, но на самом деле главное — понимание: если ты начал этим заниматься, прошло, условно говоря, 2-3 месяца, и ты чувствуешь, что не понимаешь, как это работает, то, скорее всего, это не твое.

Какой проект был самым интересным и вдохновляющим?

Все проекты были интересными, в каждый вкладывался. Я делаю эту работу, потому что она мне нравится. Был проект, связанный с fantasy-спортом, — вот он бы одним из самых интересных, потому что это совсем для меня новая область. Было очень непросто понять, как это все должно работать, но было очень прикольно делать.

Какими качествами должен обладать разработчик?

У меня в голове есть градация людей по их креативности. Т.е. есть ребята, которые придумывают новые технологии, с нестандартным и нешаблонным мышлением. Есть мидлы, которые хорошо реализуют эти придумки. Средний разработчик должен уметь решать типовые задачи. Внимательность к деталям, желание понимать происходящее, ответственность, когда не просто делаешь работу, но и переживаешь за результат и желание развиваться.

Что ты думаешь о будущем разработки?

Она будет занимать все больше и больше ниш, программы будут становиться все более мощными, способными решать более сложные задачи и будут накладывать более высокие требования к разработке, скорее всего. Все будет расти и развиваться в сторону интернета вещей — умные дома, умные холодильники, будет вести к автоматизации — автоматическое такси, автобусы.

Noveo developer's day Все будет расти и развиваться в сторону интернета вещей – умные дома, умные холодильники, будет вести к автоматизации – автоматическое такси, автобусы.

Как ты думаешь, профессия разработчика будет так же популярна в будущем?

Да, и даже еще более популярной. Надеюсь, что масса случайных людей потихоньку отсеется, а количество оставшихся в профессии людей перерастет в качество.

Чем занимаешься в свободное время?

Раньше свободное время посвящал проектам для себя, сейчас больше времени и внимания уделяю семье. Приходит понимание, что мне уже не 20 лет, когда закинулся энергетиком и пошел после 3 бессонных ночей, что есть вокруг жизнь, семья. Life balance начинает нормализоваться, я не только про знания и карьеру, но и про семью сейчас. Нет ярко выраженных хобби, все ситуативное.

Благодарим Диму за такой интересный и насыщенный разговор! Надеемся, нам удалось немного «рассекретить» современного разработчика из современной IT-компании, а, возможно, и увлечь кого-то этой профессией.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Читайте в нашем блоге

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: