Верхнее образование инженеров-программистов

Jun 22, 2011 16:35

Мой вариант курсов для ВУЗовского образования по специальности "программная инженерия" (характеристика этих курсов даётся в каждом "кумулятивно", т.е. очень грубо считаем, что эти курсы проходятся последовательно, а не "вперемешку" и умения накапливаются от курса к курсу ( Read more... )

Leave a comment

Comments 157

operational software wake_ June 22 2011, 14:35:22 UTC
Как раз по вашему пункту 4 докладывают на канале Oreilly - http://www.youtube.com/user/OreillyMedia
В упрощенной для конференции и среднего девелопера форме. Главный тезис доклада в том, что в голове разработчика надо заменить ориентацию с разработки working software на operational software, где operations происходят в системе софт+пользователи+бизнес. И про необходимость внедрить данную пресуппозицию с каждодневные ментальные процессы обычного разработчика. Вот ведь интересно, agile методологии говорят про то же, но многие зацикливаются на их содержании, в то время как трюк в том, чтобы сменить "окраску" процесса в целом.

Reply

Re: operational software ailev June 22 2011, 22:09:50 UTC
В agile методологиях разные аспекты:
-- организация работы бригады разработчиков (кто за что ответственный, у кого на что полномочия, откуда приходят задания на работу)
-- инженерные вопросы (например, что и когда делать с архитектурой, начинать с тестов или заканчивать ими и т.д.)
-- очень редко предписывается как-то относиться к продукту: например, работа devops или предписание предмет-ориентированного программирования (когда софт должен соответствовать понятиям предметной области -- чаще всего "бизнеса", реже какой-нибудь embedded системе и т.д.).

Я предпочитаю сейчас обсуждать эти вопросы, используя separation of concerns ("аспектно-ориентировано"), то есть не винегретно, а порознь. Фишка в том, какие именно аспекты выделить, чтобы потом эти разные обсуждения можно было собрать в одно целое, а разные аспекты обсудить продуктивно. Поэтому я отдельно от инженерии ввожу тему инженерного менеджмента.

Reply


wim_winter June 22 2011, 14:44:49 UTC
Английский язык на первом курсе изучать бессмысленно. Его в начальных классах надо вести.
Если даем лингвистику - тогда уж лучше латинский или греческий - как наиболее с точки зрения лингвистики прозрачные. И дающие понятие о фундаменте, на котором строится любой язык.

Дискретная математика - это только после обычной, то есть курс второй. Параллельно с алгоритмами, так как связаны они сильно.

Системный подход и инженерная методология - курс первый, так как с них надо давать уже все методики, алгоритмы в плане их привязки к реальной жизни. Да и математику/физику тоже - то есть даже не первый, а школа.

Reply

perepertoz June 22 2011, 15:25:28 UTC
дескретную - начинать нужно параллельно с обычной. А потом уже и с предметной ориентацией.
и еще в первом курсе - факультатив языка программирования, для тех у кого в школе не было

Reply

wim_winter June 22 2011, 16:36:09 UTC
В дискретную они не врубаются на первом курсе. Причем массово.
Насчет языка - а его-то зачем? Просто, чтобы увидели?
Языки вообще учить особо нет нужды. Надо давать алгоритмы и конструкции. Потом смогут разобраться в любом.

Reply

ailev June 22 2011, 22:19:51 UTC
Насчет "неврубания на первом курсе" -- в этом-то и фишка. Нужна методология преподавания такая, чтобы врубились. Для этого нужно отмоделировать потребные мыслительные операции, и создать набор упражнений для их тренировки. И давать на первом курсе. Тогда на втором курсе уже можно разговаривать о хоть какой-то теории.

Языки нужно учить как языки, чтобы их потом уметь делать. Отмечу, что "набор конструкций" и "алгоритмы на псевдокоде" не дают знание о языке. Поэтому нужно уметь с языками программирования работать как с целыми объектами, уметь принимать по ним решения.

Reply


serbod June 22 2011, 16:37:37 UTC
В вашей програме на первом курсе из дельного - только инглиш. Впрочем, резюме курса верное - "умные, но бесполезные". Раз готовите программера, то готовьте программера, а не математика-лингвиста! Давайте ему сразу бейсик/паскаль, пусть учится думать алгоритмами и писать Hello world! задом наперед. А математику сложнее алгебры можно давать фоном, для тренировки мозгов. Один хрен она, вряд ли понадобится больше двух раз за всю жизнь.

Второй курс - без претензий. Курс профессионального программера, секреты мастеров.

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

Четвертый (менеджмент) - собссно и нужно посвятить подготовке инженера/руководителя. Навыки проектирования и анализа, распределение работы по коллективу, контроль, отчетность.

Reply

ailev June 22 2011, 22:28:28 UTC
Я много лет руководил коллективами программистов. И общался с очень хорошими программистами. И понимаю, чем лучшие программисты отличаются от предлагаемых вами. И почему победителей олимпиад по программированию трудно приспособить к работе. Поэтому я останусь при своём мнении о первом курсе и третьем курсе.

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

Reply

serbod June 23 2011, 06:56:16 UTC
Я тоже не первый год работаю, знаю разницу между олимпиадником и профессионалом. И считаю, что профессионала в ВУЗе подготовить никак не получится. В ПТУ/техникуме/колледже - можно, а в ВУЗе как ни крути - олимпиадники получаются ( ... )

Reply

perepertoz June 23 2011, 05:19:54 UTC
нее, для более глубокого воспитания методом Kнута&Пряника пускай учат MMIX ;)

Reply


si14 June 22 2011, 17:10:11 UTC
Получится замечательная свалка бесполезных бессистемных данных, устаревших в выходу из универа, да.

Reply

squadette June 22 2011, 17:20:58 UTC
в отличие от?

Reply

si14 June 22 2011, 19:04:59 UTC
В отличие от нормальной программы без кучи «типа практических» знаний, но с тонной матана.

Reply

ailev June 22 2011, 22:38:42 UTC
Ну да, программирование для аналоговых ЭВМ как раз требует знания тонны матана. Но я тут готовлю инженеров-программистов, а не инженеров-механиков или спецов по численным методам. Учить матан для сдачи экзамена в другом ВУЗе тоже не нужно, в нашей программе нет ни матана, ни экзамена по нему.

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

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

Reply


sergey_cheban June 22 2011, 17:31:57 UTC
1. Проблема, к сожалению, в кадрах. "Кто умеет - делает. Кто не умеет - учит".
2. На мой взгляд, в ВУЗе сложно дать практику по задачам, относящимся к 3-4 курсам. Нужно, чтобы перед обучаемыми встали те задачи и проблемы, которые их учат решать.

А в целом - да. Перечисленное нужно в реальной жизни и востребовано работодателями.

Reply

ailev June 22 2011, 22:45:14 UTC
Я с вами согласен по обоим пунктам. Но в данном постинге я обсуждаю только аспект содержания образования, а не "бизнес-проекта" (про кадры) и не дидактику (проблемное обучение, учебные проекты или еще какие способы получения не только знаний, но и навыков).

Reply


Leave a comment

Up