Я для себя переформулировал его как "работает — не ломай" (улучшать можно, при условии, что ...), но это тоже несколько не то, отчасти из-за самоочевидности. И вот недавно в рассылке UAFUG пролетела такая цитата за авторством Michael Pigurnow:
Лень — враг прогресса (c) имхо причина всего этого в 2-х факторах: a. Лень в самом худшем ее проявлении. Когда в принципе "Работает — не трогай (улучшай)" забывается важная оговорочка: работает _правильно_. Из-за чего работающее уже через тухес воспринимается как само собой разумеющееся, что ведет к оплевыванию любых попыток переделки ЭТОГО по правилам и по уму. b. Благодушная беспечность: "Чрезвычайные ситуации бывают исключительно редко и уж конечно же _не со мной_"
Вот тут всё становится на свои места, особенно если вспомнить не менее известное "make it work, make it right, make it fast" (именно в такой последовательности, и каждое следующее не раньше имеющегося предыдущего). Остается только с виду незаметный, но очень важный вопрос — а что же такое правильно? Вроде всем понятное слово, но каждый под ним понимает что-то свое, обычно интуитивно понимаемое и расплывчатое. Более того, никакого абсолютного "правильно", общего для всех и всегда, нет и быть не может. Тогда что же это?
Я бы определил "правильно" как 3 компонента — цели, ценности и приоритеты. Они неразрывно связаны друг с другом.
- Правильно что-то делается или нет, зависит от цели, того, что требуется получить — что правильно в одной задаче, может быть неправильным в другой.
- При той же самой цели, делать что-то можно разными способами. Как выбирается способ? Между задачами соблюдаются какие-то более-менее постоянные ценности, принципы. Например, "деньги не пахнут" или "всё надо делать качественно". Ценности для человека — это то, что значимо, к чему он неравнодушен, на что ему не похуй. То, что можно описать словами "хорошо" и "плохо", в отличие от всех остальных вещей, к которым нет ничего, кроме равнодушия. Ну типа, "писать понятный читаемый код — это хорошо", "ломать мне посреди ночи работавший сервер, который я поеду чинить — плохо". (Замечу в скобках, что речь стоит вести не о декларируемых ценностях — если человеку плевать на утверждение "уступать старушкам место в автобусе — хорошо", реальной ценности для него это не представляет. Но эти темы уже совсем-совсем оффтопик.)
- Наконец, ценности как сами не равны между собой, так и могут вступать в конфликт с целями (точнее, обычно подзадачами, целями помельче, на которые бьется исходная). Или бывает, например, нехватка ресурсов или чего-то еще — так, что всё вместе удовлетворить нельзя. В этом случае приоритеты определяют, что из целей и ценностей сейчас важнее, а что, быть может, отбросить вовсе (скажем, в соответствующей ситуации "когда моим детям жрать нечего — плохо" перекроет собой "писать нечитаемый код — плохо"). Когда говорят "в той ситуации было правильно поступить именно так" (а обычно, мол, положено не так) — ноги растут именно отсюда.
Легко видеть, что, например, при наличии ценности "рабочий плохой код лучше перспективной идеи" получим следствие "если это не работает — это неправильно" (но при определенных обстоятельствах приоритеты могут изменить вывод на прямо противоположный, скажем, на отрезке в 10 лет).
Или что изо всех сил сидеть на FreeBSD 4.11 и бэкпортить патчи — неправильно, потому что трата времени админа на бэкпорты — не в целях и не в приоритетах.
И, возвращаясь к исходной фразе, становится понятно, когда же "трогать" — ведь и цели, и ценности, и приоритеты могут меняться со временем. Что было правильным год назад, может уже не быть таковым сегодня (ситуация меняется). Вот тогда влезать и менять работающее — не просто можно, а нужно.
P.S. Конечно, понятие правильности всё равно останется субъективным — не только от различия целей, но и от разницы в охватываемом в данной ситуации количестве ценностей и приоритетов у разных людей, учитываемых факторах (зависит от всё того же жизненного опыта). Тем не менее, осознавать свои цели, ценности и приоритеты (и общаться об этом с другими людьми, если есть такая необходимость) несколько проще, если понимать, откуда у своих представлений о "правильности" ноги растут.
January 11 2012, 01:37:28 UTC 4 months ago
Если у меня какая-нибудь подсистема работает неоптимально, она доставляет мне гемор. Постоянно. Я все время либо в напряге, либо жду напряга, что меня раздражает. Поэтому у меня бывают запойные периоды по принципу "Лучше день потерять, потом за пять минут долететь". Страстно желая лениться, я сижу по 16-18 часов в день, гоняя в виртуалках свои разработки, пока они не начинают работать, как ожидается. И вот тогда я их выкатываю в продакшн, и начинаю лениться.
Потом, конечно, надоедает, и от скуки я запускаю какой-нибудь новый сервис, который в силу неоптимальности опять-таки является мощным источником гемора. И цикл повторяется.
Вот сейчас я пилю мелкий баг, вылезший при апгрейде до второго довекота, сделаю, и на полгода забуду думать о почте.
January 11 2012, 08:08:52 UTC 4 months ago
присоединяюсь.
Ну и таки сошлюсь на классика
"The three principal virtues of a programmer are Laziness, Impatience, and Hubris" (c) Larry
January 11 2012, 02:46:26 UTC 4 months ago
О,
шушпМойше Ангрифмейстер! ВНЕЗАПНО :)Давненько его не видел.
January 11 2012, 04:27:05 UTC 4 months ago
Кажется, я знаю, в чей огород камень :-)
January 11 2012, 05:12:11 UTC 4 months ago
January 11 2012, 07:52:44 UTC 4 months ago
January 11 2012, 05:46:59 UTC 4 months ago
January 12 2012, 18:29:05 UTC 4 months ago
January 30 2012, 14:41:06 UTC 3 months ago Edited: January 30 2012, 14:42:03 UTC
имеем комплекс, где не обновляются ни прошивки, ни ОС. годами.
ВНЕЗАПНО - что-то ломается. саппорт мягко намекает, что проблема устраняется в патче двухлетней давности. одминчег начинает апдейтиться... и тут - EPIC фейл, ибо прыжок через несколько уровней TL/SP - тянет за собой сломанную совместимость с древним же микрокодом СХД, SAN коммутаторов, HBA, серверов...
а казалось бы - при инсталляции комплекса, заложи ты maintenance окно, да подымай раз в полквартала все версии скопом, почитав чейнджлоги...
February 1 2012, 11:59:07 UTC 3 months ago
February 15 2012, 14:53:46 UTC 3 months ago
Принцип мудака, а не админа. Таких надо гнать ссаными тряпками вон из профессии.
Принцип нормального админа, да и вообще любого хорошего человека, не обязательно айтишника - "всегда ищи наилучшее решение". Если для получения наилучшего решения надо что-то кардинально поменять, значит, надо поменять.