Как замотивировать программиста осваивать базовые навыки профессии, помимо языка программирования?
====================================================================================================

 Возможно, вам приходилось сталкиваться с ситуацией, когда коллега по работе часто обращается к вам, чтобы вы помогли ему составить регулярное выражение или SQL-запрос, или починить запрос к API, потому что плохо разбирается в HTTP и не понимает, что написано в спецификациях. Или, например, запутался с chmod, потому что не понимает, как работают unix permissions, или не может понять, что написано в man rsync. Вы помогаете ему один раз, другой, третий, а потом вежливо советуете заняться самообразованием. Проходит много времени, но ничего не меняется. После сотого раза и гораздо более настойчивого совета пойти почитать мануалы, или хотя бы научиться их читать, вы натыкаетесь на реакцию вида "не учите меня жить, лучше помогите материально". Ваш коллега прямо заявляет, что для его специализации (допустим, веб-разработчик) всё это знать не обязательно, и что так считают все, с кем он работал раньше. Хуже, когда вам приходится выполнять роль тим-лида в команде, которую набирали не вы. Вам приходится тратить много времени, чтобы разжёвывать сотруднику каждый нюанс техзадания, по многу раз раз отправлять задачу на доработку, детально проверять результат работы сотрудника, вместо того, чтобы заниматься другими своими задачами. Вы не можете уволить и нанять другого сотрудника, не можете аргументировать вышестоящему руководству, весьма далёкому от IT, почему сотруднику нужно заняться повышением квалификации. Все остальные окружающие тоже не могут понять: то ли у сотрудника эффект Даннинга-Крюгера, то ли это вы излишне придираетесь. Добавим ещё к этому "конфликт поколений"...  

  

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

  

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

  

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

> Что дать ему почитать

  

Ему - ничего, а вам бы я советовал перечитать [вот это](https://deti-online.com/basni/basni-krylova/kot-i-povar/). 

> Ваш коллега прямо заявляет, что для его специализации (допустим, веб-разработчик) всё это знать не обязательно, и что так считают все, с кем он работал раньше

  

  

Пусть идет работать туда, где он работал раньше.  

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

  

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

 Не уверен, писать это ответом или комментарием.  

  

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

Если человек наотказ не хочет это учить, то есть смысл заменить сотрудника.  

  

Я это вижу как:  

1) не разбираться в chmod вообще и не хотеть разбираться = плохо  

2) впервые в жизни натолкнуться на какой-нибудь sticky bit при работе с chmod; не понимать, что за фигня происходит, потупить самому и потом попросить помощи = хорошо, это процесс роста  

  

У меня был опыт лида 3 года. Команда около 10 разрабов. За всё это время "уволили" трёх человек по разным причинам. И при этом всём - с ними очень весело отдыхать, есть о чём поговорить, классные ребята. А работать с ними совсем не хотелось. Так бывает. 

 выгнать взашей и нанять толкового 

 Может, займу не очень популярную позицию, но что делать?)  

  

Вы заняли совсем непроходную позицию. Взгляните с другой стороны.  

Если в работе Front-end`ера есть обязательные столкновения с SQL, Linux и т. д. и в вакансии это не отражено (или как он туда попал??), то программист вполне обосновано может выставлять претензии.  

Конечно, вам хорошо, если он выучит всё это. Я считаю, что эти знания можно получить за пару вечеров. Но, с другой стороны, он пришёл в компанию на чётко описанную позицию и вполне понятно, что он не будет расширять свою квалификацию и круг обязанностей без повышения ЗП. Он понимает, что таких "подкидонов" будет всё больше. А так, он капает вам на голову, чтобы вы или подняли вопрос о новых обязанностях и ЗП или повлияли на распределение задач или вообще процесс разработки.  

  

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

Пришёл в компанию, в вакансии написаны нужные скиллы, ок, думаю, это я умею. Собеседование прошёл хорошо. Коллектив огонь, атмосфера тоже.  

И тут понеслось... Я Front-end разработчик, но "фронтовая часть проектов" не запуститься без openServer`a. Я уже молчу, что я был единственный фронт в компании.. Так вот, эти проекты работали не на одном конфиге. В добавок, они не работали без баз данных. Чтобы передвинуть кнопочку нужно было запустить несколько утилит, поменять конфиг. Кстати, чтобы можно было увидеть результат работы (даже самый маленький) нужно было править файлы .php. Перемножте это всё на полное отсутствие опыта работы с PHP и всем сопутствующим ПО и на переключение между полудюжиной проектов ежедневно и получите дёрганного Фронта, который уже не совсем понимает что он тут делает. Я за время работы там даже научился писать bash скрипты.  

  

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

