Читаем Человеческий фактор в программировании полностью

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

По словам известного эксперта Эда Йордона (Ed Yourdon), наставничество стало признаком культуры компании Microsoft и краеугольным камнем ее подхода к улучшению программного обеспечения. В соответствии с этим подходом за новыми работниками закрепляется персональный наставник, который проверяет каждую строчку их кода. А «наставляемый» читает каждую строку кода, написанного наставником. Это, как нам говорят, является живым подтверждением стремления к качеству и совершенствованию рабочего процесса на большом ранчо в Редмонде.

Нелли знала

Не желая ни славить, ни хоронить Цезаря, я воздержусь от общераспространенного бичевания Microsoft и вместо этого обращу больше внима-ния на то, чем является и чем не является наставничество. Во-первых, оно не ново. Несмотря на неологическое одеяние, представляющее наставничество как часть общего движения к совершенствованию качества и улучшению рабочего процесса, это старая идея. Наставничество — это модель «мастер-ученик» без узаконенного рабского служения. Это «переодетая» версия метода «сядь рядом с Нелли», который ранее применялся в разработке программного обеспечения. Эд Йордон и я даже писали об этой простой методике в первом издании «Structured Design» (Структурное проектирование) (Yourdon и Constantine, 1974 [70]). Новому программисту говорят: «Сядь рядом с Нелли. Она знает, как программировать». Как мы объяснили впоследствии, это симптом проблемы. Так как никто точно не знает, как Нелли удается хорошо программировать, и даже она сама не может толком это объяснить, то самый лучший способ поучиться у нее — это сесть рядом и смотреть, как она пишет код.

Ученичество — это модель обучения, которая более подходит для овладения ремеслом программирования, чем для поддержания дисциплины при разработке программ. Дисциплина требует наличия людей, которые умеют делать это; людей, которые знают, что делают те, которые умеют это делать; и людей, которые знают, как можно научить других тому, как делать то, что делают те, которые умеют делать это хорошо. Наставление — это то, к чему вы прибегаете, когда либо не понимаете свои действия, либо не можете выразить их в форме, в которой этому можно легко и надежно научить.

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

К этому времени Нелли уже стала прабабушкой, а все попытки программировать, которые она совершает, заключаются в том, чтобы записать на видеомагнитофон все четыре выпуска последних новостей на PBS. Тем не менее в компьютерной отрасли есть еще очень много программистов и разработчиков, которые хорошо делают свою работу, но даже под угрозой увольнения не могут объяснить, как. И чем ближе вы подходите к линии фронта, переднему краю методов, тем больше в этом убеждаетесь. На одной конференции в Сиднее (Австралия), посвященной объектно-ориентированному проектированию, наставничество упоминалось на каждом углу. На презентациях и в комментариях из зала о нем говорили как о золотом пути к мастерскому владению объектной технологией. Наверное, не случайно о наставничестве больше всего говорят тогда, когда речь заходит о новейших технологиях, а надежная опора почти не видна. Теория, методики и инструменты больше всего отстают от задач и существующей практики в тех областях, где внедряются передовые технологии. Там, где могут быть драконы, нужны хорошие наставники.

У меня были самые лучшие наставники. Удивительно, что нашлись умные тренеры, которые оказались достаточно смелыми и готовыми к тому, чтобы взять на обучение такого беспокойного молодого человека. Результаты тех лет все еще полезны. Я до сих пор стараюсь найти новые повороты в методиках, о которых я впервые узнал от Джека Креминса (Jack Сге-means), Кена Макензи (Ken Mackenzie), Дэйва Джаспера (Dave Jasper) и Бада Вайтофа (Bud Vitoff).

Жесткий допуск
Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

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

А. Алексашин , Дэвид Томас , Эндрю Хант

Программирование / Книги по IT