Re[3]: как доходчиво объяснить менеджеру?
От: antropolog  
Дата: 22.02.16 10:14
Оценка: +4 -3
Здравствуйте, consign, Вы писали:

C>Нежелание тратить время на бессмысленную работу.

переписывание это и есть бессмысленная работа. Осмысленная работа в данном случае — зафиксить баги в существующем коде.

C>С этим скиллом у меня и так всё хорошо.

тогда в чём проблема зафиксить код? Не знаешь где и как? А почему? Может всё-таки ещё есть куда стремиться в скилле?

C>Ты поставил всё с ног на голову. Моя цель — решение задачи с минимальными сложностями. Продукт любителя "совершенного кода" и паттернов — это как раз то, от чего я хочу избавиться.

я просто вижу очередного "реального" погроммиста, который вместо того чтобы разобраться в коде хочет всё переписать, и не осознаёт, что проект уже худо-бедно но работает, что существующая логика уже обрабатывает кучу нюансов, которых нет в документации и о которых тебе только предстоит узнать. Учись читать чужой код.
Re[4]: как доходчиво объяснить менеджеру?
От: consign  
Дата: 22.02.16 10:20
Оценка: +1 -1
Здравствуйте, antropolog, Вы писали:

A>переписывание это и есть бессмысленная работа. Осмысленная работа в данном случае — зафиксить баги в существующем коде.


Не в том случае, если переписать — быстрее, чем исправить существующий код.

A>тогда в чём проблема зафиксить код? Не знаешь где и как?


Знаю, где и как. На добавление мелкой фичи — десяток исправлений в разных местах.

A>я просто вижу очередного "реального" погроммиста, который вместо того чтобы разобраться в коде хочет всё переписать, и не осознаёт, что проект уже худо-бедно но работает, что существующая логика уже обрабатывает кучу нюансов, которых нет в документации и о которых тебе только предстоит узнать. Учись читать чужой код.


Точно. Не может быть, чтобы я знал свою работу. Только ты можешь знать всё лучше всех.
Re[5]: как доходчиво объяснить менеджеру?
От: antropolog  
Дата: 22.02.16 10:31
Оценка: -2
Здравствуйте, consign, Вы писали:

C>Точно. Не может быть, чтобы я знал свою работу. Только ты можешь знать всё лучше всех.

ох, ты бы сразу сказал что у тебя аккаунт на хабрахабре, я бы не тратил на тебя своё драгоценное время
Re[6]: как доходчиво объяснить менеджеру?
От: consign  
Дата: 22.02.16 10:36
Оценка:
Здравствуйте, antropolog, Вы писали:

A>ох, ты бы сразу сказал что у тебя аккаунт на хабрахабре, я бы не тратил на тебя своё драгоценное время


У меня его нет, снова пальцем в небо.
И да — займись лучше своей крайне драгоценной работой по 2 килобакса в месяц.
Re[7]: как доходчиво объяснить менеджеру?
От: antropolog  
Дата: 22.02.16 10:46
Оценка: -1 :))
Здравствуйте, consign, Вы писали:

C>У меня его нет, снова пальцем в небо.

дартаньянство есть, отсутствие опыта есть, прийти за помощью и хамить всем подряд тоже есть, а аккаунта на хабре нет. Удивил.

C>И да — займись лучше своей крайне драгоценной работой по 2 килобакса в месяц.

милок, моё время стоило 2 килобакса в месяц примерно 12 лет назад, и ты тогда под стол пешком ходил.
Re[3]: как доходчиво объяснить менеджеру?
От: landerhigh Пират  
Дата: 22.02.16 11:36
Оценка: +8 :))) :)))
Здравствуйте, consign, Вы писали:

C>Разобраться, в данном случае — это весь код на помойку и потратить день, чтобы переписать. Не дадут.


И правильно не дадут, потому что знают, что "день" — это обычно где-то полгода
www.blinnov.com
Re: как доходчиво объяснить менеджеру?
От: pestis  
Дата: 22.02.16 13:02
Оценка: -1
Здравствуйте, consign, Вы писали:

C>Теперь сижу, не могу определиться — ржать или плакать.

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?
Re: как доходчиво объяснить менеджеру?
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 22.02.16 13:06
Оценка: 2 (1) +2
Здравствуйте, consign, Вы писали:

C>И снова мне подкинули проект "совсем немного доработать".

C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули.
C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее.
C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь.
C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.

C>Теперь сижу, не могу определиться — ржать или плакать.

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

Ты сам понимаешь все, что делает код?
Автор кода доступен, он может объяснить как он работает и что нужно поправить?
Есть ли тесты или другой способ быстрой проверки работоспособности?

Если ответ "нет" хотя бы на один вопрос, то о переписывании не думай, ты можешь на порядок ошибиться в оценке.

Предположим, что ответы на вопросы выше — "да". Тогда тебе нужна объективная оценка, чтобы разговаривать с менеджером.
Например чтобы поправить баги нужно разобраться в куске кода размером X строк, и поправить Y строк.
Переписать с нуля — ты оцениваешь в Z строк.

