YouIT

Как стать более ценным программистом

869   0   2   0 | Добавлено 174 дня назад  

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

Одни программисты совершенствуются ради достижения четко поставленных целей, другие двигаются по привычке, а кто-то третий совершенствуется под давлением своего окружения. Какой бы ни была причина стремления вперед, повышение своей ценности как специалиста в сегодняшних реалиях требует более комплексного подхода, чем просто изучение новых инструментов. Что именно включает в себя комплексный подход? Разбираемся.

Изучение предметной области текущего проекта

Чтение книги

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

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

Существует такая тема как Предметно-ориентированное проектирование (Domain-driven Design, DDD). Изучая ее, можно уяснить важность понимания предметной-области своего проекта, способы моделирования бизнеса заказчика в своем коде и ряд прочих интересных концепций.

Совершенствование английского языка

Английский алфавит ABC

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

Программист должен знать английский как минимум на уровне B1 или Intermediate по нескольким причинам:

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

Совершенствование личностных качеств / Soft Skills

Личностные качества или Soft Skills характеризуют вас не как профессионала, а в первую очередь как человека. Современные программные системы не разрабатываются самостоятельно и только лишь для себя любимого. Работа в основном происходит в команде и на заказчиков, что требует умения взаимодействия как с членами по команде, так и соответственно с заказчиком.

Вот список наиболее важных в работе с людьми личностных качеств:

  • Умение быстро обучаться. Безусловно у каждого из нас имеется своя собственная скорость восприятия информации. Однако, если вам говорят, что вы недостаточно быстро обучаетесь, то задайте себе два простых вопроса: 1) Посвятил ли я изучению темы достаточное количество времени? Может я вчера мог поучить дома то, чего от меня хочет мой техлид, вместо просмотра сериала? 2) А достаточно ли у меня базовых / фундаментальных знаний в данной области?
  • Умение признавать свою ошибку. Ошибки совершают все, поэтому не бойтесь признавать их. Признание собственной ошибки покажет вас как адекватного, здравомыслящего человека. Но не злоупотребляйте. Не забывайте из каждой ошибки делать выводы и не допускать их повторно. Ведь одно дело признаться в десяти разных ошибках, а совсем другое - признаться десять раз в одной и той же.
  • Умение четко формулировать свои мысли. Необходимо уметь доносить свои мысли, например, в попытках обосновать свое техническое решение. Если у вас не получается и вас не воспринимают всерьез, задайте себе два простых вопроса: 1) Достаточное ли количество времени я потратил на подготовку своих аргументов или я поспешил вступать в дискуссию? 2) Достаточно ли у меня знаний в данном вопросе или мое предложение не восприняли, потому что мой оппонент элементарно более подкован в данном вопросе?

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

Если у программиста плохо развиты вышеперечисленные качества, то стоит заняться работой над ними как минимум в равной степени с развитием вашего английского и техническими знаниями, если не в большей. В большинстве случаев работодатель отдаст предпочтение человеку с хорошими Soft Skills и не на 100% подходящими техническими знаниями, чем идеального технаря, который не умеет слушать, доносить мысли другим и не желает учиться.

Совершенствование технических знаний и навыков

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

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

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

Совершенствование фундаментальных знаний

Росток

О важности фундаментальных знаний уже не раз упоминалось на YouIT. Для фундаментальных знания нет границ в виде многочисленных технологий и фреймворков. Например, реализацию хеш-таблицы можно встретить в любом современном языке программирования, как например JavaScript, Java, C#, Python, Ruby и прочих. А идею шаблона MVC реализуют многочисленные веб-фреймворки, такие как Ruby on Rails, ASP.NET MVC, Spring MVC, Zend Framework и другие.

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

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

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


Похожие статьи

Комментарии (0)

Авторизируйтесь для участия в дискуссии

Google Facebook ВКонтакте
работа программиста качество кода IT-компания обучение программированию карьера собеседование C# сертификация джуниор алгоритмы ООП энтерпрайз .NET тестирование javascript программирование эстимейты roadmaps информатика фан быстродействие базы данных