Pull to refresh

Компетенции современного программиста под другим углом

Reading time7 min
Views23K

Привет, меня зовут Паша! Я работаю в Mad Devs, и считаю, что просто программировать уже мало для того, чтобы быть хорошим специалистом.


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


Программист — это важнейшее звено в цепочке создания программного обеспечения. Без него новое ПО не может создаваться. Что же такого важного делает программист? Какая ответственность лежит на нём, раз он такой незаменимый.


Хочу сразу обратить ваше внимание на то, что ответственность программиста зависит от исторического таймлайна. Вернёмся примерно на 20 лет назад.


image


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


Что входит в обязанности такого специалиста? Он должен просто писать код на одном языке программирования. Этот специалист гордо именует себя C++-программист (подставь другой язык программирования, популярный в то время). Его руководство, как правило, совершенно не понимает, чем он занимается. В этой связи он имеет возможность создавать тот образ своей деятельности, который сам пожелает. Этот образ может быть негативным, программистам тогда не много платили, было из-за чего злиться. Может быть и положительным, он может решать задачи от своего руководства и творить полезную магию. Некоторые мои коллеги до сих пор считают, что сохранять образ негативного специалиста — это норма. В их компаниях менеджеры всё ещё не понимают, чем они занимаются, а эти специалисты абсолютно негативно относятся ко всему их окружающему миру. Но таких не много — это радует. Да и вообще, мне кажется, что ИТ-компаниями являются те компании, где менеджеры понимают, что происходит в современной отрасли. Это достаточный критерий, чтобы быть ИТ-компанией, как по мне.


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


Компетенции современных специалистов в любой отрасли делятся на три большие категории:


  • Хард-скиллы;
  • Софт-скиллы;
  • Диджитал-скиллы.

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


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


Primary key Название, которое буду использовать я Другие синонимы На рунглише Убить за такое
Хард-скиллы Профессиональные навыки Глубокие навыки, жёсткие навыки Хард-скиллс, Хард-скиллз Хард-скиллзы
Софт-скиллы Надпрофессиональные навыки Мягкие навыки, общие навыки Софт-скиллс, софт-скиллз Софт-скиллзы
Диджитал-скиллы Цифровые навыки Диджитал-скиллс, диджитал-скиллз Диджитал-скиллзы

Если уж с названиями проблемы, с определением и подавно. Дам лишь те понятия, которые нужны для сегодняшнего обсуждения.


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


Цифровые навыки — это для большинства профессий отдельная история. Потому что ИТ сегодня проникает во все отрасли. Сложно найти отрасль, которая сегодня не поддаётся цифровизации: в другое время я бы сказал, что это религия, но нет! Поэтому для специалистов большинства профессий владение цифровыми навыками — это отдельная статья, с которой нужно работать. Для программистов цифровые навыки и профессиональные навыки по понятным причинам сильно пересекаются. Хотя я каждому программисту, я считаю, следует быть продвинутым пользователем ПО. Имею ввиду, использовать разные сервисы для организации своей жизни, пробовать делать умный дом, использовать современные приложения для жизнедеятельности и так далее. Это развивает цифровые навыки больше. Ведь, чтобы быть хорошим поставщиком, неплохо быть и хорошим потребителем.


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


Зачем мне эти навыки? Я на Reactе пишу! — прозвучит из зала.


Здесь и начинается та самая разница ответственности между программистами 20 лет назад и программистами сегодня. Сегодня мы с вами поставщики будущего, без нас невозможна разработка программного обеспечения. Наши коллеги из компаний (менеджеры, продакт-оунеры, сейлзы, стейкхолдеры, маркетологи и другие) нуждаются в нашей помощи. Наши компетенции (а именно профессиональные навыки) и то, как мы умеем их применять, играют порой решающую роль в развитии того или иного продукта. Почему именно так? Я описал в статье о настоящих фулстеках на Хабре. Там описано, в каком месте нужно применять свои профессиональные навыки больше, чем большинство из нас привыкло. По сути навыки, про которые я сейчас пишу, как раз и складывают очень крутое качество, которое хорошо развито у нас в Mad Devs, — customer affiinity (близость к заказчику).


