Я прочитал эту книгу под названием Understanding Comics Скотта МакКлауда. На самом деле это интересное чтение само по себе — у древних египтян и майя были комиксы, которые во многом следуют современной форме. Во всяком случае, есть часть, где он говорит о развитии артиста и о том, как это связано с конечным продуктом. Это сразу напомнило мне программирование… и, возможно, все остальное, что требует навыков. Плохие программы страдают теми же недостатками, что и плохие комиксы.

Он описывает все художественные работы как имеющие 6 слоев:

  • Идея/Цель
  • Форма
  • идиома
  • Структура
  • Ремесло
  • Поверхность

Затем он проходит через людей, которые перестают прогрессировать на определенном уровне.

6 — Поверхность

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

В мире программирования это программисты вырезания и вставки.

5 — Ремесло

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

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

4 — Структура

Эти люди могут понять всю картину. Они могут создать историю для своего комикса и собрать воедино все время, ход и развитие.

Я думаю, что именно здесь находится большинство хороших программистов и «архитекторов». Они могут проектировать сложные системы. Они знают, что такое паттерны, библиотеки и инструменты, и умеют правильно их комбинировать. Я думаю, что все программисты сопровождения должны быть в этой категории, чтобы хорошо функционировать. Я думаю, что эти люди действительно могут отлаживать без отладчика — они могут посмотреть на поведение и сделать вывод о скрытой проблеме.

3 — Идиома

Эти люди ищут идентичность. Они пытаются создать новый стиль, который уникально представляет их.

Я думаю, что многие лидеры OSS здесь. Эти люди создают новые стили; Я думаю, что новые шаблоны объектно-ориентированного программирования попадают в эту категорию. Новые способы ведения дел, такие как устройство Даффа. Они смотрят на проблемы и создают методы для их решения.

По словам МакКлауда, когда люди из этой категории спрашивают: «Зачем я это делаю?» они попадают в категорию 1 и 2.

2 — Форма

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

Я думаю, что многие разработчики PL и DB попадают сюда; они хотели увидеть, какие лямбды/отсутствие первичных ключей/монады будут иметь при написании программ.

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

1 — Идея/Цель

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

По словам МакКлауда, у мастеровитых людей есть склонность пренебрегать поверхностью. Они тратят меньше времени на полировку, потому что тратят всю свою энергию на сердцевину. Я думаю, мы часто видим это в программировании: Unix и LISP являются двумя яркими примерами. В обоих случаях люди экспериментировали с идиомами и формами, и поверхность ужасна.

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