Re: Рассказ о Крутом Манагере
От: Loooser Россия  
Дата: 23.01.15 19:14
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Да, и вот этот мой код и есть тому подтверждение. При чем, я не говорю, хорошим, я говорю, неплохим, ...


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

// This is a prototype code and should be rewritten from scratch


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

Теперь вы знаете алгоритм, можно расслабиться и написать все заново в соответствии с требованиями компании и своим представлением о прекрасном коде.

> Последовательно определяются ребра, узлы, компоненты, наконец, ветви и контуры. Почему этот алгоритм не разбит на отдельные пошаговые подфункции? Из-за единого набора переменных-массовов, которые тут везде рабочие, но нужны на всем протяжении каждого цикла.


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

PS:И не забываем: код чаще читается, чем пишется. А если он не читается, то ему не место в репозитории.
Re: Рассказ о Крутом Манагере
От: smeeld  
Дата: 23.01.15 19:22
Оценка: +1 -2 :))) :))
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Здравствуйте, местные хакеры.


Нет тут никаких хакеров, почти. Этот форум наполнен среднячками и обывателями от программирования,
не различающими сути о формальности средств выражения, представления, предоставления для машины, алгоритмов,
и поэтому всерьёз обсуждающих про то, как правильно, for{} или BOOST_FOREACH.
Для программы есть одно единственное требование-удовлетворять зараенe оговорённым требованиям. В 95%
всех случаев это означает соответствие всевозможным параметрам времения исполнения, из которых производительность
и безопасность являются оcновными. То, каков сам код, имеет вторичное значение. И это мировая практика разработки,
которой, многим местным ылитным программистам и многим программистам в РФ вообще, стоит поучиться. Частенько можно
тут узреть о том, что код, например, в open source, является некачественным, хотя многие, из местных оценщиков кода,
не способны и на долю того, что могут и что делают авторы того некачественного кода из open source.
Просто посчастливилось Вам попасть в компанию, aka "Pupkin Ink", это один из видов IT компаний РФ, второй тип-это
корпорации распило-откатного произодства. Таковых в РФ развелось много, там собираются все эти курятниковые менеджеры
с дипломами заборостроительных, c ЧСВ, раздутым общественным мифом про ылитность тех, кто менеджер, но не понимающих
о том, что менеджер-это решатель проблем, а не хозяин положения. В таких организациях очень кислая и агрессивная среда
для творчески настроенного программиста. Что до программистов, то разумные из них, никогда не полезут в эти самые "Pupkin Inc",
и не лезут они также в крупные корпорации распило-откатного произодства, чего и Вам желаю. Тут один прогер из PostgreSQL core team,
который, услышав про импортозамещение, походил по местным РФ-овским IT-шаражкам, что поможет составить правильное мнение о этих
шарагах, о менеджерах, чиновниках и о IT бизнесе в РФ вообще.

А тот менеджер действительно чудила, выдать на форум, где может быть кто угодно, и на основе мнения этих, кого угодно, составить оценку
кода-это бредятина в духе новоиспечённого класса недоменеджеров РФ. С подобным менеджментом, в РФ никакого роста и модернизации экономики
не будет никогда.
Re[2]: Рассказ о Крутом Манагере
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 23.01.15 19:27
Оценка: 3 (1) +2
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Чтобы вы поверили этому (я не призываю проверять весь код), я расскажу наконец постановку задачи, и почему она вышла такая длинная.


ЮЛ>Задача была поначалу для интереса — найти алгоритм поиска замкнутых контуров из произвольно заданного набора кусков кривых. Теория графов по Эйлеру была руководящей идеей. Основным требованием для меня являлось сохранение линейной скорости алгоритма.

