воскресенье, 22 декабря 2013 г.

Программисты - убийцы котят

Как легко испортить мнение о себе, сделав добро одним необдуманным действием? Сегодня у меня получится очередная непонятная никому статья из жизни PHP-программиста.

Начну с признания: я правил ядро WordPress там, где можно обойтись фильтрами API. Ниже я объясню, как так получилось. Хочу заметить сразу, что я ненавижу делать подобные вещи и очень сильно и долго готов ругать каждого, кто таким занимается. Один кандидат, увидев в core.php тестового оплаченного задания по Elgg-проекту коммент /* Google says do this, but why? */ дописал строчкой ниже /* lol ) */ и закоммитил. Вместе с еще десятком правок удаления пустых строк и добавлением незначащих пробелов в файлах ядра. Я считаю это недопустимым неумением пользоваться прежде всего системами контроля версий и отсутствием желания разбираться с архитектурой любого проекта (в данном случае - целого движка).

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

Вот и на одном реальном проекте кто-то до меня изменил в WordPress функцию get_avatar() прямо в ядре. Все apply_filters там выпилили и поставили жесткий return результата (вместо return apply_filters(...), что позволило бы обработать результат из своего плагина). И пришло задание немного исправить новые аватары, я обошелся одной строчкой в этой самой уже измененной функции. В силу столь малого размера коммита заказчик заметил это и выразил свое негодование.

[caption id="attachment_2386" align="aligncenter" width="461" caption="Каждый раз, когда ты ломаешь ядро, Бог убивает котёнка"]Каждый раз, когда ты ломаешь ядро, Бог убивает котёнка[/caption]

После этого я git'ом откатил все предыдущие правки файла в корне, нужный функционал переделал на фильтры API. Затем проделал то же самое со многими остальными измененными не мной файлами ядра. Что заказчик увидел дальше, не сложно догадаться: своим коммитом я нафигачил правок файлов ядра WordPress ровно столько, сколько все мои предшественники, вместе взятые (откат изменений выглядит так же, как и сами изменения). Кого он будет наблюдать всю оставшуюся жизнь проекта среди последних людей, правящих ядро? Кто будет считаться худшим программистом, не беспокоящимся о жизни котят? Будет ли он восхищаться результатами моей работы, как прежде? Теперь фраза "Please, think of the kittens!" у меня больше не вызывает улыбку, потому что я слышу ее от него чуть ли не по каждому новому заданию.

Пожалуйста, всегда думай о котятах. В случае с WordPress старайся изменять только то, что лежит в папке wp-content, чаще всего этого достаточно.

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