Vadim Goncharov ([info]nuclight) wrote,

О корректности "работает — не трогай" и понятии "так правильно"

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

Я для себя переформулировал его как "работает — не ломай" (улучшать можно, при условии, что ...), но это тоже несколько не то, отчасти из-за самоочевидности. И вот недавно в рассылке UAFUG пролетела такая цитата за авторством Michael Pigurnow:
Лень — враг прогресса (c)
имхо причина всего этого в 2-х факторах:
a. Лень в самом худшем ее проявлении. Когда в принципе "Работает — не
   трогай (улучшай)" забывается важная оговорочка: работает _правильно_.
   Из-за чего работающее уже через тухес воспринимается как само собой
   разумеющееся, что ведет к оплевыванию любых попыток переделки ЭТОГО по
   правилам и по уму.
b. Благодушная беспечность: "Чрезвычайные ситуации бывают исключительно редко
   и уж конечно же _не со мной_"

Вот тут всё становится на свои места, особенно если вспомнить не менее известное "make it work, make it right, make it fast" (именно в такой последовательности, и каждое следующее не раньше имеющегося предыдущего). Остается только с виду незаметный, но очень важный вопрос — а что же такое правильно? Вроде всем понятное слово, но каждый под ним понимает что-то свое, обычно интуитивно понимаемое и расплывчатое. Более того, никакого абсолютного "правильно", общего для всех и всегда, нет и быть не может. Тогда что же это?

Я бы определил "правильно" как 3 компонента — цели, ценности и приоритеты. Они неразрывно связаны друг с другом.
  • Правильно что-то делается или нет, зависит от цели, того, что требуется получить — что правильно в одной задаче, может быть неправильным в другой.

  • При той же самой цели, делать что-то можно разными способами. Как выбирается способ? Между задачами соблюдаются какие-то более-менее постоянные ценности, принципы. Например, "деньги не пахнут" или "всё надо делать качественно". Ценности для человека — это то, что значимо, к чему он неравнодушен, на что ему не похуй. То, что можно описать словами "хорошо" и "плохо", в отличие от всех остальных вещей, к которым нет ничего, кроме равнодушия. Ну типа, "писать понятный читаемый код — это хорошо", "ломать мне посреди ночи работавший сервер, который я поеду чинить — плохо". (Замечу в скобках, что речь стоит вести не о декларируемых ценностях — если человеку плевать на утверждение "уступать старушкам место в автобусе — хорошо", реальной ценности для него это не представляет. Но эти темы уже совсем-совсем оффтопик.)

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

Легко видеть, что, например, при наличии ценности "рабочий плохой код лучше перспективной идеи" получим следствие "если это не работает — это неправильно" (но при определенных обстоятельствах приоритеты могут изменить вывод на прямо противоположный, скажем, на отрезке в 10 лет).

Или что изо всех сил сидеть на FreeBSD 4.11 и бэкпортить патчи — неправильно, потому что трата времени админа на бэкпорты — не в целях и не в приоритетах.

И, возвращаясь к исходной фразе, становится понятно, когда же "трогать" — ведь и цели, и ценности, и приоритеты могут меняться со временем. Что было правильным год назад, может уже не быть таковым сегодня (ситуация меняется). Вот тогда влезать и менять работающее — не просто можно, а нужно.

P.S. Конечно, понятие правильности всё равно останется субъективным — не только от различия целей, но и от разницы в охватываемом в данной ситуации количестве ценностей и приоритетов у разных людей, учитываемых факторах (зависит от всё того же жизненного опыта). Тем не менее, осознавать свои цели, ценности и приоритеты (и общаться об этом с другими людьми, если есть такая необходимость) несколько проще, если понимать, откуда у своих представлений о "правильности" ноги растут.
Tags: админское, философия

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    Your IP address will be recorded 

  • 11 comments

[info]kondybas

January 11 2012, 01:37:28 UTC 4 months ago

Не согласен с тем, что лень - враг прогресса. У меня большая часть сделанного - сделана от чистой незамутненной лени.

Если у меня какая-нибудь подсистема работает неоптимально, она доставляет мне гемор. Постоянно. Я все время либо в напряге, либо жду напряга, что меня раздражает. Поэтому у меня бывают запойные периоды по принципу "Лучше день потерять, потом за пять минут долететь". Страстно желая лениться, я сижу по 16-18 часов в день, гоняя в виртуалках свои разработки, пока они не начинают работать, как ожидается. И вот тогда я их выкатываю в продакшн, и начинаю лениться.

Потом, конечно, надоедает, и от скуки я запускаю какой-нибудь новый сервис, который в силу неоптимальности опять-таки является мощным источником гемора. И цикл повторяется.

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

[info]filonov

January 11 2012, 08:08:52 UTC 4 months ago

Не согласен с тем, что лень - враг прогресса. У меня большая часть сделанного - сделана от чистой незамутненной лени.
присоединяюсь.
Ну и таки сошлюсь на классика
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris" (c) Larry

[info]Anatoly Borodin

January 11 2012, 02:46:26 UTC 4 months ago

> Michael Pigurnow

О, шушп Мойше Ангрифмейстер! ВНЕЗАПНО :)

Давненько его не видел.

[info]dkroupenier

January 11 2012, 04:27:05 UTC 4 months ago

> Или что изо всех сил сидеть на FreeBSD 4.11 и бэкпортить патчи

Кажется, я знаю, в чей огород камень :-)

[info]cae32

January 11 2012, 05:12:11 UTC 4 months ago

Опечатка "соответствующего жопыта" великолепна, так и оставьте ;-)

[info]dmarck

January 11 2012, 07:52:44 UTC 4 months ago

Это не опечатка.

[info]victor_sudakov

January 11 2012, 05:46:59 UTC 4 months ago

В целом согласен, что формула "работает — не трогай" не абсолют. А то до сих пор сидели бы с каменными топорами.

[info]liljonkvast

January 12 2012, 18:29:05 UTC 4 months ago

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

[info]Andrew Doe

January 30 2012, 14:41:06 UTC 3 months ago Edited:  January 30 2012, 14:42:03 UTC

типичная ситуация для адептов этой идиотской концепции "работает не трожь":

имеем комплекс, где не обновляются ни прошивки, ни ОС. годами.
ВНЕЗАПНО - что-то ломается. саппорт мягко намекает, что проблема устраняется в патче двухлетней давности. одминчег начинает апдейтиться... и тут - EPIC фейл, ибо прыжок через несколько уровней TL/SP - тянет за собой сломанную совместимость с древним же микрокодом СХД, SAN коммутаторов, HBA, серверов...

а казалось бы - при инсталляции комплекса, заложи ты maintenance окно, да подымай раз в полквартала все версии скопом, почитав чейнджлоги...

[info]liljonkvast

February 1 2012, 11:59:07 UTC 3 months ago

Охохо, как это знакомо... Особенно, если всё это обнаруживается при отсутствии саппорт-контракта с вендором.

[info]slonik_v_domene

February 15 2012, 14:53:46 UTC 3 months ago

>Давно известна фраза "работает — не трогай", типа принцип хорошего админа, всё такое

Принцип мудака, а не админа. Таких надо гнать ссаными тряпками вон из профессии.

Принцип нормального админа, да и вообще любого хорошего человека, не обязательно айтишника - "всегда ищи наилучшее решение". Если для получения наилучшего решения надо что-то кардинально поменять, значит, надо поменять.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…