Автор Тема: [Oberon way] Об индустриализации программирования  (Прочитано 5039 раз)

Geniepro

  • Hero Member
  • *****
  • Сообщений: 1955
  • Знайте- истина в том, что повторено трижды подряд!
    • Просмотр профиля
Ещё об индустриализации профессий
Цитата: scholar_vit
Комментируя мою предыдущую запись, pigbig указала на идеи Ритцера о Мак-Дональдизации общества (см. изложение концепции в рецензии на книгу Ритцера).

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

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

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

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

 См. мультипликационную заставку к "Иронии судьбы".
to iterate is human, to recurse, divine

Салат «рекурсия»: помидоры, огурцы, салат…

Илья Ермаков

  • Sr. Member
  • ****
  • Сообщений: 493
    • Просмотр профиля
... и решают стандартные задачи в 100 раз...

Oberon way - это стандартизация базовых "кубиков" и приёмов, для концентрации на решении нестандартных задач.
И, кстати, стремление к простоте исключает  стандартность мышления... Чтобы сделать просто, нужно много думать - и думать не так, как все.

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
... и решают стандартные задачи в 100 раз...

Oberon way - это стандартизация базовых "кубиков" и приёмов, для концентрации на решении нестандартных задач.
И, кстати, стремление к простоте исключает  стандартность мышления... Чтобы сделать просто, нужно много думать - и думать не так, как все.
Кстати, а что такое нестандартная задача? А то отовсюду слышу это деление на стандартные и не стандартные задачи а что это, и где прочесть стандарт - никто не говорит.
Y = λf.(λx.f (x x)) (λx.f (x x))

Губанов Сергей Юрьевич

  • Hero Member
  • *****
  • Сообщений: 590
    • Просмотр профиля
    • Домашняя страница
Кстати, а что такое нестандартная задача?
Хороший вопрос. Наверное, нестандартная задача - это такая которая требует самостоятельного придумывания нескольких слоёв абстракции. А вот когда для решения задачи все слои абстракции хорошо известны, остаётся только сидеть и долго колбасить по клавиатуре - вот это стандартная задача. Реальные задачи где-то посередине: что-то известно, что-то нет.

DddIzer

  • Гость

Кстати, а что такое нестандартная задача?

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

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля
Кстати, а что такое нестандартная задача?
Хороший вопрос. Наверное, нестандартная задача - это такая которая требует самостоятельного придумывания нескольких слоёв абстракции. А вот когда для решения задачи все слои абстракции хорошо известны, остаётся только сидеть и долго колбасить по клавиатуре - вот это стандартная задача. Реальные задачи где-то посередине: что-то известно, что-то нет.
Есть ряд задач, которые решаются без построения дополнительных слоев абстракции (с точки зрения программинга), это чисто алгоритмические задачи, или там DSP какое-то, или что-то еще из смежных областей. Ну и еще как пример - задачи спортивного программирования. Абстракции могут быть добавлены потом, просто для удобства, но соль не в абстракциях.
Y = λf.(λx.f (x x)) (λx.f (x x))

valexey_u

  • Hero Member
  • *****
  • Сообщений: 3013
    • Просмотр профиля

Кстати, а что такое нестандартная задача?

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

Первый пункт - относителен. То есть с точки зрения программиста на js/php, задача, скажем, восстановления поврежденных областей изображения (inpainting) является не стандартной (в либах, которыми пользуется такой программист, этого нет, а как делать и где искать он даже приблизительно не представляет). Но с точки зрения программиста занимающегося компьютерным зрением и использующий OpenCV задача сама по себе представляется тривиальной - алгоритм Telea и всё. Один вызов стандартной функции из opencv.

Второй пункт приводит к дополнительному вопросу: известных кому задач? Человечество уже столько всего придумало, и столько задач поставило и решило, что жизни не хватит на то, чтобы просто этот список осилить (и найти там свою задачу). Достаточно копнуть по самым верхам - по патентной базе, скажем, США. И если в этой куче не удается найти свою задачу, это еще не означает что её там нет. Ну, для примера, на запрос "inpaint image processing" google patent search выдает 12700 патентов. Счастливого поиска :-)

То есть выходит, что нестандатность задачи - штука субъективная. Если для тебя это новый класс задач, то почти любая задача будет нестандартной, а если же ты над этим работает уже долго, то задачи для тебя уже стандартны (пример: занимаешься компьютерным зрением, соответственно распознование лиц задача для тебя стандартная, а вот написать на php гостевуху, так как хочешь этого ты сам, задача уже сразу не стандартная).
Y = λf.(λx.f (x x)) (λx.f (x x))

DddIzer

  • Гость

То есть выходит, что нестандатность задачи - штука субъективная.
гыыы. дожить до 30 лет и не знать прописных истин.. нда...  ;D