Тимофей, Team Lead at Keep Solid - компания с продуктами в сфере шифрования и защиты данных. Тимофей является членом программного комитета конференции OdessaJS и активно продвигает современные подходы во фронтенде, выступая на конференциях.

Twitter
LinkedIn
Facebook

«Когда в 2011-2012 годах стал активно развиваться фронтенд, и с появлением JavaScript, HTML5 и различных фреймворков понял, что это мое»

С чего начинался твой путь в IT?
Старенький компьютер впервые у меня появился в 2005 году. Первый год на радостях я играл просто в видеоигры. Потом пришло осознание, что жизнь проходит мимо, да и надоело играть. Стал увлекаться веб технологиями и изучать вопрос, как разрабатывать сайты. На тот момент Youtube не был инструментом для обучения, как сейчас, например.
Обучаться было сложнее и дольше, потому с 2006 по 2009 год параллельно учился и делал проекты на фрилансе иногда. Конечно же, за них теперь стыдно, надеюсь, ни один из них сейчас не функционирует, но таким был мой путь к коммерческим серьезным проектам. Обучался 10-11 класс и потом еще четыре года в «Шаг» в г. Одесса на дизайнера. На тот момент у меня было неверное представление о программировании. Пробовал тогда только С и казалось, что программирование – это только программы для Windows, или Web на PHP, и мне это жутко не нравилось, потому и принял решение обучаться дизайну. А когда в 2011-2012 годах стал активно развиваться фронтенд, и с появлением JavaScript, HTML5 и различных фреймворков понял, что это мое.

Какую позицию ты сейчас занимаешь и как выглядит твой день?
Работаю я в компании KeepSolid на позиции тим лида. Мы разрабатываем веб версию продукта, который до этого был только на нативных платформах. Думаю, что мой день нельзя выделить особенным: утро начинается с почты, дальше выполнение текущих задач. Конечно же, большая часть моей работы занимает коммуникация с коллегами, но к счастью, иногда получается и код пописать. Иногда обучаю. Это может быть короткий курс или летом могу проводить стажировку. Наша компания предоставляет такую возможность. Кандидаты заполняют анкеты, после чего мы выбираем лучших и 10 человек проходят стажировку в течение месяца. По итогу, не сразу, но со временем мы пригласили в команду одного из участников стажировки.

«Я заинтересован в том, чтобы мои советы помогали обучаться ребятам и совершенствовать их код»

Как у вас построена коммуникация в команде?
Задачи на меня поступают от Project Manager’а, ему, в свою очередь, их поручает Product Manager. После чего я ответственен за то, чтобы правильно делегировать и распределить задачи в команде. Причем не просто скинуть «тикет», но оказать помощь и проконтролировать результат. Конечно же, в зависимости от опыта члена команды, степень моего участия разная. Также я заинтересован в том, чтобы мои советы помогали обучаться ребятам и совершенствовать их код.

«Строю свои процессы на доверии и терпении»

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

На что ты обращаешь внимание во время собеседований на позицию Middle уровня?
На мой взгляд, существуют две версии JavaSript’а: та, которая используется в работе и та, которая используется во время собеседований. Я всегда против «мертвого» JS, самому бы не понравилось, если бы задавали подобные вопросы. Выходит, что надо повторять то для собеседований, что вряд ли может реально пригодиться. В основном, я интересуюсь сложными задачами, которые приходилось решать кандидату, чтобы понять его уровень, и иногда базовые вопросы, конечно. Основы фундаментальные тоже необходимо знать, не без этого. Это могут быть основы по HTML и CSS, основы JS, без банальностей – без замыканий, прототипов и тому подобного. Могу спросить, как браузер работает, как комбинирует рендеринг HTML, CSS, JS. Конечно, не многие этими вопросами сейчас задаются, кандидаты Junior уровня только актуальными вопросами интересуются. Практикую тестовые задания. Это дает понять, как человек подходит к тому, чтобы решить задачу, задает ли дополнительные и уточняющие вопросы. Можно уже на этом этапе сложить первое впечатление о кандидате и о том, сможете ли вы сработаться в будущем.

Как ты обучаешься и не выпадаешь из трендов?
Не могу сказать, что это просто, потому что современный фронтенд развивается слишком стремительно. Но у меня есть подписка на толковые каналы в Youtube и есть замечательная функция picture in picture. Она дает возможность смотреть что-то параллельно, когда решаю рутинные задачи, на которых не надо сильно фокусироваться.