Как я писал выше, все типы навыков должны быть одинаково развиты в каждом специалисте. И чтобы качественно применять свои профессиональные навыки в ситуациях, которые я описал в статье по ссылке выше, нужно обладать и хорошо развитыми надпрофессиональными навыками.
Каким конкретно? Я перечислю топ 6 важных надпрофессиональных навыков, которыми, как мне видится, должен обладать любой современный специалист:


  • Тайм-менеджмент. Тут я думаю, очевидно. Навык тайм-менеджмента лишь косвенно относится к оценке задач. Оценка задач — это профессиональный навык. Тайм-менеджмент для программиста — это логичное распределение времени на кодинг, чтение статей, самообразование и митинги.
  • Умение работать в команде. Проекты в одиночку почти никто не делает. Умение работать в команде абсолютно незаменимый навык.
  • Умение обучать. А если быть точным, умение вводить в контекст, навык, сравнимый с умением обучать. Задача человека, который обучает — это по сути введение в контекст. Только набор знаний более обширный. Программисты очень часто меняют контексты из-за смены проектов и команд. И умение ввести в контекст коллегу, указав на самые важные и опустив ненужные детали, — это очень важный навык, учитывая, насколько операция ввода в контекст сегодня дорогая. Кстати, этот навык так же применяется и в наставничестве.
  • Деловой этикет. Начиная от соблюдения правил русского языка и заканчивая элементарными правилами общения с заказчиками. Некоторые специалисты при деловом общении забывают, что находятся не в слак чатике гоферов или Yii-фреймворка (подставь свою технологию). В некоторых компаниях деловой этикет важен в переписках по почте внутри компании. У нас в Mad Devs деловой этикет важен только в контексте, когда это важно для продукта, который мы делаем. Если членам команды легче воспринимать именно такой тип общения, будет принят такой этикет общения. Но по крайней мере все заказчики, с которыми я работал, — это люди, сосредоточенные прежде всего на результате, и предпочитают общаться без серьёзных щей. Тут каждому своё. Но! Умение включить деловой этикет тогда, когда этого требует ситуация — важно!
  • Целеполагание. Двух видов. Личное и проектное. Скажи мне, программист, кем ты будешь через 5 лет? Типичный вопрос на собеседовании, но ответ на него помогает разобраться, как человек относится к долгосрочному планированию. Моё личное мнение (это значит, что я никому не навязываю, а значит, нет смысла спорить): несмотря на энтропию современного мира долгосрочное планирование НУЖНО-НУЖНО-НУЖНО! Никто не просит от вас держаться плана вне зависимости от происходящего. Планы нужно менять, и это по-взрослому. Но держать постоянно в голове цель и набор задач на ближайшие годы (желательно в районе 10 лет) — это ориентир, в соответствие с которым принимаются решения. Конкретно, мне легче работать с людьми с долгосрочным планированием. Можно в них вкладываться и развиваться с ними, не боясь, что они завтра ливнут куда-нибудь. Целеполагание в проекте тоже важный момент. Как программист, даже если отбросить весь этот типа бред про надпрофессиональные навыки и прочее, ты отвечаешь за одну из частей проекта. И нужно планировать развитие этой части проекта в долгосрочной перспективе. Какие абстракции появятся, какие модули уйдут отдельно жить своей жизнью и так далее.
  • Коммуникабельность. Речь об умении общаться с коллегами из других профессий. Быть отзывчивым, помогать коллегам разбираться в своих вопросах, которые связаны с нашими профессиональными навыками. Быть палочкой-выручалочкой для них, когда они в тупике и так далее. Коммуникабельность так же помогает налаживать контакт с заказчиком, а это всегда полезно для любого проекта.

Эти надпрофессиональные навыки по моему мнению помогут раскрыться полноценно вашим профессиональным навыкам.


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


Отвечаем на вопрос: какую ответственность несёт современный программист. В первом приближении — это код писать. А по сути, хороший современный программист в большинстве случаев обладает настолько размытым набором ответственности, насколько размыты понятия о надпрофессиональных навыках сегодня. Это вдобавок ко всему зависит от компании, команды, проекта и руководителя команды.


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


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


Есть такой интересный проект: Атлас новых профессий. Ознакомьтесь с ним и посмотрите, что новые профессии — это, как правило, профессии вида ИТ + другая отрасль.


Профессии разработчик сборщиков JS-кода там что-то нет.


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

Tags:
Hubs:
Total votes 25: ↑12 and ↓13-1
Comments51

Articles