scholar_vit: (Default)
scholar_vit ([personal profile] scholar_vit) wrote2013-01-12 12:14 am

Ещё об индустриализации профессий

Комментируя мою предыдущую запись, [livejournal.com profile] pigbig указала на идеи Ритцера о Мак-Дональдизации общества (см. изложение концепции в рецензии на книгу Ритцера).

Книгу я ещё почитаю, но подмеченное автором стремление к воспроизводимости и предсказуемости мне кажется очень интересными наблюдением. При этом, если верить рецензенту, эта предсказуемость становится не средством, а целью: "Не надо лучше, надо по правилам!"

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

Преподаватель начал с того, что всем присутствующим известны замечательные программисты, способные быстро писать прекрасный код, точно решающий поставленную задачу. Они на голову выше остальных сотрудников, и заменить их практически невозможно. Задача менеджера состоит в том, чтобы таких сотрудников выявить и немедленно уволить. Их наличие несовместимо с современным промышленным производством, которому нужна воспроизводимость. "В правильно организованной компании, - подчеркнул преподаватель, - вы можете дать одну и ту же задачу двум разным программистам, и получить практически одинаковый код. Именно в этом состоит ваша цель". Преподаватель не произносил слов про средневековье и шедевры, но мысль его была вполне узнаваема: программист должен, как рабочий у конвейера, стать типовой деталью стандартного механизма. Интересно, что про качество кода при этом ничего не говорилось: в полном соответствии с идеями Ритцера (как я их понял из краткого изложения), предсказуемость и воспроизводимость тут не средство, а цель.

Я не знаю, получилось ли с этим у менеджеров, но сам подход тогда поразил меня размахом, достойным сэра Томаса Мора или Угрюм-Бурчеева. Уходящие в бесконечность правильные геометрические ряды одинаковых серых кубиков, в которых сидят взаимозаменяемые программисты, пишущие стандартный код. Они едят стандартную еду в стандартных Мак-Дональдсах, лечат их от типовых болезней типовые доктора (если два врача увидят одинаковые симптомы, они должны выписать одинаковые рецепты!), а взаимозаменяемые юристы оформляют им типовые разводы.

См. мультипликационную заставку к "Иронии судьбы".

[identity profile] kouzdra.livejournal.com 2013-01-12 05:33 am (UTC)(link)
Ну да - собственно одна из вещей, которыми меня в свое время удивил Гончаров - это именно абсолютно точным проговариванием этого идеала уже в середине 19 века:

Напрасно водили меня показывать, как красиво вздуваются паруса с подветренной стороны, как фрегат, лежа боком на воде, режет волны и мчится по двенадцати узлов в час. "Эдак и пароход не пойдет!" - говорят мне. "Да зато пароход всегда пойдет". Горе моряку старинной школы, у которого весь ум, вся наука, искусство, а за ними самолюбие и честолюбие расселись по снастям. Дело решено. Паруса остались на долю мелких судов и небогатых промышленников; всё остальное усвоило пар.
...
Роскошь старается, чтоб у меня было то, чего не можете иметь вы; комфорт, напротив, требует, чтоб я у вас нашел то, что привык видеть у себя.

Задача всемирной торговли и состоит в том, чтоб удешевить эти предметы, сделать доступными везде и всюду те средства и удобства, к которым человек привык у себя дома. Это разумно и справедливо; смешно сомневаться в будущем успехе. Торговля распространилась всюду и продолжает распространяться, разнося по всем углам мира плоды цивилизации. Вопрос этот важнее, нежели как кажется с первого раза. Комфорт и цивилизация почти синонимы, или, точнее, первое есть неизбежное, разумное последствие второго. И торговля не падет никогда, удовлетворяя хотя тонким, но разумным потребностям большинства, а не безумным прихотям немногих. Дело вполовину уже и сделано. Куда европеец только занесет ногу, везде вы там под знаменем безопасности, обилия, спокойствия и того благосостояния, которым наслаждаетесь дома, протягивая, конечно, ножки по одежке.
...
Еще слово: что было недоступною роскошью для немногих, то, благодаря цивилизации, делается доступным для всех: на севере ананас стоит пять-десять рублей, здесь - грош: задача цивилизации - быстро переносить его на север и вогнать в пятак, чтобы вы и я лакомились им.

