Книги по разным темам Pages:     | 1 | 2 | 3 | Обучение программистов: подход на основе парадигмы специалиста Артюхин В. В., канд. экон. наук, доцент, ВНИИ ГОЧС, МОО Информация для всех, Москва Семёнов Игорь Алексеевич, ООО Контент Мастер, Москва Существует немало подходов к выстраиванию учебного плана высшего профессионального образования по специальностям и направлениям, связанным с информационными технологиями (ИТ). Перед тем, как планировать учебный процесс и наполнять его конкретными языками программирования, библиотеками и методиками, имеет смысл определиться с тем, какого именно специалиста вуз хочет получить на выходе. Авторами работы предлагается подход на основе парадигмы специалиста, который позволяет решить эту задачу и может применяться совместно с другими подходами.

Введение Перечислим некоторые из подходов к разработке учебных планов.

Формальный подход заключается в неукоснительном соблюдении требований государственного образовательного стандарта (ГОС) по соответствующей специальности или направлению. В этом случае наполнение дисциплин и курсов включает то и только то, что есть в стандарте - не больше, не меньше. В той же части, где стандарт предоставляет вузу свободу, план формируется исходя из того, какие в вузе имеются преподаватели. Целенаправленная разведка рынка труда и тенденций развития ИТ не осуществляется (а это сама по себе сложная научная работа - спрогнозировать, что будет нужно знать специалисту через 5 лет), работа по организации взаимодействия с отраслевыми компаниями не проводится (или проводится эпизодически, например, в преддверие 1 студенческой практики, бессистемно, для галочки). Формальный подход бесконечно далек от совершенства во многих отношениях и по многим причинам.

Подход на основе технологий. В этом случае во всем, что связано с ИТ, учебный план можно условно разделить на две крупные части: базовую (или безопасную) и оперативную (она же продвинутая). Базовая часть включает такие дисциплины, как Архитектура вычислительных систем, Программирование на языке C, Объектно-ориентированное программирование и тому подобные. Это безопасные дисциплины, потому что из года в год и из десятилетия в десятилетие их состав не меняется, а наполнение может изменяться, но нефундаментально или незначительно. Оперативная часть учебного плана собирается из дисциплинфрагментов на основании того, что актуально сегодня (в этом году, в этом десятилетии, в этой части света), и эти дисциплины могут полностью заменяться или обновляться, хоть каждый год. Проблема в том, кто и как определяет актуальность той или иной технологии или тематики и на основании каких данных. Источники информации здесь могут варьироваться от результатов реальных исследований и опыта работы в отрасли ответственного за план сотрудника (или сотрудников: декана, его заместителей, заведующих профильными кафедрами и их преподавателей) до заметок в интернет-изданиях и программных заявлений политических деятелей (Нанотехнологии!, Суперкомпьютеры! и так далее). Есть и другая проблема: составители учебных планов - деканы, заведующие кафедрами и преподаватели - часто забывают о том, что компьютерные науки во многом вышли именно из университетской, научной среды. И по сей день на этих людях лежит ответственность не только за следование в построении учебного процесса мейнстриму, но и в значительной степени за определение этого самого мейнстрима - перспективных направлений развития ИТ. [1] Ведь реальный сектор, отраслевые компании интересуются тем, что им известно, тем, что является их специализацией, и лишь немногие из них, а именно крупные и богатые, могут позволить себе проведение собственных исследований и открывать что-то по-настоящему новое.

Вообще, как правило, по-настоящему новое - это идея или видение одного человека, которое уже потом может стать или не стать специализацией ИТкомпании. [2] Подход на основе стандартов совмещает некоторые элементы первых двух описанных подходов, имеет вытекающие из этого достоинства и недостатки. В качестве источника информации для определения состава дисциплин учебного плана и их наполнения берется некий отраслевой или образовательный (в дополнение к ГОС, которому нужно следовать обязательно) стандарт, и этот стандарт или стандарты важно правильно выбрать - стандарт может быть российским (например, Профессиональные стандарты в области ИТ разработки АП КИТ [3]) или международным (Учебный план по компьютерным наукам 2008 - англ. Computer Science Curriculum 2008 [4], Руководство к своду знаний по программной инженерии - англ. Guide to Software Engineering Body of Knowledge, SWEBOK производства ACM и IEEE CS и т. д. [5]). Стандарт может быть декларативным (описывающим, что должен знать специалист) или императивным (описывающим, чему нужно учить студента), слишком общим или чрезмерно конкретным, он может быть ориентирован на применение в учебном процессе или отражать исключительно текущие, даже сиюминутные потребности ИТ-компаний, а люди, которые его составляли, могли разбираться в специфике образования в разной степени.

Ориентирование на клиентов. Конечно, сначала нужно определить, кого учебное заведение считает своим клиентом и, если таковых несколько (а так оно на самом деле и есть), упорядочить их по степени важности. Клиентами вуза являются и студенты, и отраслевые компании, и государство, и человечество в целом. При этом у разных клиентов разная мотивация и критерии оценки работы вуза:

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

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

Государство, при наличии внятной политики в области ИТ, обязано прогнозировать, какие специалисты понадобятся через год, два, пять, десять и впоследствии.