Средняя скорость чтения и понимания кода — 200 строк в час, скорость написания — 70 строк в час. Для переписывания стоит еще коэффициент Пи заложить.
Получится, что переписывать надо, если Pi*Z/70 < X/200+Y/70. Y — должно быть маленьким знанием, относительно X, иначе правка превращается в переписывание кода. Если взять, что Y не превышает 10% от объема проекта, то можно переписать в виде Pi*Z < 7*X/20 + 2*X/20 или Pi*Z < 9/20*X или Z < X/7.

Получаем простую закономерность — новый код должен быть в 6-8 раз меньше старого, чтобы было выгодно переписывать. Причем это верно как для всего проекта, так и для отдельных кусков.

Чтобы поговорить с менеждером — найди куски, которые можно сократить. Например выкинуть абстрактную и интерфейсы, убрать визиторы и напрямую вызывать функции. Если ошибки как раз в этих кусках, то получишь добро.
Re: как доходчиво объяснить менеджеру?
От: okon  
Дата: 22.02.16 13:27
Оценка:
Здравствуйте, consign, Вы писали:

C>И снова мне подкинули проект "совсем немного доработать".

C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули.
C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее.
C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь.
C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.

C>Теперь сижу, не могу определиться — ржать или плакать.

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

Сначала надо убить в себе дартаньяна,
вот тут подробнее об этом эффекте обсуждалось http://rsdn.ru/forum/life/6354098
Автор: pitermann
Дата: 18.02.16



Потом подойти к коллеге чей код тебе кажется не такой как все и попросить помочь разобраться, расспросить о всех ньюансах, скажи что столкнулся с проблемой — программа иногда "дохнет напрочь", спроси как это можно подлечить с минимальными затратами.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re: как доходчиво объяснить менеджеру?
От: alpha21264 СССР  
Дата: 22.02.16 13:42
Оценка: +1
Здравствуйте, consign, Вы писали:

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?


Ну скажи, что не можешь вьехать, и тот, кто это наваял, пусть это и дальше поддерживает.

Течёт вода Кубань-реки куда велят большевики.
Re[4]: как доходчиво объяснить менеджеру?
От: alpha21264 СССР  
Дата: 22.02.16 13:44
Оценка:
Здравствуйте, andrey.t, Вы писали:

AT>То есть у тебя нет причин для изменения кода кроме "оно говно"? Тогда менеджер будет прав на все 100, если не послушает такое объяснение.


Ну можно перевести на менеджерский язык — в таком коде новые фичи будут вводиться сложно и долго.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: как доходчиво объяснить менеджеру?
От: alpha21264 СССР  
Дата: 22.02.16 13:46
Оценка: +3
Здравствуйте, pestis, Вы писали:

P>Здравствуйте, consign, Вы писали:


C>>Теперь сижу, не могу определиться — ржать или плакать.

C>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

P>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?


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

Течёт вода Кубань-реки куда велят большевики.
Re[3]: как доходчиво объяснить менеджеру?
От: okon  
Дата: 22.02.16 13:57
Оценка: -1
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, pestis, Вы писали:


P>>Здравствуйте, consign, Вы писали:


C>>>Теперь сижу, не могу определиться — ржать или плакать.

C>>>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

P>>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?


A>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.


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

вылечил от неизлечимой казалось всем болезни — звучит намного профессиональнее чем "поработал со здоровым клиентом болячек не нашел, проводил водные процедуры"
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re: как доходчиво объяснить менеджеру?
От: Faland США  
Дата: 22.02.16 14:28
Оценка: +1
Здравствуйте, consign, Вы писали:

C>И снова мне подкинули проект "совсем немного доработать".

C>Как только я услышал эту фразу, сразу закопошились нехорошие предчувствия. И они опять не обманули.
C>Код в лучших традициях подхода "меня укусил Гамма" — куча классов с одним методом, каждый вызывается строго через интерфейс и создается через абстрактную фабрику (при том, что у всех интерфейсов ровно по одному наследнику), визиторы, DSL на основе YAML, 30 пакетов с фреймворками непонятного назначения, и так далее.
C>Нормальной обработки ошибок нет, если что пошло не так — дохнет напрочь.
C>И всё это при том, что вся функция проги — периодически дергать страницу по HTTP, передавая ей аргументы из конфига, и если ответ не совпадает с заданным — дернуть другую страницу. Всё.

C>Теперь сижу, не могу определиться — ржать или плакать.

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?

Очень все зависит от того что за человек менеджер итп. Если видишь что скорее всего упрутся рогом и только испортишь отношения если будешь настаивать — то выхода два:
1) Медленно и не спеша, начиная с тестов — переделывать систему понемногу. Если там совсем немного — то может даже и переписать потихоньку.
99% контор и менеджеров никогда не выделяют времени на рефактиринг и переделки, так что приходится выкручиваться самому, понемногу улучшая систему на ходу.
Да, тяжело, но экспириенс рефакторинга отличный. А постфактум вам скорее всего только спасибо скажут, когда увидят что все уже сделано и работает на 5+.
Если будут настаивать на том что все было правильно а вы дурак — см №2.
2) Найти другую работу.
Re[2]: как доходчиво объяснить менеджеру?
От: okon  
Дата: 22.02.16 14:59
Оценка: -1
F>Очень все зависит от того что за человек менеджер итп. Если видишь что скорее всего упрутся рогом и только испортишь отношения если будешь настаивать — то выхода два:
F>1) Медленно и не спеша, начиная с тестов — переделывать систему понемногу. Если там совсем немного — то может даже и переписать потихоньку.
F>99% контор и менеджеров никогда не выделяют времени на рефактиринг и переделки, так что приходится выкручиваться самому, понемногу улучшая систему на ходу.

