Эта работает не трогай ее

«Работает — не трогай». Стоит ли нарушать правила?

Введение

Очень не хватало возможности ввести пользователей в контекст перед голосованием. Спасибо! И так

Преамбула

Работая со старым унаследованным кодом, порой встречаются достаточно проблемные участки, которые есть желание переписать\исправить\переделать, но нет такой возможности. Этот код может быть с ошибками, которые не исправляются годами и с ними приходится мириться. Что делать с таким кодом?

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

Такой код стараются фундаментально не менять, исправляются только локальные проблемы и ошибки. Правило «работает — не трогай» во всей своей красе. С другой стороны, если переписать или исправить этот код, то жить станет всем легче, но появляются проблемы:

  • Никто не понимает, как изменения отразятся на всей системе в целом;
  • Вероятность внести новые ошибки очень велика;
  • Появляется период стабилизации кода (также как и с новым кодом).

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

Читайте также:  Не работает ручка двери калина снаружи

Источник

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

Я для себя переформулировал его как «работает — не ломай» (улучшать можно, при условии, что . ), но это тоже несколько не то, отчасти из-за самоочевидности. И вот недавно в рассылке UAFUG пролетела такая цитата за авторством Michael Pigurnow:

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

Я бы определил «правильно» как 3 компонента — цели, ценности и приоритеты. Они неразрывно связаны друг с другом.

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

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

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

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

Источник

Брось, а то уронишь! Или не трогай, пока работает.

Всем привет! В общем, я тут в очередной раз подтвердила известное выражение — не трогай, пока всё работает! А получилось вот как. Собралась я комп продавать. Ну как собралась, разбирала хлам, поняла, что ноут переставляем с места на место уже пару лет. Дай, думаю, гляну — стоит он чего вообще? Ну за 1-1.5к продать можно. Бесплатно я ничего не выставляю, причина — перекупы и яжемамки у который по 10 детей и ооочень нужен бесплатный ноут, чтоб мультики смотреть, а потому «привезите его нам в алтуфьево, сегодня же к 6 вечера». Ноут рабочий, полностью, интернет работал, даже игры какие-то шли. Пока я не решила, что надо бы винду снести. XP уже давно померла. Думаю, хотя бы висту поставить, она поддерживается, да и хард почистить. Почему в жизни нет Ctrl+Z.

В общем поставила висту из под винды, и тут понеслось. Дрова есть, но их не скачать, в интернете поиск не работает, даже опера не устанавливается. Ну всё, приплыли. Зачем трогала? Полезла в биос, а он на пароле. Вспоминала — нифига. Обзвонила всех родственников, которые могут знать пароль от биоса, ну кто-то же его туда поставил. Результата — 0. Поискала в интернете, несколько часов результата не дали (не там искала как оказалось). Решила попробовать физически сбросить пароль, релогнув биос. Оказалось все не так просто и я вспомнила за что ненавижу дешёвые ноутбуки, да и ноутбуки в целом (кроме Dell Precision M6800, вот там два болта открутил и всё как на ладони).

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

Сейчас снова половину утра убила на возню с этим динозавром. Как я его настраивала до этого — помню, но вроде тогда ещё была поддержка XP. В принципе, драйвера нашла, загрузила, всё ок, но. Интернет =) В принципе, жить можно, но корректно опера, мозила и хром не хотели. Полезла искать альтернативу, нашла K-Meleon. Если не будет и он нормально работать, то сдам на запчасти xD.

Мораль — не лезь, олень, куда не просят! Ну и инициатива наказуема.

А у вас были ситуации, когда хотели как лучше, а в итоге всё пошло не туда?

Источник

Изучаем программирование. День 44. О принципе «Работает — не трожь!» и ещё об одном подобном принципе.

Вчера у нас с вами была рубрика «Занимательный факт», где я рассказывал о бесплатных курсах по Python для начинающих от Google и Microsoft.

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

«Работает — не трожь!»