Какое твое определение будет для уровней развития профессии разработчика, начиная от Trainee?
Да, путь может начинаться с Trainee, - уровень, когда ничего не знаешь и не умеешь, но обладаешь высоким уровнем инициативы. Таким сотрудникам правильно делегировать простые задачи, но постепенно по увеличению уровня сложности. Со временем они обязательно придут к уровню Junior – когда уже не просто выполняют, но задают много вопросов и имеют собственные идеи. Разработчик уровня Middle, считаю, что умеет уже решать более серьезные задачи и иногда указывать на какие-то моменты или нюансы, которых ты можешь не знать или мог упустить. А Senior – специалист, который многое может планировать и решать самостоятельно, делать прогнозы на несколько лет вперед.

Реально ли делать прогнозы на несколько лет вперед?
В отношении технологий, наверное, нет. Но в отношении архитектурных решений это возможно.

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

Что бы ты мог выделить как раздражающий фактор в процессе разработки с точки зрения технологий?
Наверное, то, что очень много информации, за которой надо следить. И не только знать о ее появлении, но и уделять время, практиковать. Разнообразие очень большое, выбор также, а время ограничено. По-хорошему, надо быть во всем в теме, но это нереально.

Как тебе удается совмещать это с личной жизнью и семьей?
Стараюсь балансировать и уделять обучению новому время умеренно. Легче, когда понимаешь, что не успеть за этим поездом хайпа, как ни старайся, и не нужно зацикливаться – все равно все не получится познать.

«Мы стараемся отбирать темы, которые несут в себе исключительно практический характер, и решение сложных задач, а не теоретическую составляющую»

Как вы отбираете доклады в программном комитете «OdessaJS»?
Участником программного комитета стал с прошлого года, потому могу рассказать только за этот период. Мы стараемся отбирать темы, которые несут в себе исключительно практический характер, и решение сложных задач, а не теоретическую составляющую. Только то, что испробовано на опыте, в чем была боль (потому что, она есть всегда). Такой доклад выходит самым ценным, потому как редко такую информацию можно встретить.

Какую боль ты недавно решал, которая бы подошла для доклада?
Как раз планирую тему для будущего доклада. У меня сейчас в работе проект - порт нативного приложения в веб. Было очень много боли. Как минимум, то, что ядро нативного приложения написано на С++, которое необходимо переписать на JavaScript. Также пришлось задействовать много криптографии, что напомнило в очередной раз, насколько важны азы. Конечно же, это переписывание чужого кода, начиная с архитектуры.

Сколько времени у тебя уходит на подготовку доклада, как ты выбираешь тему?
По тому же принципу, как рассказывал о докладах для «OdessaJS». Тему выбираю только из реальной жизни. Для меня важно поделиться опытом и помочь решить ту задачу, которую уже решил. Потому, не могу сказать, что на подготовку уходит много времени. Ведь доклад, по сути, история о проблеме, которая была решена или какого результата достигли. Остается только визуализировать историю, которая уже есть – она из жизни.

Упрощаешь ли ты как-то еще и процесс подготовки презентации, который тоже много времени, как правило, занимает?
Для меня работа со слайдами напоминает дизайнерскую работу, в чем-то даже UX. В подаче информации в презентации немного заложено и из педагогики, и из дизайна, и из UX. Потому стараюсь задействовать познания из прошлого, продумываю подачу, чтобы слушатель и зритель лучше ее понял и усвоил.

«Университет очень помогает работать над коммуникативными навыками, так называемыми, soft skills»

Актуально ли сегодня высшее образование для программистов?
Думаю, смотря для каких скиллов. Университет очень помогает работать над коммуникативными навыками, так называемыми, soft skills. Что касается технических знаний, - уже зависит от университета и факультета, преподавателей.

Есть ли у тебя хобби?
Моим хобби всегда было желание создать продукт, который мог бы быть полезен. Пробовал создавать сайт-блог, новостной сайт, Youtube канал, но в какой-то момент нехватка времени побеждает над моими стремлениями развивать эти направления.

«Чувствуется разница после аутсорса — в продуктовой компании необходимо выкладываться по полной»

Сколько часов в день удается поработать максимально эффективно?
Около 8 часов и получается. Проект сложный, дедлайны сжаты, потому работаем весьма в интенсивном темпе. Чувствуется разница после аутсорса — в продуктовой компании необходимо выкладываться по полной. Но мне определенно нравится в продуктовой компании то, что ты можешь принимать участие в изменениях и улучшениях продукта.

Какой бы ты дал напутственный совет начинающим специалистам, кто только начинает свой путь в IT?
Начинать работать как можно раньше. Чем раньше будет возможность приобрести опыт, тем лучше.