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

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

1. Грунтовка мозга: подготовка "думателя"
-- английский язык
-- дискретная математика, классическая логика
-- философская логика (и совсем чуть-чуть философии)
-- лингвистика
-- формальные семантика и прагматика в объеме, чтобы свободно читать теоретические статьи по computer science.

После этого курса выходят очень умные, полностью бесполезные в любом деле люди. Зато их можно потом легко обучить многим и многим профессиям, ибо они после этого курса "быстро схватывают".

2. Предметная ориентация: подготовка "учёного программиста" (computer science)
-- парадигмы программирования и языки программирования
-- моделирование данных (от реляционок до онтологий, от XML до ISO 15926)
-- алгоритмика (методом Кнута без пряника, но не чураясь параллельности)
-- как устроены компиляторы, интерпретаторы, виртуальные машины, моделлеры и прочие редактирующие и исполняющие среды -- в объеме, позволяющем ориентироваться в том, что пишут в рассылке FONC, на сайте Lambda Ultimate, а также примерно понимать, как устроены системы типа помянутых в http://www.languageworkbenches.net/ar.html

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

3. Профессиональная ориентация: инженерные компетенции:
-- системный подход, инженерный метод (работа с эвристиками)
-- ситуационная инженерия методов, методологии разработки
-- технические практики системной инженерии (инженерия требований, инженерия системной архитектуры и т.д.): не для "чисто программных систем" (таких нет), а сразу для социотехнической системы, киберфизической системы и т.д.,
-- особенности программной инженерии: методологии разработки (в ассортименте: RUP, SCRUM и все-все-все, понятие о devops etc.), архитектура и моделирование, методы тестирования, методы версионирования и управления конфигурацией, продуктные линии и т.д.. Фишка в том, что это одна строчка в программе, т.е. учить нужно отнюдь не только этому! Всё это дается как "специализация" для практик системной инженерии.

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

4. Инженерный менеджмент (как устроено производство)
-- праксеология (формальный анализ человеческой деятельности)
-- enterpise engineering (организационные модели + change management)
-- управленческий учёт
-- проектное управление в связи с методологиями разработки
-- работа с живыми людьми (aka "лидерство")

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

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

Для понимания моего подхода полезно также ознакомиться с другими моими материалами по общему верхнему образованию:
-- программа общего верхнего образования: http://ailev.livejournal.com/853399.html (июль 2010)
-- тезисы к Программе общего верхнего образования: http://ailev.livejournal.com/855472.html (август 2010)
-- оценки времени верхнего образования: http://ailev.livejournal.com/871079.html (октябрь 2010)
-- системная инженерия верхнего образования http://ailev.livejournal.com/907435.html (февраль 2011)

Оставить комментарий

Архив записей в блогах:
А что, наверное смотреть на войну глазами Швейка - один из лучших способов ее пережить. Пока в человеке жива ирония, он жив и умен. Даже если при том - официальный, как Швейк, идиот. Впрочем, кто такой идиот, в классическом осмыслении термина - у древних греков это ...
Год - 2019 Режиссёр - Тим Миллер Прежде чем начнём, я напомню, что существует постулат адекватных фанатов Терминатора: Вселенная Терминатора официально заканчивается на концовке режиссёрской версии второй части, где Сара Коннор вместе со взрослым Джоном растит внуков, и никакой войны ...
Вчера на сайте омской мэрии появилось радостное сообщение о том, что новая дорога по улице Чехова построена на 30% https://admomsk.ru/web/guest/news/-/asset_publisher/mh3W/content/1048495 Подчеркивается, что работы завершатся 15 ноября. Только вот проблема в том, что никто по этой ...
Мне исполнилось 32 года. А хотелось бы наоборот! Кто за то, чтобы ввести ради меня ...
Итак, затеянная М.Тиминым "Лисицимахия" завершилась полной и убедительной победой Ф.Лисицина. Стоило Фёдору мягко намекнуть на свой уход с "Тактик Медиа", как Миша - до этого такой чоткий, дерзкий и резкий - тут же жалко и позорно слился Эх, Тимин ...