Так как трудовой стаж у меня большой и поработал я не в одной фирме, я очень много повидал примеров невыполнения этого принципа. Почему это так работает?

1. Бизнес

Самая, наверное, частая причина этого явления — «интересы бизнеса». Почему я написал это в кавычках? Ну потому что в 99% случаев к бизнесу такие «улучшения» никакого отношения не имеют. Пример: работает компания, хорошо работает, приносит прибыль, но неизменно появляется такой человек, которому нужно в налаженном процессе обязательно что-то поменять, чаще всего это какой-то новый человек, либо старый, занимающий высокую должность. И вот он приходит и говорит: делайте теперь вот так, прежний метод не подходит, если вы ему справедливо приводите аргументы и говорите, что предложенный способ не заработает и не будет лучше старого, «главный» человек в отделе/компании говорит: «ты ничего не понимаешь в бизнесе».

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

2. Незнание продукта.

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

3. Новые фукнции.

Это уже ближе к нашему с вами вопросу. Есть у вас на работе, например, внутренняя система отчётности, она работает, не сказать, чтобы идеально, но работает, выдаёт нужные результаты, а сделана при этом абсолютно бесплатно. И тут в компании рождается улучшатель, который говорит, что система эта нам ну никак не подходит и нужно ее улучшить. «Улучшение» возможно в нескольких вариантах: нанимается новый сотрудник, дело которого улучшать, он покупает за огромные деньги систему отчётности, подключает её к внутренней системе, настраивает месяц и в итоге она выдаёт ровно те же результаты, за ровно то же время. Ничего нового не прибавилось, компания потеряла время и деньги. Но после все делают вид, что стало-то всё намного лучше на самом деле. Второй вариант: программистам даётся задание такую систему разработать, выделяются люди, выделяется бюджет и создаётся опять же ровно та же система, но она красиво оформлена и названия немного изменены. При этом компания так же теряет деньги, как и в первом случае. Бывает и такое, что после всех этих «улучшений» всё возвращается к старой системе, в её первозданном виде, потому что работало, но это лучший исход и он крайне редок.

И мы плавно приходим к очень частой ошибке it-компаний, которая вытекает из вышеописанного — «Чинить не там, где сломано».

Очень показателен недавний пример в одной фирме. Имён я называть не буду, чтобы ненароком кого-нибудь не обидеть. Было приложение, работало не без проблем, но работало. Одно время в нём старались что-то исправлять, но потом как-то всё затихло и многие старые раздражающие ошибки так и остались на месте. Но тут приходит новость, приложение решило «улучшиться» — оно сменило имя. Как только я услышал эту новость я сразу сказал жене:»Ну вот и конец пришёл приложению N». Не далее, как сегодя, захожу в Play Market и совсем неудивлённый читаю огромную кучу возмущенных отзывов, которые появились ровно на следующий день после «улучшения». Мало того, что ничего не «улучшилось», так ещё и сломалось там, где до этого работало.

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

К чему я всё это?

Вы вступаете в мир, где вы будете создавать продукты для конечного пользователя, чаще всего это будут бизнес-продукты. Бизнес-продукты приносят прибыль только тогда(если это конечно не какие-нибудь мошеннические продукты), когда они направлены на удобство пользователя, а не когда какой-нибудь самодур, простите, захотел поменять что-то и по его мнению «улучшить». Все вот эти «улучшатели» остались от времён, когда выбора у человека(конечного пользователя продукта) не было и он был вынужден пользоваться одним продуктом. Сейчас выбор у человека есть, но «улучшатели» об этом, видимо, не догадываются. Так вот, прежде, чем принимать решение о будущих изменениях в продукте, проведите опрос, среди сотрудников, среди клиентов, а удобно ли было бы им введение такого улучшения? Принесёт ли оно пользу? В эту ловушку попадаются не только маленькие кампании, но и мастодонты из мира IT, вспомните, например, Windows Vista и Windows 8.

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

