От джуна до сеньора: Как стать востребованным разработчиком - Владимир Швец
Шрифт:
Интервал:
Закладка:
Все сказанное выше совершенно не означает, что вы должны выбрать один профиль и держаться за него руками и ногами. Нет ничего плохого в том, чтобы иметь представление о множестве сфер разработки. Более того, знания, полученные из разных направлений, делают вас куда опытнее, осведомленнее и профессиональнее. Однако справедливо и обратное. Знания, полученные в определенной предметной области, становятся очень ценными (и очень дорогими – да, я про денежки). Если вы выберете что-то действительно специфическое, то вполне можете оказаться одним из 10 человек на планете, у которых есть этот особый набор знаний и опыта.
Исходите из того, что вас восхищает. Руководствуйтесь тем, что вам интересно. Да, в какие-то моменты это будет непросто. Если вы захотите попробовать что-то новое, то придется искать другое место работы или проекты, к которым вы могли бы присоединиться. Первое время вас будет накрывать волнами новой информации, которую достаточно трудно воспринимать и запоминать. Но если вы действительно этого хотите, то обязательно добьетесь своего.
Тезисы
■ В IT всегда найдется направление разработки, которое будет вам интересно.
■ Не жалейте времени, попробуйте разные направления, узнайте, от чего получаете удовольствие.
■ Путь к новым направлениям всегда открыт, вы в любой момент можете попробовать что-то другое.
■ Следуйте за своими желаниями.
Задание
Выпишите 5 направлений разработки, которые вам интересны и не связаны с тем, чем вы сейчас занимаетесь. Расположите их в порядке убывания интереса. Посмотрите на полученный список и попробуйте описать шаги, которые приблизят вас к получению опыта по каждому из пунктов. Возможно, это будет участие в open source проекте, получение дополнительного образования или покупка онлайн-курса. Сделайте первые практические шаги к тому, чтобы попробовать себя в чем-то новом. Viam supervadet vadens[4].
История из жизни
Благодаря своему бездонному любопытству я успел покопаться в большинстве направлений IT, о чем никогда не жалел. На данный момент я занимаюсь архитектурой высоконагруженных, распределенных b2b-продуктов, но иногда спрашиваю себя: чем бы я занялся через 10 лет, если бы захотел сменить профиль? Ответа я еще не придумал. Возможно, захочу попробовать встраиваемые системы, микроконтроллеры и наконец научусь хорошо паять.
Новый проект
В карьере каждого разработчика рано или поздно наступает волнующий и очень важный момент: ему поручают создание нового проекта. И этот проект, который вы начали создавать с нуля, несомненно, запомнится вам на долгие годы.
Прежде всего – без паники. То, что необходимо сделать, вы делали уже много раз. Вы будете писать код (ура!). Просто не вкладывайте в эти страшные слова («новый проект») больше смысла, чем они содержат. Относитесь к новому проекту как к новому коду – ответственно, вдумчиво, но без страха.
Вы абсолютно точно будете чувствовать напряжение и груз ответственности, но постарайтесь запомнить следующее.
Новый проект на самом деле ничем не отличается от тех задач, которые вы получаете регулярно. Эта задача может быть более масштабной, но от этого она станет только интереснее.
Вы сможете работать так же, как и раньше. Сам факт, что вам поручили создание нового проекта, говорит о том, что ваша работа была профессиональной, качественной и эффективной. Вам доверяют, но доверяют не чему-то неожиданному, а тому, чем вы занимаетесь уже продолжительное время. Вы на правильном пути, просто делайте то, что и делали всегда.
Не позволяйте себя торопить. Специфика коммерческой разработки очевидна – продукт нужен «вчера», однако не разрешайте манипулировать собой и не поступайтесь качеством работы. Ваша задача как профессионала – написать качественный продукт, не стоит пытаться играть по чужим правилам и срезать углы. Хороший продукт проработает много лет, слабый будет закрыт – вот так все просто.
О требованиях к продукту: собирайте их, группируйте, работайте с экспертами в предметной области проекта, изучайте ее самостоятельно. Вы должны быть максимально ознакомлены со спецификой той области, для которой пишете продукт. Составляйте списки вопросов, терроризируйте заказчиков или менеджеров – их должно тошнить от вашей въедливости. Люди не всегда хорошо структурируют свои знания: забывают о важном, придают вес незначительному и т. д. Ваша задача на первом этапе – выделить главные и проблемные направления будущего продукта, область его применения и основные функции.
Не пугайтесь, когда вы будете сталкиваться с требованиями, конфликтующими между собой или не поддающимися описанию кодом. Вы в любом случае столкнулись бы с ними, но позже, когда время для анализа было бы уже упущено. Сбор требований должен формировать для вас картину будущего продукта, указывать на его сильные и слабые стороны, потенциальные проблемы и конкурентные преимущества. Будьте заранее готовы к тому, что, когда работа над проектом будет уже в самом разгаре, часть требований окажется неактуальной. Это распространенный сценарий, он не должен деморализовать вас. Любой продукт – живой, он будет развиваться и видоизменяться. Ваша задача – определить его возможности и рамки, в которых он будет существовать.
Ваши заказчики или эксперты в предметной области наверняка проанализировали рынок на предмет аналогичных продуктов. Но вам тоже будет нужно провести свое исследование, чтобы представлять, как работают существующие аналоги, насколько они удобны и каким требованиям соответствуют. В большинстве случаев вам будет доступна только пользовательская часть системы, поэтому постарайтесь извлечь из нее максимум сведений, обращая особое внимание на те моменты в ее работе, которые пересекаются с требованиями для вашей системы.
Отдельным важным шагом будет выбор технологического стека для вашего проекта: языка программирования, инструментов, компонентов и библиотек. Для многих разработчиков ощущения на этом этапе будут похожи на восторг ребенка в магазине игрушек. Получите от этого процесса максимум удовольствия, но не позволяйте эйфории взять верх – набирая технологии в свой мешок с подарками, нужно исходить только из целесообразности их использования. Здесь как никогда важно дать приоритет проекту и его требованиям. Он будет зависеть от вас, от того, что вы выберете, – не подведите его, находите решения, которые помогут проекту стать успешным.
Ограничьте время анализа по конкретным вопросам, иначе вы рискуете столкнуться с аналитическим шоком и неспособностью принять решение. Если чувствуете, что анализ какого-либо вопроса занимает больше времени, чем должен, перейдите к следующему пункту. Если все равно сомневаетесь при каждом принятии решения, постарайтесь понять, говорит ли это ваша тревожность или есть объективные сомнения в правильности выбора. Тревожность необходимо просто принять: вы были бы отвратительным специалистом, если бы не чувствовали ответственности за свои действия. Объективные же сомнения можно отбросить, досконально проанализировав вопрос и выбрав максимально приемлемый вариант. Возможно, он не будет идеальным, но выбор уже сделан и вы больше не рефлексируете над ним.
Определите сроки работы с заказчиками или менеджерами, разбив весь объем на этапы (milestones), однако всегда помните о коварности установления строгих дат. Это крайне важно для новых проектов, где требования будут постоянно меняться и усложняться. Не пытайтесь никого впечатлить скоростью, на кону ваше время и хорошее самочувствие. Выделяйте для анализа и работы столько времени, сколько вам требуется. Я не привожу здесь подробного описания методологий разработки и способов планирования работы над проектом (их слишком много, а ваше время для меня ценно). Универсальный совет: уважайте свое время и не позволяйте дедлайнам сказываться на качестве работы.
Если вы чувствуете, что начали прокрастинировать, это абсолютно нормально и ожидаемо. Совет здесь будет только один: начинайте работать. Через силу, через усталость и нежелание, но начинайте работать по чуть-чуть, выполняя какие-то легкие, но необходимые задачи для нового проекта. Это может быть подготовка инфраструктуры приложения, организация загрузчиков или билд-системы. Черт, да вы можете потратить время на проработку формата вывода в лог, главное – начать делать хоть что-то, и вы обязательно втянетесь