Я ненавижу почти всё ПО
Прим. переводчика:
Недавно создатель NodeJS Райн Дал открывал конференцию HolyJS в Питере. И я вспомнил, что у меня есть неопубликованный перевод с его блога и решил его опубликовать. Местами перевод довольно откровенный. Надеюсь, вам будет интересно. Дата выхода статьи — Октябрь 2011. Дата выхода NodeJS — 27 Мая 2009.
Оно не нужно и осложнено почти на каждом слое. Лучшее, что я могу, это поздравить кого-то это за быстрое и простое решение проблемы, учитывая то говно, что они поставляют. Единственное ПО, которое я люблю это то, которое я могу легко понять, и оно решает мои проблемы. Размер сложности, который я согласен терпеть, пропорционален размеру проблемы, которая должна быть решена.
За последний год, я думаю, я наконец-то пришел к пониманию идеалов Unix: файловые дескрипторы и процессы оркестрируются с помощью C. Это прекрасная идея. Но это не то с чем мы имеем дело. Сложность не подразумевалась. Наоборот мне приходится иметь дело с DBus, /usr/lib, Boost, ioctls, SMF, сигналами, volatile переменнымии, прототипным наследованием, _C99_FEATURES_, dpkg и autoconf.
Те из нас кто пишет софт поверх этих систем добавляет сложность. Теперь ты должен знать не только $LD_LIBRARY_PATH, чтобы заставить систему работать, но ещё и $NODE_PATH — знай, это моих рук дело, это мое добавление сложности! Пользователи — те кто хотят видеть веб-страницу — им вообще пофиг. Им всё равно как мы организуем /usr, всё равно как работают zombie-процессы, всё равно как работает дополнение команд в bash, всё равно как zlib слинкован с Node статически или динамически. Наступит момент, когда накопленная сложность наших существующих систем будет больше, чем сложность создания новой. Когда этот момент настанет всё это дерьмо пойдет в мусорку. Мы сможем смыть boost и glib и autoconf в туалет и никогда не вспоминать о них.
Те из вас, кто до сих пор получает удовольствие от изучения деталей, скажем, языка программирования — например, те кто с удовольствием могут наизусь сказать является ли NaN равным null или нет — то вы даже не понимаете насколько это херово. Если вы думаете, что было бы мило выровнять все знаки равно в вашем коде, если вы тратите время настраивая ваш оконный менеджер или редактор, если вставляете проверку unicode меток в тест ранере, если вы добавляете ненужные иерархии в ваших папках с кодом, если вы делаете хоть что-то кроме того, что решаете проблему — то вы не понимаете насколько всё херово. Никого не волнует объектная модель glib.
Одна вещь, которая имеет значение в разработке ПО это что чувствует пользователь (experience of the user).