Юджин Козак о том, как стать разработчиком высшего уровня
Опубликовано: 2022-10-26TechBullion: Как вы пришли в программирование?
Юджин Козак: Повзрослев, я обнаружил в себе интерес к математике и науке STEM. Программировать я начал самостоятельно, и, конечно же, к окончанию школы был на 100% уверен, что хочу работать в IT. Итак, я получил степень в области вычислительной техники в лучшем университете Молдовы. Прежде чем заняться программированием, я собрал более 300 компьютеров, так как моя первая степень была в области вычислительной техники.
TechBullion: Какой проект был для вас одним из самых сложных в самом начале?
Евгений Козак: Ну, не могу сказать, что в самом начале у меня были какие-то трудности. Но был один на третьем году моей карьеры, когда я стал фронтенд-разработчиком для Samsung Pay. Поскольку я был ведущим разработчиком пользовательского интерфейса Samsung Pay Promotions, я отвечал за все. В то время у Samsung Pay было более 15 миллионов пользователей, и любая проблема или ошибка могли повлиять на их работу. Если что-то пошло не так в любой момент времени, все пользователи могли это увидеть. Поэтому я был очень осторожен и старался обеспечить максимально возможное качество.
TechBullion: Обычно люди специализируются на узком круге языков программирования. Как получилось, что вы так разбираетесь в языках программирования?
Юджин Козак : Обычно карьерный путь разработчика представляет собой постепенное продвижение от младшего до старшего уровня с улучшением набора навыков. Но этого недостаточно. Большинство разработчиков, скорее всего, проработают в одной компании и над одним и тем же проектом пару лет, но это не тот способ, которым вы можете попасть в 1% лучших разработчиков. Кроме того, люди не обязательно могут очень быстро обмениваться проектами, и если они захотят перейти в другую компанию, это может стать проблемой. Так что я хочу сказать, что многие разработчики находятся в своей зоне комфорта, что тоже нормально. При этом даже старшие разработчики не всегда готовы взять на себя ответственность возглавить проект, они просто выполняют свои задачи. Возможно, дело в личности — большинство людей просто не хотят участвовать в хакатонах, быть частью науки или создавать что-то, что решает проблему в программировании. Они немного ленивы и хорошо держатся в своей зоне комфорта. Мне всегда было любопытно, и моя способность выучить несколько языков проистекает из моей готовности решить проблему наилучшим образом, а не просто иметь возможность кодировать еще один язык.
TechBullion: Вы принимали участие в каких-то хакатонах или спринтах по программированию?
Юджин Козак: Не совсем так. Я знаю, что многие разработчики могут попробовать свои силы на хакатонах, но я думаю, что самое главное — попытаться создать как можно больше проектов и работать в разных средах. Правда, разработчики часто хотят продемонстрировать другим или самим себе, какие они крутые через хакатоны, но, как по мне, еще один способ доказать свои навыки — построить свой собственный фреймворк на JS/CSS, и выложить его на всеобщее обозрение, или реализовать свой framework в компании, где вы работаете. И чтобы доказать, почему эта компания должна использовать ваш собственный фреймворк, а не React, Bootstrap или Material UI. В любом случае, только 1% разработчиков выигрывают хакатоны, создав собственный фреймворк, можно создать несколько платформ, которые будут повторно использоваться миллионами пользователей.
TechBullion: Какой продукт вы собирали быстрее всего? Как вы взаимодействовали с командой в процессе?
Евгений Козак: Обычно разработчики работают в Agile-среде, и у них есть определенное количество задач за спринт (2 недели). Что делать, если эти задачи разбиты на 2 недели, а можно все сделать за 3 дня? Не всем компаниям этично просить больше задач, потому что мы равны, я, а также менеджеры проектов планируют объем работы для всех разработчиков. Но у меня была ситуация, когда я был подрядчиком в компании, в которой был только одним разработчиком, и именно поэтому я выбрал эту компанию. Для меня было не так интересно работать над малым количеством задач, я хотел сам собрать веб-приложение для компании, например вместо 5 разработчиков. За 11 месяцев я создал CRM-систему с нуля до конца, была работа над API, UI и UX. Этот проект был выполнен очень быстро с большим количеством функций, таких как управление проектами, отслеживание запасов, создание счетов-фактур, создание и управление ценовыми предложениями, а также отслеживание запасов с помощью GPS. У меня нет актуальной информации, но эта CRM будет продаваться по подписке в связи с небольшой нишей бизнеса: акустика в строительстве.
TechBullion: Что нужно, чтобы стать первоклассным разработчиком?
Юджин Козак: Многие разработчики могут ответить вам, что опыт — это самое важное, если вы хотите быть первоклассным разработчиком, но это не обязательно так. Я знаю многих разработчиков со стажем более 10 лет, но многие проекты или разные сложные задачи могут быть для них сложными. Это может объяснить, почему кому-то требуется 7-8 лет, чтобы стать старшим разработчиком, а другим — всего 4 года. Итак, лучший подход — развивать свои исключительные способности, и правильный путь решения задач, а потом уже опыт. В то же время хорошо проводить интервью в разработке по найму: я провел более 100 интервью для разных клиентов. Как я уже сказал, чтобы доказать свои исключительные способности и навыки в программировании, нужно реализовать проект в собственном фреймворке в компании, в которой вы работаете. Это означает, что вы не только знаете языки программирования и умеете использовать фреймворки, но и можете создать свой собственный фреймворк и доказать компании, что используете его. Так на основе собственного фреймворка будет построен продукт, которым будут пользоваться миллионы пользователей. Я думаю, это может сделать только 1% разработчиков. Например, я создаю свой собственный UI-фреймворк, который можно использовать в сочетании с React под названием Krypton. Он еще не закончен, но для одного из моих нынешних клиентов я использую части Криптона для создания нового проекта. Итак, текущий клиент использует мой фреймворк не полностью, а частично, но я надеюсь, что пока мы закончим проект для этого клиента, мой Криптон будет готов, и более 60% проекта будет построено на Криптоне. Кроме того, хороший совет, чтобы стать первоклассным разработчиком, — это писать научные публикации в профессиональных журналах, у меня их более 25. Кроме того, я сделал более 100 экспертных обзоров статей, потому что как разработчик вы должны быть не только частью программирования, но и частью науки.
TechBullion: Каковы ваши самые сильные навыки?
Евгений Козак: Я бы сказал, возможность присоединиться к любому проекту в любой срок. Я был в разных ситуациях, начиная с того момента, когда я начал проект с нуля, или когда я присоединился к нему, когда проект еще находился в процессе. Многие компании дают вам время около 2-3 недель, чтобы понять это, обычно у меня это занимает 2 дня. Разработчики с исключительными способностями способны разобраться в любом проекте и приступить к устранению неполадок или выполнению задач за несколько дней, а не недель. Кроме того, я могу работать над 4 проектами одновременно. Я полагаю, только 1% разработчиков может это сделать, я имею в виду всех разработчиков от младших до техлидов. У меня был опыт работы над 2, 3 и 4 проектами одновременно, и я давал очень хорошие результаты, более того, на всех из них я как минимум Senior или тимлид примерно для 4 разработчиков. Кроме того, на этом уровне вы должны иметь возможность наставлять других разработчиков от младшего до старшего. Работать тоже очень быстро не только в повседневных проектах, но и строить что-то вроде фреймворка с открытым исходным кодом, писать научные публикации и так далее. Качественный. Скорость. Диверсификация.
TechBullion: Какой язык был для вас самым сложным?
Юджин Козак: Я не думаю, что какой-либо фреймворк или язык слишком сложен, когда вы знаете один язык программирования, другие становятся такими же, просто у них есть несколько других правил, или у фреймворка может быть меньше или больше функций. Для незаурядного разработчика не существует сложного языка программирования.