Как стать автором
Обновить

Комментарии 46

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

Или предполагается, что студент не будет посылать свои коммиты в реальный код?
Я думаю, что в проекте примут патч оформленный по определенным правилам. И пусть это будет небольшое количество строк кода, зато студент научится разбираться в чужом коде, сложных проектах, и так далее. Я не в коем случае не предлагаю писать говнокод!
Это ж сколько патчей надо отправить, чтобы суммарно набрать N десятков тысяч строк кода, после которых, по поверьям, происходит перерождение в Истинного Программиста.
Согласен, метрика в строчках кода не очень удачная. Конкретный пример был для конкретного проекта, который и был задуман как проект с низким порогом входа, я в нем обучал себе людей с нужными мне знаниями. Но приведенный студент работал в проекте три года, и за это время у него накопился приличный опыт по данной теме. А без этих самых строчек кода, мне кажется его бы не получилось.
Да и про качество студенческого кода, не вполне согласен. Opensource проекты должны пополняться энтузиастами, иначе они просто могут умереть. И в программе GSOC участвуют очень даже требовательные к качеству кода проекты. И все они хотят привлечь студентов в проект, значит польза от этого есть. Более того, существует аналогичная программа для старших школьников.
Ага, я нашему новенькому программисту так и посоветовал: хочешь опыта — бери Open Source проект и ковыряй, или делай своё. Сейчас тот занялся разработкой интернет-магазина на основе одного фреймворка. Советовать допиливать какой-нибудь ZF2 новичку я бы не решился — жаль будет, хороший фреймворк, и в этом, кстати, проблема — уровень входа в доработку таких вещей, как популярные фреймворки или те же рельсы непомерно высок.
Да согласен, в большинство проектов порог входа довольно высокий. Но входить то нужно. По словам Марк Митчелл, там есть ступени. первая начинайте использовать проекты с открытым кодом. Так что если студент сделает магазин, это уже будет помощь проекту. Вторая ступень, пишите описания, и документацию. Следующая сообщайте об ошибках. Ну и так далее.
С этим путем согласен, но я не зря упомянул, что в России довольно много открытых проектов, и если участники этих проектов помогут с входом студентам, все будет только в плюсе.
На счёт преподавателей уже есть сдвиг. Особенно в колледжах, которые специализируются на выпуске бакалавров и магистров, которые пойдут работать сразу после окончания, а не станут заниматься научной деятельностью.

От преподавателей требуют 5 летний опыт работы в индустрии. Когда я заканчивал в 2004 году, все мои преподаватели были специалистами, которые сами крутились в индустрии. Для некоторых преподавание было как хобби или желание поделиться знаниями с миром. Замечал и за собой такое желание, но всё засекречено, к сожалению. Возможно, когда сменю работу и спадут обязанности.

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

В экономических кругах, к сожалению не знаю, но могу сказать, что в IT тоже не рвутся платить только да наличие диплома!
Читая параграф с проблемами, я сразу вспомнил, что у нас в ВУЗе (или лично у меня) все было абсолютно инвертно. Даже больше скажу, расписание составлялось в разрез дня и намекали, что нужно все время уделять учебе. Первая пара в 12. И так до окончания обучения (магистратура). Нужно было тем кто хотел действительно open-source проекты разрабатывать, вырабатывать стиль и другие важные моменты.

P.S. Код обеих дипломов никто не смотрел, а в магистерской он вообще был по желанию сами понимаете кого уменьшен до ну очень невеселого количества. Извините, но статья нашла читателя )
Ответы вокруг нас. Стоит только присмотреться:
А почему вы думаете что это должно быть именно в ВУЗ-е?
Для практического опыта — напильником там, например, уметь работать — есть техникумы.
Это как раз и есть самое то — изучение практического опыта.
Ну или современные аналоги — курсы различных компаний, продвигающих свои технологии и среды разработки.

А ВУЗ он ведь для другого совсем. А вы идете в ВУЗ, а потом не то что учеными не становитесь, но и даже преподавателями. Т.е полностью заваливаете то, ради чего на вас тратят время. А еще и жалуетесь :)
А на самом деле просто не тот тип образования выбрали.

И про курсовой все правильно — писать программу — это практика. Не этому учат — это бесполезно для обучения в ВУЗ-е! А вот чтобы грамотно обзор сделать — совсем другие навыки нужны.

