vit_r (vit_r) wrote,
vit_r
vit_r

Про многоцветный мир

По поводу картинки, а также по ссылкам с цитатами большинство зацепилось за слово «функциональный». Подключилась тяжёлая артиллерия в лице metaclass, juan_gandhi, thesz. Другие тоже не отставали. Не хочется тут серьёзные вещи писать, но раз уж до такого дошло, пусть будет.

То же самое было по поводу Одессы. В происшествии кроме боевиков с обеих сторон участвовала масса другого народа, часто совсем случайного, но людям страшно хочется везде и всюду определить за красных или за белых, за буржуев или за коммунистов, чёрное или белое...

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

Ну так вот, мир многоцветен. Чего большинство не только видеть, но и понимать не хочет.

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

Синтез также сложнее объяснить. Проблема в том, что я показываю кусочки общей картины, а люди, вместо того, чтобы попытаться собрать мозаику, начинают под лупой изучать каждый камушек.

Первым делом не надо думать, что я глупее. Не то, чтобы я был против, просто на реальных тестах это обычно не подтверждается.

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

В принципе, понявших было тоже не так уж мало. Наиболее близко выразил мысль vaddimka.

В этом блоге дофига психологии. И всё это аниме с мангой для будущего ИТ не менее важно, чем рассказы о скрытых целях менеджеров.

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

Проблема в том, что у разных людей мозг мыслит по-разному, по-разному развиты различные виды памяти, из-за разного образования и опыта по-разному воспринимаются различные подходы. Computer science до сих пор не наука. Измерения, которые проводились в семидесятых-восьмидесятых позабыты. Сейчас делают статистику не по цифрам, а по опросам. Правильность и вектора развития определяют по ощущениям.

Это, конечно, позволяет чесать чувство собственной важности, но человеческое самовосприятие построено на самообмане. Внутреннее время эластично, мыслительный процесс практически никто не воспринимает, информация фильтруется, минимизируя потребность изменения устоявшейся картины мира.

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

Для сложной системы можно доказать правильность любого подхода. Особенно, если основываться на ощущениях, а не на измерениях и списывать все неудобные факты на тупых дебилов, не понявших и не постигших.

Если говорить о функциональном программировании, единственный аргумент, учитывающий человеческий фактор, привёл lionet: функциональный код можно записать более компактно, что уменьшает количество нажатий на клавиши, от чего меньше болят руки.

Все остальные доказательства - это результаты локальных субъективных наблюдений, сделанные без прямых измерений и без контрольной группы. (Да, это относится и к Правильным Математическим Основам).

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

То, что люди молятся достоинствам и не хотят замечать недостатки, в частности объясняет, почему Хаскель до сих пор сидит в загончике для высоколобых извращенцев, а многие хорошие вещи просто загнулись.

Стоит также упомянуть вульгарный молоткизм. Нам от предыдущих поколений достался ящик с замечательными инструментами. Современные же программисты настолько дети, что получив в руки молоток, не только превращают весь мир в гвозди, но и начинают на всех углах проповедовать, что отвёртка хуже молотка. А на вопрос «Почему?» загадочно отвечают: «Потому что эм ве квадрат пополам.».

Ещё один важный момент, который опять же не заметили на картинке, это то, что на любую технологию должна быть наложена культура. И только тогда она будет работать. Да, именно этот самый, много раз упоминавшийся тут канделябр.

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

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

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

Я видел на одном и том же языке совершенно ужасный код, создатель которого сообщил «Это всё фигня. У нас тут все люди с высшим образованием», и абсолютно понятный ясный код с великолепными комментариями и прекрасным форматированием, созданный человеком, работающим в аналогичных условиях. Просто он знал, на что стоит тратить время и силы, а на что нет.

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

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

В принципе, та картинка - это только малая часть попыток объяснения. Визуализация - занятие очень неблагодарное в смысле затрат времени и серого вещества. К тому же, мало понять, как выразить мысль графически, нужно это нарисовать хотя бы на том уровне, чтобы другие тоже увидели. Потому всё это называется «наброски».

Ниже почти не обработанная левая половина девятнадцатой страницы блокнота (на которой справа картинкой с муравейником). Тут практически ничего не получилось. Точнее, это всё надо передумывать и переделывать. Минимум один рабочий день. Когда нибудь на пенсии.

ConstructiveParanoia_One_Space_vs_Grid_draft_2014-05-06

Да, не надо воспринимать то, что я пишу в этом блоге, слишком всерьёз. Это плохо влияет на пищеварение.
Tags: comics, design, fp, it, management, qa, quality, ru, sketch, usability, visualisation, writing
Subscribe
  • 4 comments
  • 4 comments

Comments for this post were locked by the author