The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:
Есть технические навыки и есть мягкие навыки. Об этом знает каждый программист. Технические навыки - это алгоритмы, операторы, классы, объекты и все остальное, что учат нас в технических школах. Мягкие навыки - это что-то другое. Что именно? Трудно сказать. Давайте попробуем прояснить ситуацию.
Вот неполный список мягких навыков, которые я смог найти в Интернете1, 2, 3, 4, 5, 6: эмпатия, широта взглядов, готовность к обучению, эффективная коммуникация, командная работа, доступность, полезность, умение слушать, терпение, ответственность, критическое мышление, решение проблем, наставничество, настройка, ясность, любопытство, стратегирование, пожизненное обучение, коммерческая ориентированность, профессиональная этика, суждение, управление эго, приверженность, ответственность, креативность, адаптивность, мышление глобально. Что за головокружение!
Вы точно понимаете, что означают все эти слова? Я нет.
Я бы на самом деле предложил заменить их всеми на мантру “делай правильное” и закончить на этом.
У меня тоже есть свой список мягких навыков. Я также твердо верю, что технические навыки - это всего лишь малая часть того, что делает хорошего программиста, но умение проявлять эмпатию и готовность к обучению - не все, что входит в эту часть. Конечно, улыбаться в офисе и не ругать глупого босса - помогает. Но это не то, о чем идет речь при обсуждении мягких навыков.
Они связаны с нашей способностью “обмениваться” результатами работы. Технические навыки создают результаты, а мягкие навыки превращают их в конечный продукт - работающее программное обеспечение. Вот краткий список, без определенного порядка:
Рисование. Разговоры хороши, когда вы обсуждаете свой следующий отпуск со своим партнером. В команде разработки программного обеспечения ваше умение объяснить свои мысли с помощью диаграммы серьезно увеличивает вашу полезность.
Письменная речь. Опять же, разговоры хороши, когда ваша хаотичная команда управляется истеричным начальником, который только что прочитал книгу о безусловной любви. В более дисциплинированной среде ваше умение выражать свои мысли в письменной форме действительно влияет на взаимный успех.
Отчетность. Хороший программист знает, не только как исправить ошибку, но, что еще более важно, как правильно о ней сообщить, чтобы проект получил выгоду. Умение описать техническую проблему простыми словами - это ключевой мягкий навык.
Волонтерство. Open source - важная часть любого программного проекта. Вы должны знать, как работать с сообществом open source, давая им что-то взамен за предоставленное программное обеспечение. Иногда вам придется сообщать им о проблемах, иногда даже отправлять pull request’ы и, возможно, создавать собственные продукты с открытым исходным кодом. Для этого вам понадобятся множество немедицинских навыков.
Финансовое планирование. Программисты зарабатывают деньги, пиша код. Очень часто проекты потерпят неудачу из-за конфликта по деньгам. Люди не знают, как его разрешить, как управлять своими финансовыми целями, как просить о повышении зарплаты или как изменить график выплат. Я виню программистов в этом. Мы, технические люди, должны знать, как управлять нашими финансовыми отношениями с проектами.
Расслабление. Многие проекты потерпят неудачу из-за выгорания программистов. Это происходит очень часто, потому что они не знают, как правильно управлять своим временем: когда работать и когда расслабиться. Опять же, я виню программистов. Мы должны знать, как управлять своим покоем.
Вопросы. Не вашим друзьям, а Stack Overflow и другим общедоступным источникам. Мир разработки программного обеспечения становится всемирным, и знания, которыми обладает ваша команда проекта, составляют всего лишь малую часть того, что мир знает о проблеме, которую вы решаете. Вы должны знать, как задать вопрос миру. Это мягкий навык, который необходимо иметь, чтобы быть хорошим разработчиком.
Твиттер. Здесь находится ваша способность делиться своими мыслями и достижениями в социальных сетях. Если вы молчите и боитесь социальных сетей, вы действительно не помогаете вашему проекту. Это навык, который вы не освоите за несколько дней. Я бы посоветовал вам взглянуть на мою книгу 256 Bloghacks.
Тестирование. Здесь я имею в виду не только написание автоматизированных тестов, что является техническим навыком, но и умение общаться с тестировщиками, чтобы их отзывы улучшали качество разрабатываемого программного обеспечения. Существует известный конфликт между разработчиками и тестировщиками, с которым хорошие программисты умеют справляться.
Ветвление. Все еще работаете в одной ветке master
? Вы все еще новичок. Вы должны научиться использовать несколько веток, разрешать конфликты между ними и знать разницу между слиянием и ребейзом. Это мягкий навык, потому что он не имеет никакого отношения к качеству вашего кода, но серьезно влияет на ваш профессионализм как разработчика программного обеспечения.
Провалы. Большинство проектов потерпят неудачу, одним образом или другим. Технические сбои - не главная причина наших проблем. Мы терпим неудачи из-за неумения управлять проектом, что происходит чаще всего. Хорошие программисты знают, как справляться с неудачами, провоцируя их (так называемый “Fail Fast”), предсказывая их (так называемый “Risk Management”) и принимая их.
Поставка. Непрерывная интеграция, конвейер доставки, автоматизация сборки, стейджинг, зелено-синие развертывания и т. д. - если вы думаете, что все это касается только отдела DevOps, вы ошибаетесь. Вы должны понимать, как ваш код достигает пользователей. Чем больше продукт, тем длиннее конвейер, тем больше людей вовлечено и тем больше мягких навыков требуется для успешной работы.
Интриги. Любой проект - это часть большой политической игры, каким
Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 05:04