scholar_vit: (Default)
scholar_vit ([personal profile] scholar_vit) wrote2007-01-17 03:24 pm
Entry tags:

Об эстрадности

Университет перестраивает учебные планы. Мой курс поставили на осень, поэтому сейчас ничего не читаю. А тут оказалось, что в компании надо провести лекцию для новых разработчиков: объяснить, как работает CVS (чего только не приходится преподавать). С утра ощущал подъём настроения; даже намечавшаяся простуда куда-то ушла.

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

Собственно, этот журнал - тоже от эстрадности.

[identity profile] e2pii1.livejournal.com 2007-01-19 06:47 am (UTC)(link)
Одна из распространённых копроративных моделей разработки софта тут - это нанять как можно больше как можно более дешёвых кодеров (обычно иммигрантов первого поколения из Китая, Индии, Пакистана и т.п.) и дать каждому подробные инструкции.

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

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

[identity profile] scholar-vit.livejournal.com 2007-01-19 06:08 pm (UTC)(link)
О психологии начальства мне рассуждать сложно; ничего, кроме Галича ("но начальник умным не может быть, потому что не может быть") в голову не приходит.

На самом деле я слышал вполне серьёзное обоснование такого подхода на лекциях по организации разработки. Там объяснялось, что хотя хороший программист на порядки продуктивнее средних, с ним связана проблема: если он уйдёт, всё посыплется. Поэтому лучше нанимать не одного суперклассного, а кучу посредственных, и так организовать процесс, чтобы они были взаимозаменяемы. Винтики и гаечки. На мой взгляд, тут есть логическая ошибка: грамотность почему-то противопоставляется организованности. Может, правильнее нанимать грамотных и организовывать процесс с ними? Но я по политическим соображениям этого говорить лектору не стал. Лектор ещё приводил стандартное сравнение с промышленной революцией: дескать, всё стало лучше, когда на место старых мастеров, создававших шедевры, пришло массовое производство, а затем конвейер. Это на мой взгляд тоже странно: интеллектуальный труд тем и отличается от производства материальных товаров, что одна высококлассная карета не заменит тысячу плохих, а вот одна правильно написанная программа заменит тысячу плохих, созданных конвейерным способом.

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

В первом случае предполагается, что человек очень грамотен и потратил некоторое время на то, чтобы в совершенстве овладеть инструментарием (все эти awkи, sedы и grepы). Он занимается в основном нетривиальным, творческим трудом. А если ему нужно сделать много рутинных, повторяющихся вещей - он быстро и эффективно их автоматизирует с помощью этого инструментария - вроде упомянутого Вами кодогенератора. В общем, человек не должен работать - работать должна машина. А человек должен думать. Ещё раз подчеркну, что речь идёт не только о программистах; классики Unixа предназначали систему для всякого интеллектуального труда: и физик, и бухгалтер должны были сами писать однострочники на sedе с awkом - точно так же, как современный человек сам может написать и прочесть записку жене или мужу, и не прибегает к услугам писца.

В подходе Windows предполагается обратное: что человек туп, умственно ленив и в принципе не может ничему научиться. Его инструменты должны быть "просты в обучении". Предполагается, что его работа по большей части будет состоять в тупом Copy & Paste, а творческий элемент в ней минимизирован. Вопрос об автоматизации вообще не стоит: пользователю этого класса легче часа три подряд щелкать мышкой по одной и той же последовательности кнопок, чем один раз написать скрипт (на всякий случай скриптовые инструменты от него тщательно прячут).

Если Вас не смущает несколько марксистская терминология, то в первом подходе компьютер - инструмент человека, а во втором человек - придаток к компьютеру.

А вообще на эти темы лучше разговаривать с [livejournal.com profile] vitus_wagner: он довольно ясно об этом пишет.

[identity profile] e2pii1.livejournal.com 2007-01-19 08:37 pm (UTC)(link)
Правильно вы все говорите.
Только вместо awk лучше gawk (GNU awk), у него возможностей больше, причем весьма полезных.
Мне в windows приходится работать, но я и в ней рутинные операции автоматизирую, восновном хватает удобного текстового редактора, gawk и MS DOS batch files.

[identity profile] scholar-vit.livejournal.com 2007-01-19 08:42 pm (UTC)(link)
ls -ls `which awk`
0 lrwxrwxrwx 1 root root 21 2005-08-07 15:18 /usr/bin/awk -> /etc/alternatives/awk

ls -ls /etc/alternatives/awk
0 lrwxrwxrwx 1 root root 13 2005-08-07 14:48 /etc/alternatives/awk -> /usr/bin/gawk