Среда, 08.05.2024, 16:45
Мой персональный сайт Добрым людям smart & sober

Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Калькулятор


Меню сайта
Календарь
«  Июнь 2012  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930


Форма входа


Архив записей
Мини-чат


Категории раздела


Наш опрос
В чем заключается ваш смысл жизни
Всего ответов: 154
 
Главная » 2012 » Июнь » 24 » Где взять программиста из песочницы
03:51
Где взять программиста из песочницы
Данный топик написан мной по результатам общения с представителями IT компаний, которые, заинтересовавшись циклом статей про студенческие проекты, приехали на Мат-мех в поисках людей, которых можно было бы нанять к себе в компанию. В результате найм несколько не удался, поскольку по словам нанимателей "брать на работу программистов из студенческих проектов можно только по географическому признаку”. Похоже проблема подбора квалифицированных кадров существует и стоит довольно остро. Я попытался раскрыть свои мысли по поводу того, где брать программистов или как их выращивать.

Проблема


В статье Cтрауструпа, перевод которой был на хабре, старина Бьерн описывает проблему IT образования, ориентируясь на западное образование. Она заключается в разрыве между академическим образованием (то, что называется computer science) и обучением специалистов для нужд IT индустрии
Кратко по пунктам:
  • Во время обучения студенты редко пишут задания, в которых более 100-1000 строк кода, хотя современные программы содержат десятки, сотни тысяч и миллионы строчек кода
  • Студенты пишут индивидуальные задания, хотя современная индустрия требует работы в команде
  • Профессора, которые обучают студентов, сами не пишут код и даже гордятся этим
  • Алгоритмы и структуры данных, которые даются в курсе, оторваны от реальных задач, и студенты попросту не знают, как их применить
  • Ну и наконец, computer science настолько широка, что невозможно представить себе специалиста, который одинаково хорошо пишет и веб-приложения для социальных сетей, и встроенные системы для авионики. Есть очень большой спектр тем, в которых необходимо разрабатывать программы, и программисту нужно погружение в специфическую тематику

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

Страуструп в своей статье предлагает решение, заключающееся в сертификации специалистов. Возможно это поможет делу, хотя в России это может вылиться в очередной ЕГЭ. Сам Страуструп сравнивает программистов с врачами. Действительно, почему врача, который не набрался опыта в интернатуре, никто не допустит до операции, а программисту, который пишет программу, отвечающую за какую-то часть этой же операции, можно писать код, только лишь прослушав лекции, выполнив пару лабораторок и написав дипломную работу.

Решение


На мой взгляд, при обучении программированию должен использоваться тот же принцип, что и при разработке: "пишем код!" То есть программистом не рождаются, им становят, и для этого нужно написать не одну тысячу строк кода.
Но возникает вопрос, где же студенты могут набраться практики? Причем практика нужна именно в реальной индустрии. Для врачей это интернатура, а для программистов это…

Студенческие проекты

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

Одна из подобных попыток — это студенческие проекты, например, вышеупомянутого Мат-меха. А вот ссылки на проекты из "ВолгГТУ”. Тенденция, как говорится, налицо.

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

Opensource проекты

Немного другим подходом является привлечение студентов в проекты с открытым кодом. Этим, например, славится Google со своим Google summer of code. Да и другие крупные западные IT компании тоже не отстают. На Мат-мех недавно приезжал Марк Митчелл — директор Mentor Graphics, отвечающий за работу с проектами с открытым кодом, в прошлом активный контрибьютор в GCC.

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

В качестве доказательства приведу статистику из нашего проекта. Возьмем лишь одну метрику, которая является очень примитивной и не полностью отражает качество разработчика, а именно количество строчек кода, измененное им. Вот аккаунт на ohloh.net одного студента 4 курса AntonKozlov. Видно, что у него достаточно опыта разработке на языке C, ведь он изменил больше 30 000 строчек кода. И хотя это и наш самый активный студент, но у остальных тоже вполне набирается по 10 000, причем это не отдельные лабораторки, а сложный составной проект, в котором участвует довольно много разработчиков.

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