Прогресс сделал уже много побед. Прочтите описание кругосветного путешествия, совершенного пятьдесят лет назад. Что это было? - пытка! Путешественник проходил сквозь строй лишений, нужд, питался соленым мясом, пил воду, зажав нос; дрался с дикими. А теперь? Вы едва являетесь в порт к индийцам, к китайцам, к диким - вас окружают лодки, как окружили они здесь нас: прачка-китаец или индиец берет ваше тонкое белье, крахмалит, моет, как в Петербурге; является портной, с длинной косой, в кофте и шароварах, показывает образчики сукон, материй, снимает мерку и шьет европейский костюм; съедете на берег - жители не разбегаются в стороны, а встречают
толпой, не затем чтоб драться, а чтоб предложить карету, носилки, проводить в гостиницу. Там тот же мягкий бифштекс, тот же лафит, херес и чистая постель, как в Европе.

[identity profile] kouzdra.livejournal.com 2013-01-12 05:36 am (UTC)(link)
PS: При этом любопытно, что хотя автор этот идеал разделяет вполне искренне, в описании викторианского Лондона и быта его обитателей именно как отлаженной машины или часов "с удобствами" он довольно ироничен:

Замечу, между прочим, что всё здесь стремится к тому, чтоб устроить образ жизни как можно проще, удобнее и комфортабельнее. Сколько выдумок для этого, сколько потрачено гения изобретательности на машинки, пружинки, таблицы и другие остроумные способы, чтоб человеку было просто и хорошо жить! Если обстановить этими выдумками, машинками, пружинками и таблицами жизнь человека, то можно в pendant к вопросу о том, "достовернее ли стала история с тех пор, как размножились ее источники" - поставить вопрос, "удобнее ли стало жить на свете с тех пор, как размножились удобства?"
Edited 2013-01-12 05:38 (UTC)

[identity profile] spamsink.livejournal.com 2013-01-12 05:39 am (UTC)(link)
Подобные преподаватели - идиоты, которые или никогда не работали в индустрии, или с треском вылетели оттуда за непроходимую тупость. Спросить такого преподавателя, помогут ли ему его ляхи одинаковые программисты, если важный заказчик обнаружит в продукте трудно воспроизводимую (но предсказуемую и таки воспроизводимую) ошибку в чужом коде, которую можно живьем увидеть лишь по удаленной сессии, и типичный программист просто не будет знать, с какого конца к этой проблеме подходить - и преподаватель сядет в лужу.

[identity profile] karachee.livejournal.com 2013-01-12 05:48 am (UTC)(link)
При организации потокового производства "воспроизводимость и предсказуемость" стоит выше эффективности. Лучше производить машину выдающую 100 км/ч каждая деталь которой стандартна и её может заменить любой механик, чем сделать суперкар разгоняющиеся до 300 км/ч который никто кроме автора не сможет ни починить, ни отрегулировать.

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

Ну лечение людей, оно собственно никак не подпадает под требования для потокового производства. Человеческое тело вещь всякий раз очень уникальная и с этим ничего не поделаешь.

[identity profile] kouzdra.livejournal.com 2013-01-12 05:49 am (UTC)(link)
PPS: А вообще же - "идеальное общество как часовой механизм" -
это же просвещенческий идеал "регулярного государства" (Щедрин собственно над ним и подтрунивал)

[identity profile] kouzdra.livejournal.com 2013-01-12 05:52 am (UTC)(link)
На самом деле все эти проблемы решаемы как раз - и именно на этом пути. И в общем индустрия именно так и устроена (софтверная индустрия кстати сейчас как раз одна из самых косных отраслей - она как раз в пользу массовости, стабильности и предсказуемости отвергает даже очевидно эффективные решения - "надо не хорошо, а как у всех")

Другое дело, что тут диалектика - таким методом не "прыгнуть выше головы", что иногда бьется больно.

PS: Ну и да - в крупной фирме полезно держать Левшу, на случай если внезапно понадобится блоху подковать (кстати - тот самый сюжет - но все таки что "ружья кирпичом не чистят" оно важнее)
Edited 2013-01-12 05:54 (UTC)

[identity profile] kouzdra.livejournal.com 2013-01-12 06:03 am (UTC)(link)
Реально упускается другой момент - отрасль настолько ресурсоизбыточна, что ей не нужны не только "эффективные решения", но и предсказуемость техпроцесса. То есть данный преподаватель неправ ровно так же как и "гениальный программист" - он предлагает решение проблемы, на которую нет спроса (только он пытается продать не эффективный код, а эффективное управленческое решение покупателю, которому и та и та эффективность глубоко по фигу)