А вот выводы — здравые. Искать надо там, где есть практические результаты деятельности.
А если нужных еще нет в свободном доступе, то можно и самостоятельно создать — конкурс или соревнования объявить по нужной вам тематике с игровой соревновательной составляющей и призами.
:)
И согласен и нет. Первое не слышал о качественных IT техникумах, может быть находясь в СПбГУ, не замечаю тех кто качественно учит разработке ПО в техникумах, не кодированию, а именно разработке… Сам вырос на "Искусстве программирования" Кнута, и считаю программирование — искусством.
На счет образования в вузе, после него, на мой взгляд, есть два пути: один в науку, второй в индустрию. Во втором случае наверное практический опыт менее важен, но даже в нем, на мой взгляд он необходим. Я понимаю, что прослушав курс философии будучи аспирантом, я узнал, что наука началась там где люди перестали задумываться о практической значимости их мыслительной деятельности. То есть в древней греции. Но раньше инженер (программист или нет), но обучался именно в вузе. И это был практикующий специалист.
Пардон, но в этом и суть универов. Они дают академическое образование. Они дают теоретическую базу, которую ты сможешь использовать по своему усмотрению. После окончания универа в любом проекте ты свой. Ничего нового там не будет и быть не может. Я против универов, которые будут обучать конкретным технологиям. Технологии устаревают быстро, теория — намного медленнее.
Абсолютно согласен! Особенно в IT, за изменением технологий просто не успеть.
Но когда я задал вопрос " кто знает способы распределения памяти..." студенты подняли руки, и сказали мы! у нас был курс такой то, мы читали Таненбаума и… После этого им предложили реализовать то что они знают, вот тут то и начались вопросы.
Я не утверждаю что образование плохое, я просто говорю что теоретический материал должен быть подкреплен практикой, а это, на мой взгляд, хорошо делать в opensource проектах.
Я бы начинал натаскивать студентов на практическую работу с написания тестов.

1. Знакомятся с архитектурой приложений, начинают чувствовать что такое хорошая модульность, что такое плохая и т.д.
2. Нет высокого порога входа в крупные решения, ведь чем уже область применимости теста, тем лучше.
3. Развивается инженерно-аналитические навыки, связанные с «живым» софтом, а не выхолощенным применением алгоритмов.
4. В дальнейшем им не будет лень использовать TDD.
5. Специалист начального уровня сразу полезен в индустрии настолько, насколько он может быть. Автотестов всегда очень мало и писать их некому.
6. Тесты позволяют воспринимать разработку как эксперимент с измерением, что куда ближе к научной деятельности, чем вольное творчество.
7. Даже более высокие материи, чем конструирование ПО, например алгоритмика и менее прикладные области математики, строятся на обосновании того, что что-то работает и обладает заявленными свойствами. Написал кусок кода? Докажи, что он ведет себя правильно. Написал алгоритм шифрования? Будь добр, обоснуй его криптографическую стойкость.

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

Сейчас работаю в фифти-фифти коммерческой/государственной компании, и у нас огромный объем legacy вообще без тестового покрытия, мало того, подразделения и подрядчики продолжают хреначить все без тестов, что имеет катастрофические последствия для всех. Практически все, кто это насоздавал, выпускники лучших ВУЗ-ов.

Сейчас пытаюсь поставить нормальный цикл разработки хотя бы локально, но с кадрами, которые смогли бы причесать существующее, полная беда, вот и задумываюсь о воспитании студентов.
Спасибо!
Согласен, обучать студентов нужно, к этому и стремимся. С тестированием и документаций тоже трудности постоянно возникаю, пытаемся бороться всеми доступными способами.
Как выпускник кафедры иформатики Мат-Меха этого года хочется отметить тот факт, что за все 5 лет в меня несколько раз пытались вложить инструментарий Java, но я так и не услышал ни слова о веб программировании.
Написание алгоритмически сложного кода — это конечно хорошо, но цикл то разработки с этого только начинается. А как же сопровождение, тестирование, внедрение, версионность и командный таск-трекинг?
Охотно верю что спецкурсы кафедры системного программирования могут покрыть все вышеперечисленные темы. Но хочется кричать и громко ругаться, когда понимаешь, что ваши коллеги с соседней кафедры приходят к пониманию процесса разработки только благодаря книжкам и методу научного тыка, хотя на мат-мехе столько светлейших умов!
Вокруг нас на факультете столько нерешенных полезных задач, взять хотя бы электронное расписание. Вот вам и пользователи системы, и тестировщики, а таск-трекер можно хоть на баобаб* вешать. Я уж не говорю о том, что пора бы познакомить студентов мат-меха с хорошо-сделанным местным веб-сайтом. А то стыд то какой, мат-мех лучше всех, а расписание в docx скачивать приходится.

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