Человечество должно развиваться, и кто-то должен определять направления развития, в том числе и в области ИТ.

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

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

Однако когда мы говорим о специалистах вообще и специалистах в области ИТ в частности, мы склонны характеризовать их либо с точки зрения компетенций (или знаний, умений, навыков, что то же самое), либо с точки зрения конкретных технологий (C++, ASP.NET, Oracle, 1С, OpenGL, Unix и т. д.), которыми они владеют. Это немаловажные характеристики, но их недостаточно - когда речь идет о специалисте в той или иной области, существует еще один уровень, уровень выше конкретных компетенций или технологий, и только на этом уровне можно ответить на вопросы: Как будет развиваться специалист, Какой характер работы он будет выполнять и Насколько универсальным он будет Речь идет о парадигме специалиста.

Слово парадигма, пришедшее из греческого языка, в разных областях имеет разные определения:

в грамматике слово, служащее образцом склонения или спряжения, таблица форм склонения и спряжения слов; [6] в риторике пример, взятый из истории и приведенный с целью сравнения; [7] в науке совокупность фундаментальных установок, представлений и терминов, принимаемая и разделяемая научным сообществом и объединяющая большинство его членов, обеспечивает преемственность развития науки и научного творчества; [8] в философии науки совокупность явных и неявных (и часто не осознаваемых) предпосылок, определяющих научные исследования и признанных на данном этапе развития науки, а также универсальный метод принятия эволюционных решений, гносеологическая модель эволюционной деятельности; [9] в программировании совокупность идей и понятий, определяющих стиль написания программ; [10] В данном случае парадигму специалиста мы считаем разумным определить, как совокупность собственных представлений специалиста, а также представлений работодателей о профессии программиста и разновидностях выполняемой им деятельности, о методах получения новых компетенций, о степени глубины и широты познаний в той или иной области (технологии или группе технологий, методах решения определенных типов задач) и о степени универсальности специалиста.

Приведенное определение значительно шире и глубже, чем список компетенций, чем то, что обычно включают в профессиональные стандарты и описания вакансий, хотя у представителей работодателей, в особенности компаний, непосредственно занимающихся разработкой программного обеспечения (ПО), представление о парадигме нужного специалиста часто имеется. Конкретная парадигма может быть описана разными формулировками, вплоть до емкого: лумен и доводит дело до конца. [11] Следует отметить, что парадигма специалиста не имеет ничего общего с парадигмой обучения: последняя часто используется в научных трудах, но представляет собой не гипотетический портрет будущего специалиста, а абстрактный пейзаж учебного процесса (методы, технологии обучения, компетенции преподавателя). Образовательная парадигма (или парадигма обучения) касается того, как сформировать специалиста с определенным известным набором характеристик, но не того, как составить этот набор.

Два примера парадигм программиста Мы предлагаем рассмотреть для примера две парадигмы программиста.

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

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

Такой подход к понимаю себя в профессии имеет ряд преимуществ:

программист-шахтер действительно глубоко знает свой предмет, часто является звездой компании-работодателя и имеет достаточно высокую заработную плату;

если задача хоть как-то может быть решена с помощью известной ему технологии, он ее обязательно решит, а если задачу можно решить множеством способов, то он способен найти наиболее эффективный из них;

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

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

Разумеется, имеется и ряд недостатков:

ограниченность профессионального кругозора в сочетании даже с тривиальной задачей, выходящей за рамки известной программистушахтеру области, может приводить к ее неразрешимости его силами;

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

если такой специалист все же добавляет в свой арсенал некий новый для него язык программирования, то существует опасность того, что он будет проектировать и разрабатывать код так, как он делал это в старом, привычном языке, следуя букве, но не духу нового; [12] иногда шахтеры склоняются к мнению, что быстрые и масштабные изменения в области ИТ в будущем могут оставить их на обочине (лC++ через 20 лет будет таким, что я не смогу в нем разбираться и т. д.).

По мнению Бьярне Страуструпа (создателя языка программирования C++), которое он высказал в интервью авторам данной работы на конференции CEE SECR 2010 в Москве [13], специализация является в настоящее время одним из важнейших аспектов обучения программированию, Шахтеры как раз и представляют собой результат такого специализированного обучения - спецназ в области разработки ПО.

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

Как и в случае шахтера, парадигме коммивояжера присущи специфические достоинства и недостатки. Достоинства:

широкий спектр известных инструментов позволяет программистукоммивояжеру быстро сообразить, какой из них или какое их сочетание можно использовать, чтобы быстро получить желаемый результат;

коммивояжеры читают много материалов по ИТ (не только в части разработки ПО);

новые задачи, с которыми подобный специалист не сталкивался ранее, его нисколько не пугают (по крайней мере, до детального их разбора);

профессиональный кругозор во многих случаях позволяет по-новому взглянуть на старые задачи и получить более эффективное, неочевидное решение;

способность работать не программистом (менеджером, научным сотрудником, бухгалтером), при этом применяя навыки программиста;

Pages:     | 1 | 2 | 3 |    Книги по разным темам