Выслушайте его и попробуйте не занимать позицию шлагбаума, мол, я торчу, а ты чё едешь?! Решите всё f2f и попробуйте услышать, что он хочет.  

  

Кстати, он может не учить это из принципа. Если вы его "выжимаете", то и он будет вас "выжимать". 

 Как уже сказал [Saboteur](http://qna.habr.com/user/saboteur_kiev) , множество тех вещей которые вы описываете это не знания уровня программиста, это продвинутый пользователь. В данном случае пользователь линукса. В самом деле нет наверное такого пути, который докажет что либо такому "коллеге". Если ситуация безвыходная, и удалить его из коллектива никак нельзя, и учиться он не хочет, то можно попробовать его пристыдить. Я некогда работал эникеем. Как мы знаем это в большинстве своем работа с людьми. Эти люди работают с компьютерами, и порой не знают ну прям базовых вещей относящихся к их работе и думалиют, что это должен им помогать делать местный админ. Ну например тот кто когда либо эникеем был, наверняка сталкивался с ситуацией, когда юзер просит помочь ему с отчетом в экселе и подобной херней. А на ответ - "я не знаю как это сделать в экселе", вызывает у них дикое недоумение. Я таких людей всегда стыдил тем, что они как сотрудник занимающий данную должность должны это уметь, но почему то не умеют. Может вы проф не пригодны? Ну конечно диалог был длинее и более мягкий с моей стороны, но посыл такой. После этого такие сотрудники обычно все же узнавали как сделать ту или иную операцию в эксель. В вашем случае можно попробовать сделать так. Если у вас в проекте есть какой нибудь джун, когда к вам в очередной раз подойдет коллега с банальным вопросом, скажите - "я сейчас немного занят, подойди минут через 15". За эти 15 минут расскажите вашему джуну, что нужно ответить, и после пошлите "коллегу" к джуну. После того, как новичок джун разжует тебе материал, который ты как бы должен знать, мне бы лично стало стыдно и заставило меня учится. Попробуйте, может проканает. 

>  Добавим ещё к этому "конфликт поколений"...

  

  

хаха. он старше вас или кого там?   

есть такое: "кто понял жизнь - работу бросил" (с)  

  

в физике тело всегда занимает положение с наименьшими тратами энергии  

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

терпите или используйте проджектменеджерский подход 

 ИМХО программист это само по себе понятие постоянно в учении.  

А если вы не знаете ответ на его вопрос? 

**А что такое базовые навыки?**  

> или починить запрос к API, потому что плохо разбирается в HTTP 

Так он прекрасно знает WinAPI, а HTTP ему нафиг сдалось???  

  

> составить регулярное выражение или SQL-запрос

Вот все прям с БД работают и обязательно с SQL?  

  

> Или, например, запутался с chmod

Зато синтаксис CACLS помнит как свои пять пальцев.  

  

> Просто у него был своеобразный опыт, и ему его не с чем сравнивать.

Вот именно, у сотрудника есть опыт. И тут вы со своим своеобразным опытом.  

  

> как, без жертв и разрушений, замотивировать его развиваться и расширять кругозор

Элементарно - метод кнута и пряника.  

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

  

> Можно ли где-нибудь найти внушающий доверие список знаний и навыков, являющихся обязательными для программиста любой специализации?

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

Уметь общаться с начальством, и со всякими тимлидами которые мнят себя начальством.  

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

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

 Если он вас отвлекает от работы, какие тут могут быть мотивации? Не возможно всё время подсказывать. Если у вас есть время на "разжёвывание" всяким недопрограммистам, значит с вашей работой что то не так. У меня, например нет времени объяснять и помогать всем как подключить API. Если я буду так делать, то я не смогу выполнить свою работу в срок. А значит сильно потеряю в деньгах. Вы же не учителем нанимались, и не помощником долбодятлов. Предпологается, что человек приходит на работу со всеми необходимыми знаниями. Конечно есть знания которые сугубо специфические для конкретной компании, но знания linux и http в это не входят.