Если рефакторинг за свой счет то такой вариант возможен, если в рабочее время то не надо. Вы тратите чужие деньги на то , на что вас не просят. Если код который вам не дает спать будет мешать работе бизнеса то задача на его рефакторинг или доработку сама появится и опять же ваша задача не переписать все а решить проблему как можно быстрее и дешевле, ведь бизнесу не нужно решение проблемы на все случаи жизни ( до которых бизнес может и не дожить ), ему нужно конкретное решение чтобы как можно быстрее и дешевле сделать 1 шаг вперед на рынке.
”Жить стало лучше... но противнее. Люди которые ставят точку после слова лучше становятся сторонниками Путина, наши же сторонники делают акцент на слове противнее ( ложь, воровство, лицемерие, вражда )." (с) Борис Немцов
Re[5]: как доходчиво объяснить менеджеру?
От: nen777w  
Дата: 22.02.16 16:00
Оценка:
AWW>>Вы просто не сталкивались с ситуациями когда кодят в оставшиеся пять дней до срока сдачи, и так в течении двух недель до этого. Ну по 12 часов в день.
C>Сталкивался и похуже. И когда такое происходит, это всё — один сплошной бред. Странно ожидать от людей, что они не наделают глупостей в таких условиях.

Я вот недавно в одном открытом проекте фиксил багу, запилил константу с идентификатором абсолютно чёрной текстуры IMG_BLACK_SQUARE_MALEVICH
Re: как доходчиво объяснить менеджеру?
От: Sealcon190 Соломоновы острова  
Дата: 22.02.16 18:00
Оценка:
Здравствуйте, consign, Вы писали:

Начать следует с ТЗ.
Если ТЗ отсутствует, то надо поставить вопрос о его составлении.
После прочтения ТЗ может вдруг оказаться, что ничего лишнего в коде нет.

Имея в одной руке ТЗ, в другой сам код, можно уже предметно подготовиться к разговору с менеджером и аргументированно обьяснить, что и почему следует выбросить, что добавить, а что переделать.
Re[4]: как доходчиво объяснить менеджеру?
От: alpha21264 СССР  
Дата: 22.02.16 19:08
Оценка:
Здравствуйте, okon, Вы писали:

O>Здравствуйте, alpha21264, Вы писали:


A>>Здравствуйте, pestis, Вы писали:


P>>>Честно признать что твоей квалификации недостаточно чтобы поддерживать этот код тебе религия не позволяет?


A>>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.


O>А в чем еще квалификация проявляется, когда все легко и просто тогда и квалификация не нужна

O>профессиональный врач любит работать со сложными клиентами, т.к. в этом квалификация и навыки проявляются и развиваются.

Программист не врач, программист — инженер. И если можно взять в космос карандаш,
а не изобретать ручку за миллион долларов, то нужно брать карандаш.

Если нужна какая-то невероятная квалификация, чтобы делать тривиальные вещи,
то контора нерационально расходует интеллект сотрудников. Топикстартер в начальном
посте правильно описал симптомы. В этом коде приходится использовать "стрельбу дробью" —
то есть, вносить изменения сразу во много мест. Что тебе не понятно? Почему нужно
избавляться от стрельбы дробью независимо от квалификации? Потому что вносить
изменения в одно место в сто раз быстрее чем в десять. Почему в сто? Потому что
тут квадратичная зависимость.

Течёт вода Кубань-реки куда велят большевики.
Re: как доходчиво объяснить менеджеру?
От: 0x7be СССР  
Дата: 22.02.16 19:18
Оценка: +1
Здравствуйте, consign, Вы писали:

C>Теперь сижу, не могу определиться — ржать или плакать.

C>Сакраментальный вопрос — как объяснить менеджеру этой чудо-программы, что код — полное говно, и по хорошему это всё надо выбрасывать на помойку? Но так, чтобы он с программистом не уперлись рогом и не записали меня в вечные враги?
Переведи проблему в термины "время и деньги", т.е. составь экономическое обоснование своей идее "всё взять и поделить переписать".
Возможно, что в процессе ты сам увидишь, что твоя идея не обоснована
Re[3]: как доходчиво объяснить менеджеру?
От: pestis  
Дата: 22.02.16 19:37
Оценка: 1 (1)
Здравствуйте, alpha21264, Вы писали:

A>Знаешь, тратить квалификацию на поддержания говнокода не стОит. Есть масса более интересных применений.


Ты так говоришь, как будто квалификация расходуется. Скорее наоборот, от работы с чужим кодом квалификация растет.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.