Как работа над умирающим приложением ускорила мой карьерный рост как разработчика

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

У меня были подобные убеждения, пока один конкретный опыт на ранних этапах моей карьеры не изменил мою точку зрения.

Будучи молодым инженером-программистом, я больше интересовался новейшими языками программирования и передовыми технологиями. Мы с друзьями подшучивали над тем, кто работал над превосходными проектами, основанными на используемых в них технологиях.

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

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

Я проконсультировался со своими опытными коллегами и наставниками, поделившись своими опасениями по поводу проекта и своей неуверенностью в его принятии.

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

Он был прав. Работа над этим проектом оказалась большим благом для моей карьеры. Это позволило мне испытать многие аспекты разработки программного обеспечения, которые я иначе пропустил бы.

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

1. Разработка программного обеспечения — это гораздо больше, чем написание кода

Будучи новичком, большую часть времени я тратил на написание и тестирование кода в своем первом проекте. Раньше я брал задания от своих лидеров или старших и выполнял их.

Когда я начал работать над устаревшим приложением, я был единственным разработчиком в этом проекте. Поскольку это было умирающее приложение, не было назначено ни одного бизнес-аналитика, QA, руководителя группы или архитектора. Пришлось работать напрямую с клиентом.

Я задокументировал требования, обсудил их с коллегой моего клиента, проанализировал их, вернулся с возможными решениями и подготовил план выполнения на основе графика поставки.

Работая над этим заданием, я понял, что поддержка приложения требует гораздо больше работы, чем кодирование.

Каждая из этих задач имеет свою актуальность и одинаково важна. Это обучение помогает мне даже сегодня уделять одинаковое внимание каждой работе и уважать каждую роль, которая способствует успеху проекта.

2. Самоотверженность и искренность помогут вам добиться практически всего

Иногда мы должны жертвовать своим личным временем, чтобы завоевать доверие, и я благодарен за то, что сделал это, когда это потребовалось.

Я принял проект от нескольких разработчиков с пяти-восьмилетним опытом. Они работали над ним последние пару лет.

Понятно, что наш клиент был весьма обеспокоен переходом. Мой опыт в индустрии программного обеспечения также не помог делу.

Однако за несколько недель я смог переломить ситуацию. Пришлось работать долгие часы, включая выходные, и усердно вкладывать силы в проект. Я был искренен в своем подходе и провел большую часть времени бодрствования над проектом.

Я знаю, что не идеально работать допоздна и в выходные дни непрерывно. Я бы никому не советовал это делать. Но я был молод и стремился доказать свою ценность (и часть меня боялась плохой оценки, если я не смогу это сделать).

Сегодня я не могу думать ни о каком другом способе, которым я мог бы работать над проектом. Единственный способ научиться — это посвятить требуемые часы и приложить искренние усилия.

Я большой сторонник обучения на работе. Но иногда мы должны жертвовать своим личным временем, чтобы завоевать доверие, и я благодарен за то, что сделал это, когда это потребовалось.

3. Работа с устаревшими приложениями учит терпению

Работа над устаревшим приложением научила меня терпению. Это научило меня тому, как важно тратить время на понимание существующего кода.

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

Проект остро нуждался в рефакторинге.

Но клиент не хотел рисковать. Было разумно не тратить много усилий на рефакторинг, поскольку он умирал. Моя работа заключалась в том, чтобы поддерживать свет и добавлять новые функции для удовлетворения промежуточных требований.

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

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

4. Построение отношений и доверие жизненно важны для лучшего сотрудничества

Поскольку больше никто не хотел работать над этим проектом, у меня была возможность работать напрямую с клиентами. Это позволило мне общаться с ключевыми лицами, принимающими решения, понимать их требования и определять, как их можно реализовать в приложении.

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

Мое усердие и эффективный дизайн помогли мне завоевать доверие.

Со временем клиент перестал спрашивать источники моих технико-экономических обоснований. Он перестал изучать мои исследования.

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

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

5. Маленькие победы — огромный стимул для уверенности в себе, и они вам нужны

Большинство инженеров не уверены в своих возможностях в начале своей карьеры. Это нормально, поскольку у них практически нет опыта работы в ИТ-индустрии. Но чтобы преуспеть в карьере, вам нужно много уверенности в себе.

Как вы развиваете уверенность в себе как разработчик?

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

Я обретал уверенность с каждым последующим выпуском устаревшего приложения.

Каждый раз, когда я исправлял застарелый дефект, я чувствовал себя на миллион долларов.

Всякий раз, когда кто-то из заинтересованных сторон ценил мою работу, это экспоненциально укрепляло мою веру в свои способности.

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

6. Самая сильная сторона разработчика программного обеспечения — способность учиться и адаптироваться.

Одной из самых сложных задач для меня было понимание унаследованного фреймворка и стандартов кодирования. Мой опыт до сих пор был с последними и лучшими на рынке. У меня не было практических знаний о каком-либо другом приложении.

Поэтому взяться за проект и работать над ним в одиночку было невероятно сложно.

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

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

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

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

7. Наличие наставника необходимо для профессионального роста

Как уже упоминалось, мои старшие и наставники помогли мне решиться на это задание. Их профессиональный опыт и понимание помогли мне рассматривать проект как ценную возможность.

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

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

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

Последние мысли

Я рад, что преодолел свой первоначальный психологический барьер и принял задание. Работая над унаследованным проектом, я узнал больше, чем ожидал. Это познакомило меня с аспектами разработки программного обеспечения, о которых я не знал.

Знания и опыт, которые я получил, дали мне преимущество перед коллегами, которые ограничивались работой над текущими тенденциями.

Более того, работа над ним помогла мне понять, как развиваются приложения. Это научило меня важности написания чистого кода, поддержания обратной совместимости и важности проектирования для будущих изменений.

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

Я настоятельно рекомендую этот опыт любому разработчику, который хочет поднять свою карьеру на новый уровень. Это бесценный урок, которому не научит ни одна книга или курс.

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

Хотите узнать больше о том, как стать известным разработчику? Прочтите статью ниже, чтобы понять основные приемы: