edgeways.ru
|
|
Верхнее образование инженеров-программистов Пользователь: edge (IP-адрес скрыт) Дата: 23, June, 2011 06:46 [ailev.livejournal.com]
Мой вариант курсов для ВУЗовского образования по специальности "программная инженерия" (характеристика этих курсов даётся в каждом "кумулятивно", т.е. очень грубо считаем, что эти курсы проходятся последовательно, а не "вперемешку" и умения накапливаются от курса к курсу): 1. Грунтовка мозга: подготовка "думателя" -- английский язык -- дискретная математика, классическая логика -- философская логика (и совсем чуть-чуть философии) -- лингвистика -- формальные семантика и прагматика в объеме, чтобы свободно читать теоретические статьи по computer science. После этого курса выходят очень умные, полностью бесполезные в любом деле люди. Зато их можно потом легко обучить многим и многим профессиям, ибо они после этого курса "быстро схватывают". 2. Предметная ориентация: подготовка "учёного программиста" (computer science) -- парадигмы программирования и языки программирования -- моделирование данных (от реляционок до онтологий, от XML до ISO 15926) -- алгоритмика (методом Кнута без пряника, но не чураясь параллельности) -- как устроены компиляторы, интерпретаторы, виртуальные машины, моделлеры и прочие редактирующие и исполняющие среды -- в объеме, позволяющем ориентироваться в том, что пишут в рассылке FONC, на сайте Lambda Ultimate, а также примерно понимать, как устроены системы типа помянутых в [www.languageworkbenches.net] Эти люди могут побеждать в олимпиадах по программированию, читать лекции в университетах, но к работе по специальности "программная инженерия" совершенно не приспособлены (ибо у них нет в лексиконе слов "требования", "архитектура", "методология разработки" и т.д.) -- то есть "придумывать алгоритмы умеют, а работать не умеют". 3. Профессиональная ориентация: инженерные компетенции: -- системный подход, инженерный метод (работа с эвристиками) -- ситуационная инженерия методов, методологии разработки -- технические практики системной инженерии (инженерия требований, инженерия системной архитектуры и т.д.): не для "чисто программных систем" (таких нет), а сразу для социотехнической системы, киберфизической системы и т.д., -- особенности программной инженерии: методологии разработки (в ассортименте: RUP, SCRUM и все-все-все, понятие о devops etc.), архитектура и моделирование, методы тестирования, методы версионирования и управления конфигурацией, продуктные линии и т.д.. Фишка в том, что это одна строчка в программе, т.е. учить нужно отнюдь не только этому! Всё это дается как "специализация" для практик системной инженерии. После этого курса выходит инженер-программист ("умеет программировать"), не ориентирующийся в жизни. Он хорошо решает поставленную ему узкую программистскую задачу, но у него нет знаний о том, как устроено производство -- поэтому он постоянно решает ненужные задачи, и не решает нужные ("программировать умеет, программирует всё время что-то не то"). Поэтому требует мелочного внешнего управления. 4. Инженерный менеджмент (как устроено производство) -- праксеология (формальный анализ человеческой деятельности) -- enterpise engineering (организационные модели + change management) -- управленческий учёт -- проектное управление в связи с методологиями разработки -- работа с живыми людьми (aka "лидерство") После этого курса выходит инженер-программист, который ориентируется в производственной жизни, способен встроиться в производственный процесс, "самоорганизующийся" и даже при случае "организующий". Это и есть искомый результат обучения. Время такого образования -- входное условие (например, 4 года), а вот уровень квалификации выпускника существенно зависит от методики (т.е. выбранных наборов упражнений -- по моей оценке, ежели учить "правильно", т.е. учить тщательно подобранными упражнениями для предварительно отмоделированных мыслительных операций, то получается обычно впятеро быстрее, чем если учить "традиционно"). * * * Понятно, что у меня есть собственное понимание, что такое "инженер-программист" (не только теоретическое, но и практическое: у меня многолетний рабочий стаж и программиста-теоретика, и инженера-программиста, и менеджера программистского коллектива, и многолетний стаж работы в проектах, где айтишные задачи представляют только часть работы). Для понимания моего подхода полезно также ознакомиться с другими моими материалами по общему верхнему образованию: -- программа общего верхнего образования: [ailev.livejournal.com] (июль 2010) -- тезисы к Программе общего верхнего образования: [ailev.livejournal.com] (август 2010) -- оценки времени верхнего образования: [ailev.livejournal.com] (октябрь 2010) -- системная инженерия верхнего образования [ailev.livejournal.com] (февраль 2011) : Pirx, nekto |