[identity profile] spamsink.livejournal.com 2013-01-12 06:05 am (UTC)(link)
На самом деле все эти проблемы решаемы как раз - и именно на этом пути.

Софтверная индустрия разнообразнее, чем пытаются представить. Кроме "производства предметов потребления", которое у всех на виду, есть еще и производство средств производства. Весь тот софт, с помощью которого вся Япония и Южная Корея, все айбиэмы, армы, мипсы, эпплы и интелы, все максторы, сигейты и сандиски, а также прочие TSMC и UMC делают то, что они для нас делают, в первую очередь не массовый.

[identity profile] kouzdra.livejournal.com 2013-01-12 06:09 am (UTC)(link)
Я в курсе (как раз даже лучше чем в плане ширпотреба), там вообще ужас в этом плане. На массовом рынке все-таки немножко бежать приходится.

PS: Другое дело, что плясок с бубном и красивых слов там еще больше - но по уму там на эффективность (хоть программерскую,хоть менеджерскую) вообще всем наплевать. Хотя вслух это произносится по понятным причинам редко (хотя сталкивался)
Edited 2013-01-12 06:11 (UTC)

[identity profile] nms.livejournal.com 2013-01-12 06:19 am (UTC)(link)
Замени "компьютер" на "автомобиль" и почитай Ли Якокку.

What else is new since Bible times? ;-)

[identity profile] spamsink.livejournal.com 2013-01-12 06:25 am (UTC)(link)
Там не наплевать на эффективность продукта, выражаемую в сокращении time to market для заказчика, потому что деньги платят именно за это.

[identity profile] kouzdra.livejournal.com 2013-01-12 06:36 am (UTC)(link)
На это обычно тоже наплевать. Исключения бывают в редких случаях, когда вдруг реально начинает поджимать конкурент - но это бывает очень редко, а наука о том, как привязывать к себе клиентов построена в основном на другом вовсе - в первую очередь важно, чтобы клиент "подсел" - чтобы ему было трудно (и дорого) соскочить.

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

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

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

[identity profile] spamsink.livejournal.com 2013-01-12 06:40 am (UTC)(link)
C учетом этого возникает важный дополнительный параметр: чтобы глюки оказывались исправлены быстрее, чем у других - и для этого одного Левши на компанию недостаточно, нужна хотя бы парочка на отдел.

[identity profile] kouzdra.livejournal.com 2013-01-12 06:46 am (UTC)(link)
Быстрее - не нужно, в половине случаев вообще не нужно, чтобы они были исправлены хоть когда-то. Нужно, чтобы клиент был happy - а для этого куда важнее изображать деятельность (для чего есть отдел саппорта и всякие хитрые процедуры перекидывания багов с извещением клиента), чем реально ее осуществлять.

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

[identity profile] kouzdra.livejournal.com 2013-01-12 07:06 am (UTC)(link)
PS: Кстати, это как раз та причина, почему я скептически отношусь к "культу Мастера" - бо в софтверной индустрии как раз цеховщина и кустарщина цветут буйным цветом (хотя и не на средневековый лад) и в реальности это все выглядит вовсе не так привлекательно, как это расписывают.

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

[identity profile] karachee.livejournal.com 2013-01-12 07:09 am (UTC)(link)
Это смотря какая отрасль. Если речь идет о прикладных программах для ПК, то это один вопрос, если же программисты пишут прошивки в видеокамеры, телевизоры, стиральные машины, микроволновки и пр. то о ресурсоизбыточности речи не идет. Обычная часть обычного производственного процесса.

[identity profile] kouzdra.livejournal.com 2013-01-12 07:12 am (UTC)(link)
Ресурсоизбыточость тут в смысле, что в крайнем случае проблему проще забомбить деньгами, а не оптимизировать производственный процесс.

PS: И что до прошивок в микроволновки - там ресурсоизбыточность тоже по полной программе - там сам по себе микропроцессор избыточен - у меня например ни в микроволовке, ни в стиралке его и нет.

Его туда ставят именно как избыточно сложное, но дешевое решение.
Edited 2013-01-12 07:40 (UTC)

[identity profile] spamsink.livejournal.com 2013-01-12 07:16 am (UTC)(link)
Нет-нет, когда у клиента срываются сроки, он никогда не бывает happy, как бы ему лапшу на уши перекидыванием багов с извещениями не вешали. Уж будьте уверены.

[identity profile] spamsink.livejournal.com 2013-01-12 07:19 am (UTC)(link)
Одно другому мешать не должно. Я утверждаю, что посылка "надо стричь всё под одну гребенку" неверна, но это вовсе не значит, что на голове должен быть "взрыв на макаронной фабрике". Хватит и чубчика кучерявого.

