Жизненно важные карьерные навыки, которыми пренебрегают разработчики и часто упускают из виду интервьюеры

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

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

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

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

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

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

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

1. Умение упрощать сложные задачи

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

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

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

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

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

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

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

Но ждать! Как начать работать с мышцами, способными решать проблемы?

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

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

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

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

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

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

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

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

2. Искусство тестирования и отладки кодовых баз

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

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

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

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

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

Но ошибки случаются, и тут на помощь приходит отладка.

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

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

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

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

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

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

3. Умение эффективно общаться

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

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

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

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

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

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

Хорошие коммуникативные навыки также помогут, когда вы попадете на рынок труда. Интервьюеры часто рассматривают неразговорчивого кандидата как красный флаг.

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

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

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

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

Хороший код не всегда бывает самым умным и эффективным. Напротив, хороший код прост, ясен и понятен.

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

Заключение

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

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

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

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