вторник, февраля 20, 2007

О кодере бедном замолвите слово.

Пост навеян недавним обсуждением в ITBlogs «До Бангалора вроде далеко, а программистов уже не найти» где обсуждалась проблема нехватки кадров и высказывались по этому поводу самые противоположенные мнения.
Я думаю, что отчасти IT компании сами усугубляют ситуацию. Часто на позицию, где достаточно было бы кодера стараются взять опытного программиста. Менеджеры идут на это сознательно, справедливо пологая, что лучше иметь чрезмерно квалифицированного специалиста, чем недоквалифицированного. Вот и пестрят HR сайты тысячами объявлений, всем требуются суперквалифицированные спецы с безумным перечнем скилов. А джуниоры никому не нужны.

Все это не правильно. Конечно, есть инновационные области, в которых нужны крепкие команды очень квалифицированных спецов. Но таких - меньшинство. Большая часть разработки ПО состоит в создании бизнес приложений по хорошо отработанным схемам, либо в адаптации уже существующих приложений к нуждам заказчиков. И вот здесь как раз и есть место для кодеров. Почему же всем нужны «специалисты с опытом работы от 2 лет» с внушительным перечнем скилов? Причины самые неприглядные. Например, на проекте из рук вон плохо с анализом требований, поэтому нужен опытный программист. Он с большей вероятностью сделает, то что требуется по нечетким устным описаниям, а в случае чего, быстро все переделает (в описании вакансии написано – способность работать в стрессовых ситуациях). Или на проекте плохо с проектированием. В этом случае квалифицированные программисты быстро переделают неудачный вариант системы. Т.е. в большинстве случаев опытные программисты нужны, для того чтобы компенсировать недостатки в управлении проектами.

По статистике, для проектов на платформе .Net кодирование занимает около 34% от общего времени проекта, тестирование 22%, проектирование – всего 7%, а анализ требований - около 10%. Остальная часть приходится на управление, документирование и прочие активности. Цифры для проектов на J2EE примерно такого же порядка. Таким образом, оптимально иметь в проектной команде на одного проектировщика и одного аналитика, пять кодеров и трех тестировщиков. Т.е. на двух специалистов высокой квалификации может приходиться до восьми человек начального уровня. Я участвовал в таких проектах и они были успешными.

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

Что мешает организовать двух уровневую систему подготовки программистов? Первый уровень - колледж, максимум два года, за которые человека надо обучить тому, что раньше называлось алгоритмизацией, т.е. умению писать код. Плюс углубленное изучение одной или двух платформ (.Net, J2EE, PHP). Наверняка не все захотят всю жизнь сидеть кодерами. Для таких, должен быть второй уровень - один, два года обучения и степень бакалавра или специалиста. Для тех, кто хочет развиваться дальше - магистратура, аспирантура и т.д. Естественно все это обучение должно проходить без отрыва от работы. Поэтому софтверным фирмам было бы выгодно группироваться вокруг крупных специализированных учебных центров.
Такой подход позволил бы нам равняться не на Бангалор, а на Стэнфорд и Беркли.

1 комментарий:

Анонимный комментирует...

Именно :) душа болит, ибо я сам такой - с 2мя годами работы в професиональной SW компании и заканчиваю обучение в магистратуре