Об обучении программированию [1]
Jan. 13th, 2008 09:18 pmЭта запись чрезвычайно интересна как сама по себе, так и комментариями. Но есть
моменты, которые меня не устраивают: модальность и концентрация на одном
факторе.
> программисты очень резко делятся на хороших и плохих - и
пропасть между ними огромна.
Во-первых... да, у меня нет опыта работы в коллективе программистов
численностью хотя бы в сто человек. А уж тем более в десять тысяч. Но
"огромную пропасть" я всё-таки не видел. Может, это таки действительно
недостаток моего опыта, заранее согласен.
Во-вторых. Я не верю в чёткие разделения, возникающие природно. Ну не
делает так эволюция: даже половой дихотомизм имеет массу промежуточных
граней во всех аспектах и реализациях. А тем более - психологические
особенности. Чёткие психотипы (неважно, по каким осям деления) крайне
редки, практически все реальные случаи - смешанные. Значит, деление
возникает уже из-за неприродных причин. (Даже если это не так - это
хорошая рабочая гипотеза для того, чтобы попытаться от неё построить
теорию.) В первую очередь - неадекватное обучение. И потому, что никто
не ставил себе задачу обучать на программиста заранее; и потому, что,
вероятно, готовить к такому типу работы нужно значительно раньше, чем
это делается сейчас (в вузе, в крайнем случае в последних классах
школы). Качественное отличие _занятия_ программирования от большинства
прежних занятий людей достаточно очевидно, и вот это - то разделение,
которое и способно породить пропасть.
Чтобы это решить, попробуем поставить два вопроса:
- Есть ли среди ранее известных занятий аналоги программирования?
- Что требуется от человека, чтобы успешно ими заниматься?
Заранее скажу: я на второе ответа не вижу. Первое - называлось много
вариантов: например, строительство (и легендарный дятел опять долбит в
стену). Но это всё не то. "То" - конструирование. Причём значительно
ближе к экспериментальному, чем к серийному (хотя embedded, например,
ближе к серийному): цена копирования готовой программы ничтожно низка,
поэтому ограничения конструирования серийных изделий не имеют аналога.
Вспомним знаменитую цитату из Ершова:
"Программист должен обладать способностью первоклассного математика к
абстракции и логическому мышлению в сочетании с эдисоновским талантом
сооружать всё, что угодно, из нуля и единицы. Он должен сочетать
аккуратность бухгалтера с проницательностью разведчика, фантазию автора
детективных романов с трезвой практичностью экономиста." (Спасибо
viskubovae за цитату.)
Про абстракцию scholar_vit рассказал, повторяться здесь не будем.
Аккуратность, проницательность, фантазия, практичность - это так или
иначе присутствует в любой профессии. А вот "сооружать всё, что угодно,
из нуля и единицы" - это и есть конструирование.
Но конструирование - если не считать инженеров советских НИИ,
протиравших штаны и решавших кроссворды - весьма редкое занятие. И
разница между конструктором низшего ранга, который решает заданные
начальством задачи уровня "подсчитать форму зубца шестерёнки", и автором
самолёта - в разы больше, чем между участковым "горло красное -
полоскать, это болит не понимаю где - вызывайте неотложку" и Грегом
Хаузом. Хотя сравнима с разницей между санитаром и опять же Хаузом.
Итак, что может влиять? Один фактор описан у scholar_vit: это умение
правильно абстрагироваться. Я уверен, что оно не абсолютное. И что те же
задачи на "Все кошки зелёные", если будут поставлены в правильный
контекст, могут быть решены любым ребёнком и взрослым. Для ребёнка это
будет игра: например, создание вымышленного царства, где все кошки
зелёные, и другого царства, где все кошки красные. Кому-то хватит
собственного воображения, кому-то нужен спектакль с детьми в костюмах
цветных кошек, а кто-то прочитает дилогию про Алису. Для взрослого -
не буду гадать, но хорошим предварительным критерием может быть
склонность к фантастике - где не столько необычные или острые ситуации в
известном мире, сколько неизвестный мир.
Но это фактор не единственный (хотя и, вероятно, самый главный).
Продолжение следует. Но решил разбить на несколько постингов... надеюсь, что хватит духу.
Тем временем в ленте увидел ещё обсуждение, у sergeyr (детально ещё не прочитал).
UPD:
часть 2
моменты, которые меня не устраивают: модальность и концентрация на одном
факторе.
> программисты очень резко делятся на хороших и плохих - и
пропасть между ними огромна.
Во-первых... да, у меня нет опыта работы в коллективе программистов
численностью хотя бы в сто человек. А уж тем более в десять тысяч. Но
"огромную пропасть" я всё-таки не видел. Может, это таки действительно
недостаток моего опыта, заранее согласен.
Во-вторых. Я не верю в чёткие разделения, возникающие природно. Ну не
делает так эволюция: даже половой дихотомизм имеет массу промежуточных
граней во всех аспектах и реализациях. А тем более - психологические
особенности. Чёткие психотипы (неважно, по каким осям деления) крайне
редки, практически все реальные случаи - смешанные. Значит, деление
возникает уже из-за неприродных причин. (Даже если это не так - это
хорошая рабочая гипотеза для того, чтобы попытаться от неё построить
теорию.) В первую очередь - неадекватное обучение. И потому, что никто
не ставил себе задачу обучать на программиста заранее; и потому, что,
вероятно, готовить к такому типу работы нужно значительно раньше, чем
это делается сейчас (в вузе, в крайнем случае в последних классах
школы). Качественное отличие _занятия_ программирования от большинства
прежних занятий людей достаточно очевидно, и вот это - то разделение,
которое и способно породить пропасть.
Чтобы это решить, попробуем поставить два вопроса:
- Есть ли среди ранее известных занятий аналоги программирования?
- Что требуется от человека, чтобы успешно ими заниматься?
Заранее скажу: я на второе ответа не вижу. Первое - называлось много
вариантов: например, строительство (и легендарный дятел опять долбит в
стену). Но это всё не то. "То" - конструирование. Причём значительно
ближе к экспериментальному, чем к серийному (хотя embedded, например,
ближе к серийному): цена копирования готовой программы ничтожно низка,
поэтому ограничения конструирования серийных изделий не имеют аналога.
Вспомним знаменитую цитату из Ершова:
"Программист должен обладать способностью первоклассного математика к
абстракции и логическому мышлению в сочетании с эдисоновским талантом
сооружать всё, что угодно, из нуля и единицы. Он должен сочетать
аккуратность бухгалтера с проницательностью разведчика, фантазию автора
детективных романов с трезвой практичностью экономиста." (Спасибо
Про абстракцию scholar_vit рассказал, повторяться здесь не будем.
Аккуратность, проницательность, фантазия, практичность - это так или
иначе присутствует в любой профессии. А вот "сооружать всё, что угодно,
из нуля и единицы" - это и есть конструирование.
Но конструирование - если не считать инженеров советских НИИ,
протиравших штаны и решавших кроссворды - весьма редкое занятие. И
разница между конструктором низшего ранга, который решает заданные
начальством задачи уровня "подсчитать форму зубца шестерёнки", и автором
самолёта - в разы больше, чем между участковым "горло красное -
полоскать, это болит не понимаю где - вызывайте неотложку" и Грегом
Хаузом. Хотя сравнима с разницей между санитаром и опять же Хаузом.
Итак, что может влиять? Один фактор описан у scholar_vit: это умение
правильно абстрагироваться. Я уверен, что оно не абсолютное. И что те же
задачи на "Все кошки зелёные", если будут поставлены в правильный
контекст, могут быть решены любым ребёнком и взрослым. Для ребёнка это
будет игра: например, создание вымышленного царства, где все кошки
зелёные, и другого царства, где все кошки красные. Кому-то хватит
собственного воображения, кому-то нужен спектакль с детьми в костюмах
цветных кошек, а кто-то прочитает дилогию про Алису. Для взрослого -
не буду гадать, но хорошим предварительным критерием может быть
склонность к фантастике - где не столько необычные или острые ситуации в
известном мире, сколько неизвестный мир.
Но это фактор не единственный (хотя и, вероятно, самый главный).
Продолжение следует. Но решил разбить на несколько постингов... надеюсь, что хватит духу.
Тем временем в ленте увидел ещё обсуждение, у sergeyr (детально ещё не прочитал).
UPD:
часть 2
no subject
Date: 2008-01-14 10:41 am (UTC)У меня есть такой знакомый.