Причем даже на русскоязычной территории довольно много проектов с открытым кодом различной направленности. Вот, например, недавний обзор открытых месседжеров. Стоит упомянуть открытый клиент direct connect EiskaltDC++, который разрабатывается в том числе и в студгородке Петергофа, рядом с тем самым Мат-мехом. По словам статьи, один из главных разработчиков PostgreeSQL в России — Олег Бартунов — «по совместительству» астроном и сотрудник ГАИШ МГУ. Вот статья с описанием opensource проектов к которым можно присоединиться.

Думаю, что это не единственные примеры. И в идеале университеты и IT компании должны способствовать данному движению. На западе именно в университетской среде зарождалось движение opensource, а компании с успехом используют достижения открытого кода.

Заключение


Итак, на вопрос "где взять программиста” я бы ответил: "поискать в проектах с открытым кодом”. Этим, кстати, активно пользуется тот же Google, который нашел нескольких участников нашего проекта сайте ohloh.net. На вопрос же "как вырастить программиста” я бы сказал, что компаниям нужно активнее участвовать в тематических проектах с открытым кодом, может быть, организуя совместные проекты с университетами и другими компаниями и вовлекая туда студентов.

Ну а разработчики, которые набрались опыта, наверное уж будут знать отличия абстрактного класса от интерфейса.
+45
20 июня 2012 в 16:00
159
abondarev 42,2

комментарии (45)

+4
redeyser #
Хорошая статья. Раньше, лет 20 назад, ИТ не так быстро развивались и можно было неспеша подготовить специалиста под конкретную должность. Сейчас эта сфера неимоверно разраслась, много всяких узкоспециальных ответвлений. Учить программистов уже надо сразу на практике. OpenSource действительно лучший выход.
+6
abondarev #
Согласен, OpenSource наверное самый эффективный способ научиться программировать. На западе очень распространено участие студенто в подобных проектах. На их основе они делают дипломы, пишут курсовые. У нас в ВУЗах будь добр пиши курсовые у тех преподавателей которые есть на кафедре.
0
JohnnyD #
К сожалению зачастую «инновационные» проекты для курсовых и дипломных проектов — уже изначально рождаются мертвыми. А ведь можно использовать потенциал.
+3
abondarev #
наверное даже нужно! То есть студенчество, самое время попробовать себя в разных темах, поисследовать, ведь не нужно сильно заботиться о зарплате, хлебе насущном и крыше над головой.
–8
lightman #
OpenSource наверное самый эффективный способ научиться программировать.
Не понимаю, зачем опенсорусу студенческий говнокод? Чтобы пользователи этого опенсоурса привносили в мир ещё больше зла, отчаянно матерясь?

Или предполагается, что студент не будет посылать свои коммиты в реальный код?
0
abondarev #
Я думаю, что в проекте примут патч оформленный по определенным правилам. И пусть это будет небольшое количество строк кода, зато студент научится разбираться в чужом коде, сложных проектах, и так далее. Я не в коем случае не предлагаю писать говнокод!
0
lightman #
Это ж сколько патчей надо отправить, чтобы суммарно набрать N десятков тысяч строк кода, после которых, по поверьям, происходит перерождение в Истинного Программиста.
+3
abondarev #
Согласен, метрика в строчках кода не очень удачная. Конкретный пример был для конкретного проекта, который и был задуман как проект с низким порогом входа, я в нем обучал себе людей с нужными мне знаниями. Но приведенный студент работал в проекте три года, и за это время у него накопился приличный опыт по данной теме. А без этих самых строчек кода, мне кажется его бы не получилось.
Да и про качество студенческого кода, не вполне согласен. Opensource проекты должны пополняться энтузиастами, иначе они просто могут умереть. И в программе GSOC участвуют очень даже требовательные к качеству кода проекты. И все они хотят привлечь студентов в проект, значит польза от этого есть. Более того, существует аналогичная программа для старших школьников.
+2
ainu #
Ага, я нашему новенькому программисту так и посоветовал: хочешь опыта — бери Open Source проект и ковыряй, или делай своё. Сейчас тот занялся разработкой интернет-магазина на основе одного фреймворка. Советовать допиливать какой-нибудь ZF2 новичку я бы не решился — жаль будет, хороший фреймворк, и в этом, кстати, проблема — уровень входа в доработку таких вещей, как популярные фреймворки или те же рельсы непомерно высок.
Просмотров: 597 | Добавил: Bliss | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024