ЮЛ>Если кто то считает, что задача очевидным образом формализуется в виде классов — прошу на сцену. Я же таких явных классов не видел, а создавать их искусственно, на потребу г-на начальника, считаю бесполезной и даже вредной тратой времени. Я могу сформулировать такой критерий — если классов не видно, то лучше никаких классов, чем что то уродливое, но объектно-ориентированное.
ЮЛ>И причин тут по меньшей мере две — 1)алгоритм не расползается по разным местам и файлам, а более менее локализован, что важно при его первичном моделировании, и 2)отладка не настолько утомительна, как в случае классов, да еще с использованием STL-фичей, на ошибки которых компилятор ругается хорошо если 10-этажнвм матом (а чаще просто вываливает на экран половину системных h-файлов), а отладчики в половине случаев не способны показать значение зарытого в классах члена или свойства.

1) Насчёт первичного моделирования согласен — тут поступай, как тебе удобнее. Но ровно с того момента, как код перестаёт быть "первичным", нужно учесть дополнительные требования. Обрати внимание, даже в учебниках формулы часто обозначают какими-то отдельными символами. Например, (1), (2), чтобы потом написать что-то, вроде: "последовательно применяя (3), (4) и (5) получаем вот такое уравнение, (6):" А выливать формулы на десяток страниц без обозначения компонент — моветон. Хотя тот, кто впервые в человеческой истории синтезировал соответствующие выводы вполне мог писать их в каком угодно стиле, хоть на глиняных табличках без какой-либо нумерации.

2) Это не смешно. Я ещё поверю, что boost вываливает тонны ошибок, но STL далеко не так кошмарен. К тому же, по умолчанию студия умеет показывать содержимое STL-контейнеров.

ЮЛ>Как вы сможете убедиться, весь "длинный" код в действительности достаточно линеен — а по этому признаку даже Конелл не запрещает удлинять функции.


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

m_val = param;
if (someGlobalParameter) {
  m_val *= (*someGlobalParameter);
}


В принципе, ничего страшного в длинной ленте такого кода нет, в нём достаточно легко ориентироваться и соответственно — несложно сопровождать.

А у тебя блок на блоке, цикл на цикле, цикл в блоке и сверху if(1). Тот же PseudoProcessAcceptedData — до семи уровней вложенности, при этом она состоит из двух циклов верхнего уровня, а во втором есть несколько отключённых фрагментов (искать по if(0)), видимо, взаимоисключающих с фрагментом, обозначенным if(1). Цикломатическую сложность считать не буду, если интересно — поищи соответствующие тулзы.

О каком "линейный коде" ты говоришь? Смеёшься, что ли?

ЮЛ>Последовательно определяются ребра, узлы, компоненты, наконец, ветви и контуры. Почему этот алгоритм не разбит на отдельные пошаговые подфункции? Из-за единого набора переменных-массовов, которые тут везде рабочие, но нужны на всем протяжении каждого цикла. Искусственно выносить их в классы, значит, терять локализацию, а это важнее мнимой красоты. Я вовсе при том не сторонник напихивать в одну функцию кучу разнородного барахла. Но как раз тут постановка диктует , потому что весь длинный алгоритм — един.


Позволю себе не поверить. Как раз вот этот "единый набор переменных-массовов", скорее всего, может стать набором данных-членов класса. Это естественный, и даже более того — наивный приём объектной декомпозиции (наивный != плохой).

ЮЛ>И что функция получится длинной, я заранее знал и предупреждал манагера.


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

В общем, луч добра и сочувствия твоему шефу.

ЮЛ>Любопытный факт — код алгоритма этот Манагер выложил в интернет , заявив , что этот код ему нафиг не нужен, но когда при моем увольнении зашел разговор, чтобы отдать мне этот код для завершения работы с заказчиком, — как стоило узнать о пошлом скупердяйстве манагера, который вдруг заявил, что код — собственность фирмы. Что это как не шизофрения?


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

ЮЛ>Код я все же получил, хоть и без мелких примочек, и довел его до второй успешной реализации — на этот раз нам с заказчиком понадобилось найти алгоритм построения самого внешнего контура. И меня не сильно напрягала длина этого метода. Хотя новый алгоритм еще более разросся, но в нем заложена красивая идея, вот что важно, и эта внутренняя красота будет посовершенней дутой формальности.