То же можно сказать и про ваш код, если он хорошо работает и отлажен, не нужно его чинить. Чините там, где у вас сломано, а не там, где хорошо работает.

Как всегда, приятного вам обучения!

Если понравилась статья, поставьте, пожалуйста, лайк! А если вы ещё не с нами, то обязательно подписывайтесь, тут полезно и интересно.

Источник

Если работает – ничего не трогай! Как мы неосознанно помогаем себе сами

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

Среди моих знакомых тьма программистов. Наверное, это оттого, что в мире их вообще сейчас тьма-тьмущая. Общаясь с ними, я немножко вникла в их особый юмор, фольклор и магию. Да-да, именно магию. Потому что любой программист расскажет вам массу историй о том, как ОНО работало – непонятно КАК и непонятно ПОЧЕМУ. А любой желающий разобраться в причинах бывал сурово наказан отказавшим раз и навсегда кодом (ранее прекрасно работавшим).

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

В студенческие годы я дружила с необыкновенной девушкой. Она была умна и в то же время наивна. Много шутила, любила играть: в ассоциации, домино, лото. Такой ребенок в теле сложившейся женщины. Косички и гольфы, рюкзак в виде мишки. Она предпочитала детское, не женское. Магазину косметики – «Детский мир».

Кто-то из «заботливых» общих знакомых отозвался о ней в очень неприятном ключе: мол, в нашей общей компании не было ни одного мужчины, не исключая женатых, кто не побывал в ее постели. Я не ханжа. Мы живем в свободном мире, каждый поступает со своей жизнью так, как хочет. Но меня эти слухи удивили: как сочетаются плюшевые медведи и гольфы с таким сексуальным аппетитом?

Что-то было нарушено в ее «протоколе любовного этикета»

Я аккуратно обсудила с девушкой эту тему. Она оказалась открытой к таким разговорам. Сказала, что больше, конечно, врут, «приключений» было намного меньше – и тем не менее. С тех пор я стала ее поверенной в любовных похождениях и каждый раз слушала истории о том, как развиваются ее отношения. Что-то было нарушено в ее «протоколе любовного этикета».

В те времена я легко раздавала телефоны интересным молодым людям и потом отслеживала степень их вовлеченности: пригласит ли на свидание? Позвонит? Напишет СМС? Или просто хочет дружить? У нее все было наоборот: сначала секс, а потом интрига: возьмет ли телефон? Спросит ли, как зовут. Удивительное создание. Причем за нее почему-то совсем не было страшно.

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

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

Ей приходилось быть самостоятельной, взрослой. Ключ на шее, «поешь что-нибудь сама». Детства как такового не случилось – именно поэтому уже во взрослом возрасте ей так нравились все эти гольфики и косички.

Активное сексуальное поведение, готовность броситься в объятия к первому встречному – продолжение грустной истории детства и яркий пример того, как бессознательное человека стремится «починить» травму, не сообщая никаких сигналов «наружу». Недостаток любви в детском возрасте восполнялся активной сексуальностью в юности.

Помню, как девочки перешептывались и отпускали в ее адрес обидные слова. А я точно знаю: она всего лишь отчаянно – отчаяннее, чем мы все – нуждалась в любви. Сексуальная революция, темперамент экстраверта и привлекательная внешность делали свое дело. И ведь никто в ее окружении, ни одна живая душа не задала ей вопрос о том, зачем она так ведет себя. Зачем ей это нужно?

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

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

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

Психолог работает с этими паттернами (схемами) только в том случае, если есть запрос. Но это происходит нечасто. Чаще такие люди попадают в терапию, когда плотину «прорвало», когда адаптивный механизм дал сбой. И работать в ситуации такого кризиса, безусловно, сложнее.

Но если заняться профилактикой или «поймать» проблему на ранней стадии, появляется шанс высвободить массу энергии, которую лучше потратить на радость и наслаждение. Не правда ли?

Источник

Оцените статью