[identity profile] kouzdra.livejournal.com 2013-01-12 07:34 am (UTC)(link)
Ну что значит "срываются сроки" - почти всегда есть какой-нибудь workaround, которым проблема реально и решается. Истерика - да - обычно связана с тем, что под какой-нибудь дедлайн программист заказчика "которого все это вконец достало" возгоняет проблему к начальству.

Случаи когда "у нас вообще ничего не работает" тоже бывают - но в общем это и есть на самом деле тот уровень качества, на который реально есть спрос в отрасли - если надо чтобы "работало всегда" - это стоит совсем других денег и сроков.

Не говоря уж о том, что и тут в половине случаев есть workarounds типа watchdog timer и его аналогов

[identity profile] dimrub.livejournal.com 2013-01-12 07:40 am (UTC)(link)
Тут два варианта: либо преподаватель совсем уж глупый идиот, либо вы его неверно поняли. С супер-пупер программистами иногда бывает проблема: они пишут код, который потом никто, кроме них, не в состоянии понять (а, значит, и поддерживать). Поэтому если такой супер-программист уволился, или перешел на другой проект, или даже был повышен в рамках проекта нынешнего, написанный им код вдруг резко теряет ценность, и во многих случаях его приходится просто выкидывать и переписывать с нуля. Кроме того, эти примадонны зачастую и тестированием себя не утруждают, полагая, что пишут без багов (в чем всегда ошибаются). Раньше их, почему-то, очень ценили. Тем не менее, очень крутой программист (в отличие от примадонн, пишущих исключительно под влиянием музы) - это такой, который пишет поддерживаемый, читаемый, тщательно оттестированный код, который поддерживать может любой приличный программист (в течении ограниченного времени, впрочем: просто приличные программисты плохо справляются с гниением битов). Производительность очень крутых программистов во много раз выше производительности приличных программистов (а есть вещи, на которые приличные программисты и вовсе неспособны), и фактор этот выше, чем фактор различия в зарплате. Поэтому чем больше таких программистов в фирме, тем ей лучше. При этом неверно, что два таких очень крутых программиста выдадут один и тот же код при решении одной и той же проблемы: если проблема достаточно сложна, с высокой вероятностью есть больше одного подхода для ее решения, и тогда нет причин, почему бы все они остановились на одном и том же решении.

[identity profile] spamsink.livejournal.com 2013-01-12 07:41 am (UTC)(link)
почти всегда есть какой-нибудь workaround

Это уже начинается hand-waving из серии No true Scotsman.

стоит совсем других денег и сроков

Ну да. Рынок оптимизирует всё, в т.ч. и соотношение цен, сроков и качества. На что жалуемся, собственно?

[identity profile] kouzdra.livejournal.com 2013-01-12 07:45 am (UTC)(link)
Ну да - согласен, но реально проблема им озвученная есть - и взаимозаменяемость важна (и если нужны "крутые программисты" это надо сразу в проекте закладывать - чтобы были и тоже были взаимозаменяемы), и предсказуемость.

Но реальная проблема imho в том, что в отрасли просто нет спроса ни на какую эффективность за редкими случаями "когда прижмет" (или когда инвестор на это решил сделать ставку)

[identity profile] kouzdra.livejournal.com 2013-01-12 07:54 am (UTC)(link)
Это уже начинается hand-waving из серии No true Scotsman.

Это просто мой опыт - обойти проблему почти всегда можно - а при дедлайне как раз - и лучше (потому как скоростные патчи в инструментарии чреваты ничуть не меньше) и этим обычно и заканчивется (если баг не совсем тривиальный). Просто дедлайн - удобный момент для истерики - программисты заказчика и так на взводе - а тут еще возможность перевалить ответственность.

Рынок оптимизирует всё, в т.ч. и соотношение цен, сроков и качества. На что жалуемся, собственно?

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

PS: При этом это более или менее все понимают - оттуда и прожекты "города Непреклонска" или триумфа очередного "супер-языка программирования" - сами по себе решения известны (и действительно эффективны), но порог их внедрения "в отдельно взятой фирме" запретительный
Edited 2013-01-12 08:05 (UTC)

[identity profile] spamsink.livejournal.com 2013-01-12 08:13 am (UTC)(link)
эффективность отрасли очень невелика

По каким критериям и по сравнению с чем?

Page 1 of 3