*баобаб — местное расписание матмеха
Приветствую, коллега!
Хорошая идея для студпроекта, причем я бы ее расширил, ведь баобаб это не только расписание, но и доска объявление, и место встреч…
Да нерешенных задач на Мат-мехе много, чего стоит одна только печать «Деканат разрешаю». Но во первых светлые умы тоже есть, а во вторых Вы же сами сказали «мат-мех лучше всех!»:)
Вы знаете, тут всё не так безоблачно с общественнополезными студенческими проектами. Я тоже закончил закончил Мат-Мех, но не на матобесе, а на кафедре астрофизики. Однако, в далёком 2004 году мне тоже стало обидно что Мат-Мех лучше всех, а сайта своего нет. Вернее есть официальный, с информацией о защите докторских диссертаций и заседаниях учёного совета, но это совсем не то что хотелось студентам.

Сделал я сайт с фотографиями, историями и конечно блекджеком форумом, однако всё хорошее кончается и я перестал быть студентом, потом перестал быть аспирантом и со временем всё больше проявлялись желание и необходимость найти преемника/помощника, которому было бы интересно получать опыт и делать полезное для факультета дело. Сейчас на дворе 2012 год, сайт по прежнему работает и я по прежнему единственный человек который его поддерживает. И дело не в том что на Мат-Мехе нет людей которые могут участвовать в разработке/поддержке подобных проектов — дело в том что это никому не нужно, сейчас ведь у каждого по 3 стартапа.

Кстати, по поводу электронного расписания почти ежегодно появляются люди с желанием внедрить-таки его. Как правило это некий куратор студентов, который обещает дать своим подопечным это в качестве практики или под каким-либо другим соусом, однако дальше слов дело ни разу так и не пошло.
Вам не кажется, что название ohloh.net читается как «ох, лох» и тем провоцирует работодателей относиться к найденным там разработчикам как к лохам и вообще поспособствует чморению самой идеи создания открытого (а не закрытого проприетарного) исходного кода? Типа не за бабки работать западло, etc.
Я не знаю как к названию относятся российские работодатели, возможно вы правы, ведь оно именно так и читается! Но с другой стороны это довольно крупный и популярный портал по сбору подобной статистики, и приведена была именно статистика с сайта, в качестве доказательства. В конце концов, рабочий язык у программистов английский.
Надеюсь, вы шутите.
Разработчики не обязанны знать русского, и могут гарантировать, что название их продукта будет хорошо звучать на всех языках.
Во-вторых, я не думаю, что кто-то будет судить разработчиков исключительно по статистике с ohloh.
Серьезная фирма в поисках профессионалов обязательно заглянет на блог человека, в его аккаунты в соцсетях и тд.
В-третьих, сомневаюсь, что кто-то в нормальных, международных компаниях будет обращать внимание на плохо звучащее по-русски название сайта. Это так-же абсурдно, как предвзятно относиться (как вы выражаетесь, чморить) человека из-за его смешно звучащего имени. Абсолютный нонсенс в любой нормальной компании.
Мне кажется, вы преувеличиваете проблему. Программисты — не врачи, они могут пойти работать на 3 курсе и к концу университета будут уже полностью готовыми мидлами. Как и делают множество молодых людей сейчас.
Возможно действительно преувеличиваю. Я написал, что у нас на четвертом курсе практически все работают/стажируются. Но все таки она существует, компании ищут кадры, и берут не опытных студентов, на вырост так сказать. При успешном развитие событий молодые становятся мидлами, и если они уйдут в другую компанию, затраты на обучение не возвратятся. Поэтому компании не очень охотно берут не опытных людей.
Вы говорите, как одна из наших HR-менеджеров. Не знаю как у вас, но у нас никто специально не учит студентов — они на 3-ю неделю попадают на реальный проект и работают по рейту, намного превышающему затраты на его ЗП+соцпакет, аренда и всё остальное. Так что даже поработав полгода в компании, студент уже принёс большую пользу — никто никому ничего не должен. IT — бизнес, а не благотворительность.
Я говорю как руководитель проекта, который ищет в себе в проект разработчиков. И я, конечно, не имел в виду что программисты, кому то чего то должны! IT- это бизнес, и даже если я беру не студента, может оказаться так что человек мне (проекту) не подойдет, по тем или иным причинам. Отработает испытательный срок и все, а у меня есть сроки на проект. Если я увижу опыт программиста в похожем открытом проекте, вероятность того что это случится будет меньше. Собственно я только это имел в виду.
И как, были такие прецеденты?
К сожалению да, хотя и не много конечно, причем это были не студенты.
Очень трудно по собеседованию выяснить что человек может, точно также как человеку понять, устроит ли его проект и будет ли он ему интересен. Так что это палка о двух концах.
Получается что либо специалиста знаешь лично, либо с ним нужно сколько то поработать, или как то еще оценить его в деле.
А как в этом поможет open source? Ведь бывает, что и хороший специалист не подходит только потому, что старше/младше коллектива, или привык работать по-другому,…
да такое бывает! Причем у меня тоже такое было, опен соурс в этом случае никак не поможет. Может только опыт в большом распределенном проекте, где есть свои правила, но это ни в коем случае не поможет, если кто то лично неприятен. Такое тоже бывает. И решать это как то нужно, причем тут даже два очень крутых спеца могут не подойти.
Open source предложение конечно хорошо, но это ещё не ответ, где взять хороших программистов, способных обращаться с проприетарными фреймворками\по. Т.е. не просто людей владеющий языком программирование и знающего жизненный цикл продукта (хотя он в коммерческих и опенсорце разный), а целевых наборов.
Мне всё больше нравится, например, практика западных компаний введения интернатуры для русскоязычных программистов. В конце концов, в Советском Союзе планировалась именно такая система после обучения, целевого распределения, очень близкая по сути к интернатуре. За разницей, что в компании люди пропускаются через сито тестов \ опыта (студенческих разработок, как минимум).
Согласен, конечно Opensource не решит все проблемы при подготовки специалистов. Но мне кажется что опыт полученный в подобных проектах, может сильно пригодиться, в будущей профессиональной деятельности. Конечно, для того чтобы стать специалистом в какой нибудь теме связанной с жизнью человека, недостаточно просто поучаствовать в открытом проекте, а нужно набраться опыта в интернатуре. в компании которая занимается выпуском конечного продукта.
Да зачем интернатура, все эти ненужные инстанции. Нужно просто прийти в эту компанию джуниором, первое время всё равно никто не будет допускать ни к чему серьёзному и критичному. А к тому времени, как вырастет в мидла и тем паче синьора, уже сам во всём прошариться.