Прекрасно, конечно. Только всех остальных претензий этот факт не отменяет.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[2]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 19:47
Оценка:
Здравствуйте, Loooser, Вы писали:

L>Теперь вы знаете алгоритм, можно расслабиться и написать все заново в соответствии с требованиями компании и своим представлением о прекрасном коде.


Давайте усложним условия: вам постоянно давят на мозги, что код надо написать за две недели. Иначе невыгодно. Что вы на самоокупаемости, и заказ постоянно закрывают. Просто так.
Как скоро вы начнете писать все заново и т.д.? Или у вас будут задачи поважнее.

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


Учиться никогда не поздно. Только с ваших общих слов ничего не выжмешь. Конкретики не будет? Не стесняйтесь, поведайте, что же вам говорят эти строки?
Re[3]: Рассказ о Крутом Манагере
От: 0x7be СССР  
Дата: 23.01.15 19:53
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Давайте усложним условия: вам постоянно давят на мозги, что код надо написать за две недели. Иначе невыгодно. Что вы на самоокупаемости, и заказ постоянно закрывают. Просто так.

ЮЛ>Как скоро вы начнете писать все заново и т.д.? Или у вас будут задачи поважнее.
Давайте мы тут все похлопаем в ладоши и демонстративно восхитимся вашим кодом охаем "манагера"
Может быть тогда вам станет легче?
Re[2]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 19:54
Оценка: -1 :))) :))
Здравствуйте, smeeld, Вы писали:

S>Здравствуйте, Юрий Лазарев, Вы писали:


ЮЛ>>Здравствуйте, местные хакеры.

S>Нет тут никаких хакеров, почти.

Ну это они себя так называют. И в кодексе форума прямо пишут, что перезирать неверных их право.

А с вашим постом я согласен целиком и полностью. Здесь где то я выдвигал тезис о равенстве (возможно, в другой ветке), его можно развить до социальной теории. Хочу обратить ваше внимание на очевидный момент — бандерлоги начинают за совершенство кода, а кончают всегда денежкой. В либерастическом смысле — выживает сильнейший (и тупейший). Все вами перечисленное есть следствие воровства и халтуры, в целом мерзопакостной жизни преуспевающих манагеров.
Re[4]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 19:56
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Давайте мы тут все похлопаем в ладоши и демонстративно восхитимся вашим кодом охаем "манагера"

0>Может быть тогда вам станет легче?

Достаточно вашей честности. И порядочности, если ее у вас еще осталось.
Re[5]: Рассказ о Крутом Манагере
От: AlexRK  
Дата: 23.01.15 19:58
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

0>>Давайте мы тут все похлопаем в ладоши и демонстративно восхитимся вашим кодом охаем "манагера"

0>>Может быть тогда вам станет легче?

ЮЛ>Достаточно вашей честности. И порядочности, если ее у вас еще осталось.


Вам вроде уже многие достаточно честно высказали мнение о вашем коде. Некоторые вполне порядочно. Что вы еще желаете?
Re[6]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 20:22
Оценка: -2
Здравствуйте, AlexRK, Вы писали:

ARK>Вам вроде уже многие достаточно честно высказали мнение о вашем коде. Некоторые вполне порядочно. Что вы еще желаете?


Спасибо, ничего. А вы тут официантом подвизаетесь?
Re[7]: Рассказ о Крутом Манагере
От: AlexRK  
Дата: 23.01.15 20:28
Оценка: +6
Здравствуйте, Юрий Лазарев, Вы писали:

ARK>>Вам вроде уже многие достаточно честно высказали мнение о вашем коде. Некоторые вполне порядочно. Что вы еще желаете?


ЮЛ>Спасибо, ничего.


Понятно. Хотя на правду не очень похоже. Определенно, вы хотите чего-то кому-то доказать.

ЮЛ>А вы тут официантом подвизаетесь?


