Это вольный перевод статьи Марка Пилгрима "Why specs matter" от 2004 года. Статья определяет базовую терминологию, применяемую в процессах стандартизации. В рунете она, к сожалению, почти неизвестна, поэтому я решил восполнить этот пробел.


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

Засранцы

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

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

Болваны

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

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

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

Ангелы

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

Почему спецификации важны

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

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

Комментарии: 4

  1. arikon

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

  2. Ivan Sagalaev

    Arikon, этот пост не про команду, которая пишет спеки для себя. Тут ты контекст упускаешь. Пост написан во времена войн стандартов, когда появилась WHATWG в альтернативу W3C, и техноблогеры много рассуждали о том, как надо писать спецификации. Сейчас это кажется странным, но тогда идея о том, что спецификация должна писаться для имплементаторов не была ни очевидной, ни популярной. Спеки писали дядьки-академики, и считалось, что простота, да и сама возможность реализации — не их забота, и вообще не важный вопрос. Этот пост был один из многих, который изменил сознание людей в сторону большего соответствия реальности.

    Поэтому ответ на вопрос вполне себе есть в последних двух абзацах. Там написано, что спецификация должна подразумевать очевидную реализацию, и именно это её главное качество, а не, например, научная полнота…

  3. StackOverflow

    Нее помоему Засранцев - лучше называть Занозами. Более русскоязычно, осмысленно.

  4. simbnimb

    Вот же, а ...

    Кажется, я болван. Иван, как только меня посещает мыслительная непроходимость, захожу к тебе сюда, оптимизируюсь. А сегодня, ха, повеселился от души. Сам над собой, мое эго долго не могло определить, ну почему я не Ангел? :-)

Добавить комментарий