Производительное кодирование
Но что просто выводит меня из себя, так это то, что ещё на первой моей работе я понял — производительное кодирование отнимает у меня, как разработчика, в среднем по два-три часа в день.
Joel On Software
А я думал, что я один такой.
Я не программист
Дальше я пишу о себе всякие хвалебные вещи, читать не обязательно. Как написано в качестве эпиграфа здесь. detail.phpclub.net/
Я на самом деле не программист. Я, конечно, умею программировать, но... не люблю это делать. Я просто люблю решать проблемы (ну и создавать заодно). Я скорее разработчик или дизайнер (дизайнер — это не «оформитель», а, опять таки, «разработчик»). Я умею писать такие ТЗ, что самому читать приятно. Дело в том, что я умею программировать, поэтому мои ТЗ основаны не только на «а вот хочу того и того», а еще и на знании «почему хоть то-то и то-то правильно, а то-то и то-то — нет, и как это все в конце концов реализовать».
Лирическое отступление:
На прошлом месте работы начальник как-то сказал что-то вроде (за точность не ручаюсь, но по духу примерно так) «Вот ты написал два ТЗ, а кому оно нужно? Наш программист сам знает, что нужно». Потом, увидив Spesta, он сказал (дословно): «Блин, классная статистика. Гораздо лучше Киселевской — ты ему ее показывал?». (Диме Кисилеву привет!). При этом я, с присущей мне скромностью, не считаю, что оно лучше запрограммировано. Оно лучше придумано. Именно для этого и нужно ТЗ — не смотря на то, что программист знает, «что нужно», главное — это «как нужно», потому что конечному пользователю все равно общаться с уровнем «как нужно», а «что нужно» его не интересует.
То есть пользователю совершенно не важно, что «нужно собирать такую-то статистику». Ему важно, как потом работать с этой статистикой. Ну, это мы уже залезли, опять же, в интерфейс...
Я тут пару дней думал на тему «Идеальная CMS». Здесь, опять же, проходит грань между программистом и разработчиком. Я придумал пару архитектурных решений и свежих идей, которые «программист» не придумал бы — только потому, что программисту не доводилось так плотно общаться с контентом, как мне.
Основная проблема в том, что я знаю, как ее сделать, но делать не хочу: очень уж лениво так много программировать. Есть, конечно, хороший принцип «If you want something to be done — do it yourself», но...
Забавная история из жизни разработчиков ядра Linux. Человечек, который писал код для моргания светодиодами в случае kernel panic, оставил в коде коммент в духе /* а вот еще кому нечего делать, тот может реализовать моргание азбукой морзе */. Естественно, нашелся человечек, который это реализовал, другой человечек, который портанул под 2.5, куча человечков, которые это сурьезно обсуждают... а первоначальный автор теперь пытается объяснить, что это была ШУТКА и, ради бога, не надо это в ядро мержить.
В ходе дискусии звучали предложения сделать интерфейс, позволяющий писать драйверы для пищания азбукой Морзе на PC-спикере и саунд-бластере и декодировать эту азбуку Морзе на соседней машине с микрофоном.
— One of the nicest things about unix is the two letter commands. I actually hate programming,
but I love solving problems.
Rasmus LerdorfМорзе
One-letter aliases
— I read somewhere that having lots of two letter commands makes things too cryptic.
— Yeah, that’s why I have one-letter aliases.