История №936401
Меня недавно спросили, почему программисты ненавидят работать с чужим кодом. Долго думал, как донести до обычного пользователя всю суть пиздеца.
Решил привести небольшую аналогию:
Вот представь, что тебе доверили достроить за другим прорабом лабораторию на острове. Ты приходишь на объект, а там кроме недостроенного здания: огромный вентилятор (размером со здание), большой воздушный шар и комната набитая швабрами. Почесав голову, ты разбираешь этот хлам и доделываешь лабораторию. Сдаешь объект ученым, но через 5 минут они выбегают с криком: «УТЕЧКА ЯДОВИТОГО ГАЗА. «.
— Как так–то, блять! Должно же работать! — в отчаянии кричишь ты и звонишь прошлому прорабу:
— Вася, у нас ядовитый газ потёк! В чем проблема?
— Не знаю, должно было все работать. Что–то в проекте менял?
— Немного, швабры вынес.
— Швабры потолок держали!
— Что. Что, блять, извините.
— Говорю, швабры потолок держали. Над ними цистерны с газом были. Очень тяжелые, пришлось в комнату снизу швабры напихать.
— Ты хотя бы записку на двери повесил бы, что швабры для держания потолка! У нас тут ядовитый газ течет! Что нам делать?
— Включай вентилятор. Он сдует газ с острова.
— Я его, блять, демонтировал сразу же!
— Зачем?
— Зачем ты построил 120 тонный вентилятор? Ты не мог положить ящик блядских ПРОТИВОГАЗОВ?
— Ящик противогазов искать нужно, а вентилятор у меня с прошлого заказа оставался.
— Вася, я убрал твой вентилятор! Мы тут задыхаемся!
— Херли вы тогда там делаете? Садитесь на воздушный шар и уебывайте!
Проголосовало за – 1536, против – 118
Статистика голосований по странам
Почему программисты ненавидят работать с чужим кодом?
Многие люди, далекие от программирования, часто не понимают, почему программисты ненавидят работать с чужим кодом? Что их так раздражает? Многим кажется, что программисты просто слишком гордые или же им просто не нравится как именно все написано.
Некоторые даже считают, что программисты попросту ленивые люди, которые не очень хотят и умеют работать с тем, что писали не сами. Например, некоторые специалисты говорят о том, что, в целом, можно за 1-2 дня разобраться в любом коде на любом языке, узнать проект и улучшить его. И, в большинстве случаев, намного легче доработать то, что уже есть чем начинать с нуля. Потому что на продумывание архитектуры, структуры базы всегда уходит намного больше времени, чем человек планирует. Даже матерый программист, который работает уже несколько лет и отлично кодит, все равно в какой-то момент начинает “буксовать”. И это приводит к большим временным и финансовым затратам. Но, при этом, люди все равно не хотят работать с чужим кодом.
Легаси-коди спагетти-код
Легаси-кодом называют коды, написанные на устаревших языках. А спагетти-кодом те, которые имеют очень сложную и запутанную структуру. С такими кодами программисты очень не любят работать, поскольку на то, чтобы в них нормально разобраться, уходит очень много времени.
Как проходит код-ревью?
Также часто программисты не любят работать с кодом-ревью. В идеале специалист отправляет свою работу другому специалисту. Тот смотрит, формирует фидбек, отправляет автору. Автор может задавать уточняющие вопросы, узнать, почему именно рекомендованы те или иные изменения. После этого он снова отправляет код на проверку. Все вроде бы выглядит очень просто. Но здесь мы сталкиваемся с человеческим фактором. Часто автор просто не готов принимать критику и адекватно на нее реагировать. Вместо того чтобы прислушаться к рекомендациям, программисты начинают спорить, переходить на личности. Тем самым они тратят уйму времени, нервов, как своих, так и чужих. И, в итоге, так и не приходят к консенсусу.
Почему программисты ненавидят работать с чужими кодами?
Самая банальная причина – код написан настолько плохо, что глядя в него, человек понимает – легче все переписать заново, чем пытаться это исправить. Особенно плохо дело обстоит в той ситуации, когда программист получает код, видит, что все очень плохо, связывается с человеком, который уже написал код. И вместо адекватного объяснения получает либо молчание, либо возмущение. В такой ситуации очень сложно начать работу. Потому что непонятно, где были допущены ошибки, чего именно человек хотел добиться, создавая именно такой код.
Вот это, пожалуй, и есть самые простые и самые реальные причины того, что программисты не хотят работать с чужим кодом.
Как вы читаете незнакомый код?
Прочёл сейчас как работает javascript код, про глобальный код, глобальный объект, про стек контекстов.
Вопрос программистам-алгоритмистам, вы действительно при анализе видите в уме контекст каждой функци?
Как вообще разбираете работу программ?
- Вопрос задан более трёх лет назад
- 895 просмотров
4 комментария
Простой 4 комментария
Хороший код должен легко читаться и выражать что он делает. Зависимость от глобального состояния — плохо. Изменения состояния лучше изолировать.
Примерно так: «***ть, какого ****я тут написано? Где коменты? Где этот инвалид-писатель. .
Что за ****ва переменная с таким кривоопым названием. «
kiberlain, Если человек мало читает, особенно художественной литературы, ему очень сложно не задумываясь проецировать текст в образы. Ведь оно как при прокачанном навыке чтения, прочитал абзац особо не задумываясь, а в голове уже ясная картинка.
Так и с кодом. Бывает шедевр, бывает сочинение двоечника: «Как я провел лето».
Но читать нужно все, если что, вкус прививается именно шедеврами.
Читать и писать это разные навыки. А думать о читателях это вообще дар.
вы действительно при анализе видите в уме контекст каждой функци?
Гроссмейстеры могут держать многоходовки прямо в голове, обычные люди редко могут держать больше двух ходов туда обратно. Не важно где: шахматы, программирование и т.д. и т.п.
Когда начинаешь понимать что теряешь связь, нужно для себя рисовать схему. Хоть блок, хоть UML.
С годами это становится просто автоматическим механизмом, ты просто читаешь и видишь как работает. Если непонятно смотришь откуда вызвана функция. Главное не напрягаться а воспринимать код как шараду.
Решения вопроса 0
Ответы на вопрос 3
Martovitskiy @Martovitskiy
Наткнулся недавно на статью.
Почему программисты ненавидят работать с чужим кодом?
Вот представь, что тебе доверили достроить за другим прорабом лабораторию на острове. Ты приходишь на объект, а там кроме недостроенного здания: огромный вентилятор (размером со здание), большой воздушный шар и комната набитая швабрами. Почесав голову, ты разбираешь этот хлам и доделываешь лабораторию. Сдаешь объект ученным, но через 5 минут они выбегают с криком: «УТЕЧКА ЯДОВИТОГО ГАЗА. «.
— Как так–то, б..ть! Должно же работать! — в отчаянии кричишь ты и звонишь прошлому прорабу:
— Вася, у нас ядовитый газ потёк! В чем проблема?
— Не знаю, должно было все работать. Что–то в проекте менял?
— Немного, швабры вынес.
— Швабры потолок держали!
— Что. Что, б. ть, извините.
— Говорю, швабры потолок держали. Над ними цистерны с газом были. Очень тяжелые, пришлось в комнату снизу швабры напихать.
— Ты хотя бы записку на двери повесил бы, что швабры для держания потолка! У нас тут ядовитый газ течет! Что нам делать?
— Включай вентилятор. Он сдует газ с острова.
— Я его, б. ть, демонтировал сразу же!
— Зачем?
— Зачем ты построил 120 тонный вентилятор? Ты не мог положить ящик бл. ских ПРОТИВОГАЗОВ?
— Ящик противогазов искать нужно, а вентилятор у меня с прошлого заказа оставался.
— Вася, я убрал твой вентилятор! Мы тут задыхаемся!
— Херли вы тогда там делаете? Садитесь на воздушный шар и у..бывайте!
Почему программист ненавидит ковырять чужой код
Меня недавно спросили, почему программисты ненавидят работать с чужим кодом. Долго думал, как донести до обычного пользователя всю суть 3,14здеца.
Решил привести небольшую аналогию:
Вот представь, что тебе доверили достроить за другим прорабом лабораторию на острове. Ты приходишь на объект, а там кроме недостроенного здания: огромный вентилятор (размером со здание), большой воздушный шар и комната набитая швабрами. Почесав голову, ты разбираешь этот хлам и доделываешь лабораторию. Сдаешь объект ученым, но через 5 минут они выбегают с криком: «УТЕЧКА ЯДОВИТОГО ГАЗА. «.
— Как так–то, бл@ть! Должно же работать! — в отчаянии кричишь ты и звонишь прошлому прорабу:
— Вася, у нас ядовитый газ потёк! В чем проблема?
— Не знаю, должно было все работать. Что–то в проекте менял?
— Немного, швабры вынес.
— Швабры потолок держали!
— Что. Что, бл@ть, извините.
— Говорю, швабры потолок держали. Над ними цистерны с газом были. Очень тяжелые, пришлось в комнату снизу швабры напихать.
— Ты хотя бы записку на двери повесил бы, что швабры для держания потолка! У нас тут ядовитый газ течет! Что нам делать?
— Включай вентилятор. Он сдует газ с острова.
— Я его, бл@ть, демонтировал сразу же!
— Зачем ты построил 120 тонный вентилятор? Ты не мог положить ящик бл@дских ПРОТИВОГАЗОВ?
— Ящик противогазов искать нужно, а вентилятор у меня с прошлого заказа оставался.
— Вася, я убрал твой вентилятор! Мы тут задыхаемся!
— Херли вы тогда там делаете? Садитесь на воздушный шар и уе%ывайте от туда!
- Martian
- Сообщений: 10579
- Зарегистрирован: Сб дек 18, 2021 19:25:32
- Сайт
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 11:17:38
В тему соседней ветки про мат: какой смысл заменять в матерных словах символы? Как где-то прочитал в интернете: это всё равно, что минет на площади среди кучи людей прикрывать ладошкой
А по теме: это бред. Изучение профессионального чужого кода интересно, а хорошо документированного — вдвойне, а за деньги — втройне.
- AlexandrRa
- Сообщений: 50
- Зарегистрирован: Чт ноя 26, 2020 13:19:49
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 12:48:22
А если не задокументированный, без комментариев и на ассемблере, да ещё и микроконтроллер новый?
(в смысле ещё не изученный)
- Martian
- Сообщений: 10579
- Зарегистрирован: Сб дек 18, 2021 19:25:32
- Сайт
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 13:04:10
тоже хорошо — добавляем младших три ноля к цене
- JMC.Hard
- Сообщений: 302
- Зарегистрирован: Ср сен 16, 2020 20:38:41
- Откуда: Краснодарский край, г.Абинск
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 15:03:44
тоже хорошо — добавляем младших три ноля к цене
Ннну, и останешься без работы .
А по поводу вышесказанного . интересно разбираться в чужом коде когда есть исходник с комментариями, а оно, таки оОочень редко попадается
Занимался программированием много лет, и не свои программы приходилось разбирать и переделывать .
Своя программа сделана по твоей логике, она тебе (даже и без комментариев) будет всегда понятна. Самое страшное в чужой программе — понять логику , въедешь — всё пойдёт! Даже на незнакомом тебе (до этого) языке программирования .
- Eddy_Em
- Сообщений: 2525
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Сайт
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 15:31:10
Своя программа сделана по твоей логике, она тебе (даже и без комментариев) будет всегда понятна.
Во-во, мне коллега все, как ни взглянет в мой код, говорит, мол, надо бы тебе уже на С++ переходить — все ООПщину в С тащишь ☺ Но мне С нравится: простой ЯП, не требующий постоянно шарахаться по интернету в поисках документации (ман почитал в консоли — и готово), да и логика простая (не то, что классы с шаблонами). Я уж молчу о времени сборки: мой код собирается за несколько секунд, у коллеги же g++ может минуту пыхтеть!
- AlexandrRa
- Сообщений: 50
- Зарегистрирован: Чт ноя 26, 2020 13:19:49
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 16:05:47
Ну, у меня 4 месяца ушло, чтоб её разобрать (и то честно говоря не до конца всё понял, т. к. писалась она как говорили мне шаблонами(присутствовали лишние куски кода на мой взгляд))
- Martian
- Сообщений: 10579
- Зарегистрирован: Сб дек 18, 2021 19:25:32
- Сайт
Re: Почему программист ненавидит ковырять чужой код
Пт июн 10, 2022 18:35:46
все ООПщину в С тащишь
Аналогично! Притом, был период наоборот, когда рванув за всеми в ООПнутые языки, долгое время работал в них с минимумом ООП
Но вот сейчас, всё более увлекаясь С#, мне как-то становится неловко в обычном С.
Добавлено after 3 minutes 34 seconds:
Про комментарии: до сих пор вспоминаю исходники TMSSoftware для Delphi, комментариев там было минимум, но все по существу, а один звучал примерно так: «Мы не понимаем, почему не работает, если не добавить 1»
Вот именно на их исходниках я нехило продвинулся в Delphi. На исходниках Reogrid очень сильно скакнул в C#
Так что, хорошие чужие исходники — это отличный опыт может быть.
Добавлено after 2 minutes 17 seconds:
Ну, у меня 4 месяца ушло, чтоб её разобрать (и то честно говоря не до конца всё понял, т. к. писалась она как говорили мне шаблонами(присутствовали лишние куски кода на мой взгляд))
Зато это наверняка улучшило понимание ТЗ в целом, и возможно, есть возможность предложить заказчику вариант создания лучшей версии? За отдельные деньги, разумеется
- Муркиз
- Сообщений: 17615
- Зарегистрирован: Пн фев 09, 2009 22:19:49
- Откуда: Когда-то был прекрасный город для людей
Re: Почему программист ненавидит ковырять чужой код
Пт июн 24, 2022 08:20:37
Не будьте уверены, что ваш код самый оптимальный.
Разобравшись в чужих алгоритмах, найдете пути улучшения своих.
- Morroc
- Сообщений: 18541
- Зарегистрирован: Чт фев 20, 2014 18:57:55
Re: Почему программист ненавидит ковырять чужой код
Вт окт 25, 2022 09:25:09
Не будьте уверены, что ваш код самый оптимальный.
Мало того, он может быть даже оптимальным, но нечитаемым — это к вопросу от «своей логике», причем ООП там или нет по барабану. Есть любители наплодить по функции на каждое элементарное действие, а внутри функций еще раз так сделать — на первый взгляд вроде даже и ничего смотрится. пока не всплывет какой нибудь необычный баг и не придется это отлаживать кому то другому.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.