Да нет, просто ради интереса зашел посмотреть. А вы, вероятно, практикующий клоун?
Re[5]: Рассказ о Крутом Манагере
От: 0x7be СССР  
Дата: 23.01.15 20:29
Оценка: +9
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Достаточно вашей честности. И порядочности, если ее у вас еще осталось.

Я абсолютно честно и порядочно скажу, что не понимаю, зачем вы затеяли эту дискуссию. А ещё я скажу, что то, что вы тут пишите, оставляет не слишком приятное впечатление как о потенциальном сотруднике. Получился ваш личный антипиар.
Re[6]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 20:39
Оценка:
Здравствуйте, 0x7be, Вы писали:

ЮЛ>>Достаточно вашей честности. И порядочности, если ее у вас еще осталось.

0>Я абсолютно честно и порядочно скажу, что не понимаю, зачем вы затеяли эту дискуссию. А ещё я скажу, что то, что вы тут пишите, оставляет не слишком приятное впечатление как о потенциальном сотруднике. Получился ваш личный антипиар.

Понимаю, что раз вы не понимаете, то вы как раз из касты манагеров.
Ответьте, пожалуйста, на пару контрольных вопросов

1) Правильно ли, когда разработка алгоритма оценивается манагером вдвое дешевле ничего не значащего "сопровождения"?

2) Как вам ситуация, когда разработчик поставлен в условия самоокупаемости при разработке в основном разовых заказов от отечественных заказчиков?

Между тем такова была практика Крутого Манагера.
Re[7]: Рассказ о Крутом Манагере
От: 0x7be СССР  
Дата: 23.01.15 21:05
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Понимаю, что раз вы не понимаете, то вы как раз из касты манагеров.

Я не знаю, из какой я касты по вашей системе оценок

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


ЮЛ>Ответьте, пожалуйста, на пару контрольных вопросов

ЮЛ>1) Правильно ли, когда разработка алгоритма оценивается манагером вдвое дешевле ничего не значащего "сопровождения"?
Трудоёмкость оценивается исполнителем.
Исполнитель оценивается манагером

ЮЛ>2) Как вам ситуация, когда разработчик поставлен в условия самоокупаемости при разработке в основном разовых заказов от отечественных заказчиков?

Я не сильно понимаю, что именно означает на практике описанная схема.
Выглядит подозрительно похоже на фриланс
Re[3]: Рассказ о Крутом Манагере
От: RedUser Россия  
Дата: 23.01.15 21:44
Оценка:
ЮЛ>Кстати, что за отступы вы мне тут инкриминируете? У меня есть своя "техника" — обычные отлаженные операторы я помещаю в общепринятом месте, а вот проблемные, содержащие ошибки, требующие внимания, ставлю (чаще временно, хотя остается надолго) в первые позиции строки. В принципе, по этой идее все такие строки бросаются в глаза, а то что они временные, служит залогом того, что при необходимости их можно безболезненно (или по крайней мере не особо задумываясь) удалить в окончательном коде.

ЮЛ>А вот тут как раз самое интересное. Мой код подошел к своему совершенству, и я не вижу, зачем бы ему еще модифицироваться. Если есть такие предпосылки, его надо рефакторить, это само собой. Но опять таки, ПОСЛЕ написания алгоритма, а не в процессе его, когда основные концепции еще не устоялись.


То есть код подошёл к своему совершенству, осталось только разобраться с некоторыми проблемными, содержащими ошибки, требующими внимания местами?
Re[8]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 22:08
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Ну, допустим, что я тупой и не понимаю очевидного.

0>Что поменяется для вас от того, что вы тут переубедите несколько человек? Это такая попытка заявить о себе?

Я же объяснил, как я оказался на этом форуме.

ЮЛ>>Ответьте, пожалуйста, на пару контрольных вопросов

ЮЛ>>1) Правильно ли, когда разработка алгоритма оценивается манагером вдвое дешевле ничего не значащего "сопровождения"?
0>Трудоёмкость оценивается исполнителем.
0>Исполнитель оценивается манагером

