6 January 2010

Студенты vs Разработчики

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


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

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

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

Кто чаще оправдывает ожидания работодателя, студент или разработчик? С точки зрения работодателя — нанять одного хорошего разработчика вместо трех студентов — это риск, да еще какой. С разработчиком может случиться всякое: заболел, умер, уволился или не дай бог ушел в отпуск, когда он ну очень нужен на работе. Хороший разработчик, как правило, — это угроза авторитету плохого менеджера, а, как мы знаем, хорошие менеджеры проектов такая же редкость как и прибавка к зарплате во время кризиса +).

Разработчик действительно может продуктивно работать и решать сложные задачи. Бросать тяжеловеса на легкие задачи невыгодно, уж очень быстро им надоедает работать с примитивными задачами, с которыми может справится и студент. Где взять интересные задачи для полной загрузки, когда разработка на 80 процентов состоит из ужасно-нудного кодирования?

Крупные компании предпочитает опытных разработчиков и лично я этому рад. Они набирают студентов на стажировки, затем самым одаренным предлагают работу. Дело в том, что такие компании выбирают модель развития бизнеса не похожую на «Русскую модель» — получить деньги не сделав ничего. «Русскую модель» выбирают компании, которые живут на откатах. Это не свидетельствует о том, что маленькие компании предпочитают использовать «Китайскую модель» — быстро сделать кучу ширпотреба для которой нужно много дешевой рабочей силы, которой без сомнения являются студенты. В любом бизнесе найдется масса компаний, которые предпочитают создавать продукты опираясь на «Японскую модель» – достижение наивысшего качества или «Американскую модель» — скорейшее получение прибыли. Обе модели предполагают долгосрочные инвестиции в сотрудников для поддержания им необходимого уровня квалификации.

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

Есть еще один вопрос: кто будет ставить задачи? Опытному разработчику проще поставить задачу — не требуется объяснять мелочи и конъюнктуру, он, как правило сам увидит детали. Для студента потребуется прорабатывать задачи значительно более подробно. Тогда выбор условно можно конвертировать в следующий: относительно дорогой процесс постановки задачи и относительно дешёвый разработчик или относительно дешёвый способ постановки задачи и относительно дорогой разработчик. Что будет эффективнее с точки зрения владельца бизнеса? Правильно, есть бюджет. Проект в жестком пике. Берем крутых, иначе сосредоточимся на тех, кто попроще. Итого, разработчику светит сложный проект.

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

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

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

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

П.С. Пост написан по мотивам: yakov-sirotkin.livejournal.com/121661.html и yakov-sirotkin.livejournal.com/121525.html
Tags:golodnyjработауправление проектамистуденты
Hubs: Lumber room
+31
376 15
Comments 46