Перевод статьи Рахула Варшнея «12 Must-Have Soft Skills For Software Engineers».
Индустрия разработки программ очень изменчива и динамична. Занятые в ней инженеры, если хотят, чтобы их карьера развивалась, непременно должны иметь как технические, так и нетехнические навыки (soft skills). Тяжелый труд в выбранной сфере деятельности обеспечит вам хороший набор технических навыков.
Но приобрести необходимые soft skills инженерам бывает нелегко. А ведь именно они позволяют эффективно и гармонично взаимодействовать с другими людьми, и не важно, работает человек целый день в офисе компании или является удаленным работником.
Как верно заметил известный американский инженер и автор Том ДеМарко, «Бизнес, в котором мы заняты, скорее социологический, чем технологический. Он больше зависит от способностей работников общаться друг с другом, чем от их способностей к взаимодействию с машинами».
Давайте детально рассмотрим главные одиннадцать навыков, которые позволят любому программисту прекрасно вписаться в любую компанию.
1. Умение хорошо писать
Если вы умеете хорошо говорить и понятно выражать свои мысли, это просто прекрасно. Но в упорядоченных структурах компаний так же важно уметь точно выражать свои мысли письменно. Это помогает быть услышанным должным образом и в нужное время.
2. Хорошие навыки рисования
В командах по разработке ПО становится важным наличие потенциала выражать свои мысли с помощью визуально привлекательных диаграмм. Это дает вам преимущество перед другими членами команды и возможность выражаться уникальным способом.
3. Отличные навыки описания технических проблем
Основные задачи программиста не сводятся только к написанию кода или исправлению багов. Он должен уметь эффективно описывать возникшие проблемы коллегам как из числа членов команды, так и из других отделов.
Отличные инженеры способны взять любую сложную техническую проблему и описать ее простыми словами так, чтобы даже не-технари поняли правильно. Это очень важный навык, повышающий вашу полезность в профессиональном окружении.
4. Волонтерство и стремление отдавать
Большинство программных проектов имеют открытый исходный код, где инженеры работают совместно с открытым сообществом. Они должны всегда быть готовы давать что-то сообществу взамен на предоставляемое им ПО.
Сделать это можно путем сообщений о проблемах, отправки пул-реквестов, создания собственных open source продуктов. Для эффективного выполнения подобных задач инженерам понадобится много нетехнических навыков.
5. Умение задавать вопросы и пользоваться цифровыми ресурсами
Эти навыки нужны программистам чтобы принимать участие в различных цифровых сообществах и извлекать из этого пользу. К таким сообществам и ресурсам относятся, например, StackOverflow и GitHub. Это важно, потому что сфера разработки программ глобальна. Уже недостаточно обмениваться опытом только с членами своей команды.
Онлайн-сообщества, платформы и ресурсы призваны помогать программистам в решении проблем, а также в совершенствовании их базы знаний. Также это хороший шанс получить совет экспертов из числа самых известных кудесников мира технологий.
6. Навыки тестирования
Этот навык не ограничивается чисто технической способностью писать и запускать автоматизированные тесты. Для инженеров также очень важно эффективно коммуницировать с тестировщиками. Это поможет получить честный фидбэк, а значит, улучшить производительность и качество разрабатываемого продукта.
Кроме того, хорошим программистам нужно знать, как вести себя в затяжном конфликте разработчиков и тестировщиков. Они должны понимать ценность последних и относиться к ним с уважением.
7. Умение позаботиться о своих финансовых интересах
Основной источник дохода программистов это написание кода. Но иногда проекты разваливаются из-за денежных конфликтов между разработчиками и клиентами. Основная причина этого в том, что инженеры недостаточно хорошо знакомы со способами достижения своих финансовых целей.
Они колеблются, когда речь заходит о том чтобы попросить прибавку к зарплате или сменить расписание выплат. Поэтому для программистов очень важно научиться улаживать свои финансовые взаимоотношения с клиентами. Обсуждая денежные вопросы и торгуясь, следует выражаться громко и четко.
8. Умение расслабляться
Программисты, чтобы быть эффективными, должны обладать исключительными навыками тайм-менеджмента. Они должны уметь отслеживать время, проведенное за работой, и оставлять себе немного времени на отдых.
Это поможет эффективно управлять своим временем, иметь благостное состояние духа и в полной мере реализовать свой потенциал. Также умение расслабляться и отдыхать поможет улучшить производительность труда.
9. Поставка
Разработчики должны хорошо разбираться во всем процессе разработки ПО. Они должны знать о важности поставки, непрерывной интеграции, стейджинга, автоматизации сборки, сине-зеленого деплоймента и т. п. Все эти концепции имеют отношение не только к DevOps-отделу.
Хорошие программисты должны знать, как их код попадает к пользователям. Они также должны хорошо знать весь процесс поставки и кто участвует в этом процессе. Это помогает представлять проект в целом и относиться к нему более серьезно.
10. Умение видеть картину целиком
Инженеры должны уметь видеть картину целиком, понимать продукт, вовлеченных в его создание людей и всю цепочку разработки. Они не могут себе позволить изолироваться от всех и всего и думать, будто их дело только писать код. Разработчики должны обладать способностью работать в команде и хорошо понимать нюансы проекта независимо от того, входят ли эти самые нюансы в их зону ответственности.
11. Умение справляться с провалами
Достаточно очевидно, что многие проекты ожидает провал. Причины этого не всегда технические. Большинство проектов терпят крах по вине некомпетентного менеджмента. Программисты должны знать, как себя вести в таких ситуациях.
Они должны обладать способностью раскрывать причины, стоящие за провалом, и предсказывать потенциальные риски. Им нужно уметь хорошо разбираться в том, что делать с этими рисками, и никогда не сдаваться.
Этим нетехнические навыки, необходимые для успешной карьеры в сфере разработки, не ограничиваются. Есть и другие качества, нужные программистам для успешной работы над проектами. К ним можно отнести эмпатию, критическое мышление, стремление учиться, приспосабливаемость и т. д.
Чтобы приобрести подобные навыки, нужно быть открытым для новых возможностей, а также иметь мотивацию к пониманию новых концепций и принятию предлагаемых рекомендаций.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]