Да-да, вы почти дочитали фразу, но не до конца. Исполнитель оценивается манагером ... вдвое дешевле ничего не значащего "сопровождения". Вы всегда отвечаете только на то, что хочется ответить вам самому?

ЮЛ>>2) Как вам ситуация, когда разработчик поставлен в условия самоокупаемости при разработке в основном разовых заказов от отечественных заказчиков?

0>Я не сильно понимаю, что именно означает на практике описанная схема.
0>Выглядит подозрительно похоже на фриланс

Вероятно, фриланс, а на практике — шельмование.
Re[4]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 22:12
Оценка:
Здравствуйте, RedUser, Вы писали:

RU>То есть код подошёл к своему совершенству, осталось только разобраться с некоторыми проблемными, содержащими ошибки, требующими внимания местами?


По моему, все это место поняли правильно, а вы читали его задом наперед. Вы не араб часом?
Re[9]: Рассказ о Крутом Манагере
От: 0x7be СССР  
Дата: 23.01.15 22:27
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Я же объяснил, как я оказался на этом форуме.

Видимо, я упустил. Можете дать ссылку на сообщение?

ЮЛ>Да-да, вы почти дочитали фразу, но не до конца.

Я прочитал фразу до конца.

ЮЛ>Исполнитель оценивается манагером ... вдвое дешевле ничего не значащего "сопровождения".

Я прочитал фразу до конца.
Ещё раз: по моему мнению, работа должна оцениваться исполнителем.
Не менеджером, ни кем-то там ещё, а именно исполнителем.
Чем вас мой ответ не устраивает?

ЮЛ>Вы всегда отвечаете только на то, что хочется ответить вам самому?

Хм. Встречный вопрос: Вы считаете корректным свой стиль ведения дискуссии?
Re[5]: Рассказ о Крутом Манагере
От: RedUser Россия  
Дата: 23.01.15 22:53
Оценка:
Здравствуйте, Юрий Лазарев, Вы писали:

ЮЛ>Здравствуйте, RedUser, Вы писали:


RU>>То есть код подошёл к своему совершенству, осталось только разобраться с некоторыми проблемными, содержащими ошибки, требующими внимания местами?


ЮЛ>По моему, все это место поняли правильно, а вы читали его задом наперед. Вы не араб часом?


Правильно — это как?

Выделенные в моём посте фразы вы относите к одному и тому же куску кода?
Если да, то мне странно, что вы не видите противоречия.
Если нет, то непонятно, почему вы удивляетесь, что недоделанный согласно вашим же словам код коллеги не считают качественным.
Re[10]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 23:05
Оценка:
Здравствуйте, 0x7be, Вы писали:

0>Ещё раз: по моему мнению, работа должна оцениваться исполнителем.

0>Не менеджером, ни кем-то там ещё, а именно исполнителем.
0>Чем вас мой ответ не устраивает?

Тем что вы ответили на свой, но не мой вопрос.
Кстати, кто у вас исполнитель?

ЮЛ>>Вы всегда отвечаете только на то, что хочется ответить вам самому?

0>Хм. Встречный вопрос: Вы считаете корректным свой стиль ведения дискуссии?
Вы всегда уводите обсуждение в сторону?
Re[6]: Рассказ о Крутом Манагере
От: Юрий Лазарев Россия  
Дата: 23.01.15 23:18
Оценка:
Здравствуйте, RedUser, Вы писали:

RU>Выделенные в моём посте фразы вы относите к одному и тому же куску кода?

RU>Если да, то мне странно, что вы не видите противоречия.
RU>Если нет, то непонятно, почему вы удивляетесь, что недоделанный согласно вашим же словам код коллеги не считают качественным.

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

Если же вы считаете, что проект с комментами незавершен, а без комментов — завершен, т.е. сторонник формального подхода, то можете быть уверены, что это пустая отговорка, а как было в действительности — отдельная история.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.