Зачем программисту высшее образование
Feb. 9th, 2011 11:52 amВот тут
zabivator пишет о том, что надо бы читать в вузах для программистов. Я с этим категорически не согласен.
Оставим в стороне количество известных мне квалифицированных программистов без формального высшего образования. Вернемся к сути.
Вообще высшее образование предназначено для формирования у человека картины мира, более детальной в области дальнейшей специализации. На которой ему предстоит выращивать свои навыки, в том числе и трудовые. Еще одна задача высшего образования - умение работать с информацией (ага, на моей памяти три метода поиска помню, и не факт, что через пару лет не появится какой-нибудь новый).
Так вот, перечисленные Олегом вещи - это не куски картины мира. Навыки чтения и написания email - в чистом виде делопроизводство, уж простите. Курсы секретарей, 3 месяца без отрыва от труда. Task management - тоже где-то рядом на самом деле. Нужны не программистам, а каждому экземпляру офисного планктона. Да, способы работы с электронной почтой можно еще немного с психологией увязать, но тоже не в вузовском объеме.
А первые 2 пункта - про Release management и QA - более-менее IT-специфичные навыки. Но - проблема в том, что они не научные, а ремесленные. В лучшем случае - инженерные. Computer science там внутри тоже есть - в алгоритмах слияния изменений, например. Но этому учить надо явно не всех программистов. Как не всех надо учить лингвистике, но всех - правилам про жи-/ши.
На самом деле программирование - не отрасль математики. И не надо впустую тратить силы на подготовку программистов в ВУЗах. Готовить их (нас) по большей части надо в техникумах. Вбивая навыки ремесла: комментарии, автотесты, выравнивание кода, говорящие названия переменных - как вбивают технику безопасности работы на токарном станке.
Оставим в стороне количество известных мне квалифицированных программистов без формального высшего образования. Вернемся к сути.
Вообще высшее образование предназначено для формирования у человека картины мира, более детальной в области дальнейшей специализации. На которой ему предстоит выращивать свои навыки, в том числе и трудовые. Еще одна задача высшего образования - умение работать с информацией (ага, на моей памяти три метода поиска помню, и не факт, что через пару лет не появится какой-нибудь новый).
Так вот, перечисленные Олегом вещи - это не куски картины мира. Навыки чтения и написания email - в чистом виде делопроизводство, уж простите. Курсы секретарей, 3 месяца без отрыва от труда. Task management - тоже где-то рядом на самом деле. Нужны не программистам, а каждому экземпляру офисного планктона. Да, способы работы с электронной почтой можно еще немного с психологией увязать, но тоже не в вузовском объеме.
А первые 2 пункта - про Release management и QA - более-менее IT-специфичные навыки. Но - проблема в том, что они не научные, а ремесленные. В лучшем случае - инженерные. Computer science там внутри тоже есть - в алгоритмах слияния изменений, например. Но этому учить надо явно не всех программистов. Как не всех надо учить лингвистике, но всех - правилам про жи-/ши.
На самом деле программирование - не отрасль математики. И не надо впустую тратить силы на подготовку программистов в ВУЗах. Готовить их (нас) по большей части надо в техникумах. Вбивая навыки ремесла: комментарии, автотесты, выравнивание кода, говорящие названия переменных - как вбивают технику безопасности работы на токарном станке.
no subject
Date: 2011-02-09 09:25 am (UTC)Поэтому нельзя научить человека рисовать изолинии, не заставив его предварительно побегать по этому самому рельефу с рейкой, нельзя научить классифицировать почвы, не научив предварительно их копать и не дав попробовать как втыкается лопата с одной стороны в иллювилаьный горизонт подзола, а с другой - в типичный солончак.
В программировании то же самое. Есть вещи, которые надо чувствовать на собственной шкуре. И только тогда и таким образом будет усвоена соответствующая абстракция.
no subject
Date: 2011-02-09 09:29 am (UTC)Собственно, я согласен с Ниной про высшее образование через пару лет практики. Только я бы это называл скорее курсами переподготовки или повышения квалификации.
no subject
Date: 2011-02-09 09:34 am (UTC)А с рейкой бегать на производстве можно первого попавшегося бича нанять. Даже трехмесячных секретарских курсов не понадобится. Главное чтобы знал с какой стороны у рейки верх. Но это в него той же рейкой вбивается в течение двух часов.
С программированием как раз большая проблема именно в том, что в нем есть потребность в людях с квалификацией ниже инженерной, ниже даже техникумовской, но выше общеобразовательной. Тут нужно что-то делать в области инструментальных средств, чтобы все задачи ради которых сейчас нанимают кодера, поделились на два класса - одну чтобы нечувствительно сделал сам пользователь, вторую - чтобы программист-инженер или хотя бы техник сделал быстрее, чем он сейчас это кодеру объясняет.
no subject
Date: 2011-02-09 10:09 am (UTC)То есть... чтобы вообще устранить надобность в программистах? :))
А так... и сейчас такое все новое и новое пробуют.
Со стороны обычных пользователей -- разные скриптовые языки, веб-технологии и т.п.
Только обычные пользователи что-то совсем не спешат с этим всем разбиратся -- все равно хотят какого-нибудь эникейщика, который бы это за них делал, а им оно чтобы "просто работало".
А с другой стороны -- придумывают всякие CASE средства.
Вон Симони со своими Language Workshop'ами... какраз такая идея -- чтобы специалист не общался с програмером, а писал мета-спецификации по своей проблемной области.
Но что-то не слышно там большого хая на эту тему, свидетельствующего об успехе.
Видать потому, что эти мета-спецификации ВСЕ РАВНО нужно кому-то брать и переводить на язык компьютера.
no subject
Date: 2011-02-09 10:15 am (UTC)Вообще на самом деле все делается ровно наоборот, по сравнению с тем что надо бы.
Скриптовые (и вообще высокоуровневые) языки нужно давать в руки программисту, системному архитектору. Он, в отличие от пользователя с ними справляться умеет.
А пользователю надо давать "интуитивно понятные" GUI-средства.
no subject
Date: 2011-02-09 10:18 am (UTC)Но с выводами - согласен.
no subject
Date: 2011-02-09 10:31 am (UTC)no subject
Date: 2011-02-09 12:57 pm (UTC)Вот это и есть то, что хотят получить через всяческие Language Workbench'и (http://martinfowler.com/articles/languageWorkbench.html)
Подсунуть пользователю вордо-подобную среду, в которой он словами своей проблемной области бы, написал чего ему хочется.
Дальше эти спецификации (полу)автоматически транслируются в тот или иной язык.
А "системные архитекторы" какраз тем и занимаются -- обеспечением того, чтобы подобная трансляция происходила максимально гладко.
\\А пользователю надо давать "интуитивно понятные" GUI-средства.
Дык... ему даже интуитивно понятные не нужны, он все равно в них запутается (или сделает вид что запутался), а нужно "где здесь кнопочка на котрую нажать и за меня компьютер все сделает?". :)
Классический пример -- интуитивно понятный ворд, к которому подсадили людей после печатающей машинки,
и они теперь по жизни набивают отступы пробелами. :)
Вывод -- если у человека нет никакой заинтерисованности, то ему даже "интуититвно понятные интерфейсы не помогут".
Если же заинтерисованность есть, то ему и командную строку освоить будет не так и сложно.
no subject
Date: 2011-02-09 09:25 pm (UTC)ВМиК МГУ (3 человека)
Мехмат МГУ (2 человека)
РК МВТУ им. Баумана (3 человека)
Факультет кибернетики МИФИ (1 человек - это скорее счастливое исключение, чем правило, и факультет теоретической и экспериментальной физики МИФИ (3 человека - это скорее правило, чем исключение).
ФУПМ МФТИ (1 человек) и ФАЛТ МФТИ (1 человек).
Но - увы, никак не техникум.
На самом деле, именно основам, которые позволяют освоить профессию и неплохо писать на C++, дают в любой приличной физматшколе (в порядке углубленности проф. подготовки программиста номера будут располагаться примерно так: 18-я, 179-я, 91-я, 2-я, 57-я).
Без чего принципиально невозможен действительно хороший программист?
Без следующих дисциплин:
Теория множеств
Дискретная математика и математическая логика
Алгебра и функциональный анализ
Теория вероятностей
Где-то третий курс ВМиК и Мехмата, соответственно. Основы (т.е. первые два курса Мехмата) - это любая приличная физматшкола. Лично мне из приличных больше всего нравится 179-я: у них широкий естественнонаучный кругозор, и они легче ориентируются в окружающем пространстве.
no subject
Date: 2011-02-10 07:00 am (UTC)МГУ - Мехмат 1, Географический 1. ВМК-шников убедительных не встречал.
Бауманка - 2
Неоконченное высшее - минимум 2
МИЭМ - 2, считая меня.
Понятно, что с Физтеха должно быть много, но в мои сети они не попадались вообще. МИФИ-сты то же самое.
А соответствующих техникумов просто нет, вот и не встречаются оттуда программисты :-)
Про набор предметов скорее согласен, хотя и с оговорками, но это все нам давалось не позднее 3-го курса. То есть по-любому должно хватать "неоконченного высшего"...
no subject
Date: 2011-02-10 09:40 am (UTC)наиболее яркие представители:
В число лучших из всех, кого я знаю, они не включены: я считала только тех, с кем работала вместе.
МИЭМ - да, я видела очень хороших специалистов оттуда, но до ВМиК там (среди моих бывших коллег) там было очень далеко.
no subject
Date: 2011-02-10 11:50 am (UTC)Дискретка, видимо, включает графы?
Теория множеств - понимаю, РСУБД из нее растут. Логика - понимаю.
Остальное напрямую применяется только в специфичных областях (общая алгебра - в криптографии, линейная - в геймдизайне, матан ни разу не потребовался). Этот набор - для математической эрудиции или для чего? У меня сложилось впечатление, что связь математики и программирования сильно преувеличена.
no subject
Date: 2011-02-10 12:34 pm (UTC)Алгебра и функциональный анализ - вообще в теории алгоритмов, не только в криптографии. Криптография - частный случай.
Математический анализ - пожалуй, в применении к численному моделированию. Задачи распознавания/обработки изображений, например, без знания математического анализа просто не решаются.
У меня, кстати, не математический анализ в списке был указан, а функциональный анализ. Тоже используется в разных алгоритмах, и гораздо чаще, чем математический анализ.