Моя мысль — всё должно идти естественным ходом. Не надо вводить лишних инстанций, которые тут же заполняются людьми, которым просто нравится учиться, но не нравится работать. Посмотретие на самых успешных людей в IT — у многих людей даже нет высшего образования. Потому что они поняли, что заканчивать ВУЗ — пустая трата времени (я не против ВО, у меня тоже вышка — но если бы не военная кафедра, кинул бы на 3 курсе. Как раз тогда перестал получать знания)
На интернатуру я сослался из Вашего комментария, я почему то думал, что это что то типа junior а. А вообще согласен, любые лишние инстанции это бред, только портят ситуацию. Вот по этому на мой взгляд опыта можно набраться в каком нибудь опенсоурс проекте.
Кстати, на счет третьего курса. У меня на 3-4 курсе как раз проснулась тяга к знаниям, я начал заниматься наверное даже самообразованием, универ в этом случае давал возможность и время подумать, чего же я хочу попробовать разные вещи. А коммерческой компании это не всегда доступно.
Ну желание IT компаний заиметь сотрудников, готовых к употреблению на блюдечке, да еще и бесплатно, конечно, понятно.
Но сравнение с врачами мне кажется не совсем адекватным. Все-таки медицина — это некое устоявшееся и, все еще, государственное образование, и в ВУЗ точно знают, чем учить, чтоб студент нашел себе применение.
В IT-таки рулит рынок… Тут сложно угадать, что и куда потом произойдет. Ес-но никто не хочет подстраивать учебные курсы полностью под рынок, столь нестабильный. И мне это кажется правильным.
Курсовые работы в одиночку — нет, я против.

Ну и стоит помнить, что ВУЗ-таки государственный, и пока еще бесплатный. Спецов там готовят под госнужды…
На счет гос нужд, не соглашусь. Мне кажется что готовить должны специалистов и не только для гос нужд. В конце концов коммерческие компании платят налоги. И на это живет государство.
На счет быстро развивающегося IT сегмента, тут согласен. Поэтому и хочется чтобы уже при обучении, специалисты участвовали и знакомились с реальными практиками, а то на чистой теории, можно лет на 5- 10 отстать.
Когда я учился, мне некогда было заниматься OpenSource-ом. Я работал (ещё с 3-го курса), хорошо учился, общался с друзьями и подругами, ходил в клубы и читал книги. Свободного времени на всякую фигню не было. Меня устраивал имеющийся набор ПО (т. е. мне нечего было разрабатывать в OpenSource-е).
Хорошо, что Вы уже с 3-его курса работали и при этом хорошо учились. Но называть «всякой фигней» проекты: Linux, gcc, Eclipce и так далее, я бы не стал, хотя бы из вежливости.
Блин. Мне неловко, что вы так расширили мой эпитет вообще на весь OpenSource.
То, что я бы мог сделать или у меня бы хватало мозгов изменить — это в большинстве своём и есть «фигня». Мало какой даже очень одарённый студент сможет что-то добавить к Linux/GCC/Eclipse. Студенты в OpenSource работают в основном на куда более примитивных и мелких проектах.
Предлагаю решение для всех. Буду рад комментариям.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий