Re[4]: Об инвестициях в качество кода.
От: gecko  
Дата: 04.03.12 18:34
Оценка:
Здравствуйте, _Obelisk_, Вы писали:

_O_>У меня вот племянник написал сочинение страниц на 10, что много для 4-го класса. Все корректно и красиво написано, ошибок не было. Учительница поставила 2 и 5, потому как он написал на совершенно другую тему. Не понял задания.

_O_>Так и программист, может вполне и красиво что-то написать, но совершенно не то, что требуется. Я с таким сталкивался.

Стоило бы, наверное, поставить только 2. А нам-то уж точно никто не будет делать скидку "за старание".
Если код не делает то, что нужно, он не плохой и не хороший, а вообще ничто.
Re[3]: Об инвестициях в качество кода.
От: SomeOne_TT  
Дата: 04.03.12 23:00
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Здравствуйте, kosmik, Вы писали:


K>>вынести в public interface и должен класс быть синглтоном или нет, то код, может быть, получится хороший, но вот продукт — вряд ли. Все-таки time to market очень важен, более того, он иногда важнее того что называют качеством.


ПМ>Думаю, что если квалифицированному специалисту сообщат, что time to market является приоритетом, то ООП — это последнее, что он выберет. Поэтому и вопросов о синглетонах не возникнет.


Вообще-то все техники и языки программирования были придуманы для ускорения процесса разработки либо повышения его надежности.
Re[5]: Об инвестициях в качество кода.
От: Сонный Программист Россия  
Дата: 04.03.12 23:05
Оценка: 1 (1)
Здравствуйте, gecko, Вы писали:

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


_O_>>У меня вот племянник написал сочинение страниц на 10, что много для 4-го класса. Все корректно и красиво написано, ошибок не было. Учительница поставила 2 и 5, потому как он написал на совершенно другую тему. Не понял задания.


G>Стоило бы, наверное, поставить только 2.


Стоило бы поставить 5+. Школа должна развивать детей и поощрять их творческое становление.
А выполнением работы строго по заданию и наказанием при отклонении от задания можно воспитать только поколение болванчиков.
Re[6]: Об инвестициях в качество кода.
От: IObserver Ниоткуда  
Дата: 05.03.12 05:52
Оценка: -1
Здравствуйте, Сонный Программист, Вы писали:

СП>Стоило бы поставить 5+. Школа должна развивать детей и поощрять их творческое становление.

СП>А выполнением работы строго по заданию и наказанием при отклонении от задания можно воспитать только поколение болванчиков.

Нет уж, все правильно поставили. Система и должна "болванчиков" воспитывать -- это ее основная задача. Учатся люди именно для этого -- чтобы подавить в себе индивидуализм и привить исполнительность. Индивидуалами все от природы хотят быть, такие задатки нужно ломать с детства (для системы индивидуалов нужно 1 на миллион, и все места давно забиты).
Re[7]: Об инвестициях в качество кода.
От: Codechanger Россия  
Дата: 05.03.12 06:51
Оценка:
Здравствуйте, IObserver, Вы писали:

IO>Здравствуйте, Сонный Программист, Вы писали:


СП>>Стоило бы поставить 5+. Школа должна развивать детей и поощрять их творческое становление.

СП>>А выполнением работы строго по заданию и наказанием при отклонении от задания можно воспитать только поколение болванчиков.

IO>Нет уж, все правильно поставили. Система и должна "болванчиков" воспитывать -- это ее основная задача. Учатся люди именно для этого -- чтобы подавить в себе индивидуализм и привить исполнительность. Индивидуалами все от природы хотят быть, такие задатки нужно ломать с детства (для системы индивидуалов нужно 1 на миллион, и все места давно забиты).


Не проще ли построить систему, которая поощряет индивидуализм?
Re[6]: Об инвестициях в качество кода.
От: _Obelisk_ Россия http://www.ibm.com
Дата: 05.03.12 07:30
Оценка: +1 -1
Здравствуйте, Сонный Программист, Вы писали:

СП>Стоило бы поставить 5+. Школа должна развивать детей и поощрять их творческое становление.

СП>А выполнением работы строго по заданию и наказанием при отклонении от задания можно воспитать только поколение болванчиков.

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



Душа обязана трудиться! (с) Н.Заболоцкий.
Re[8]: Об инвестициях в качество кода.
От: IObserver Ниоткуда  
Дата: 05.03.12 20:51
Оценка:
Здравствуйте, Codechanger, Вы писали:

C>Не проще ли построить систему, которая поощряет индивидуализм?


Сначала постройте.
Re[8]: Об инвестициях в качество кода.
От: SkyDance Земля  
Дата: 05.03.12 21:59
Оценка:
C>Не проще ли построить систему, которая поощряет индивидуализм?

Проще.
Но в ней некому будет работать — все будут индивидуализмом заниматься.
Re: Об инвестициях в качество кода.
От: __lambda__ Россия http://zen-hacker.blogspot.com/
Дата: 06.03.12 03:00
Оценка: 20 (3)
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Прежде всего, хотелось бы заметить, что инвертировать в качество кода можно по-разному.


Вообще-то, Вы понаписали банальнейшие истины. Зачем?

ПМ>Кто и зачем пропагандирует говнокод и решения от MS? Вот это мне не понятно. Я заметил, что во всяких говноконторах (преимущественно интеграторы и IT аутстафферы) довольно низкий уровень программистов и очень низкое качество кода. Менеджмент там весьма далёк от IT, зачем писать качественный код и как нанимать сильных программистов они слабо себе представляют (кстати, зачем платить программисту много денег — они тоже слабо себе представляют). Пройти собеседование в такую контору очень легко, но нормальному программисту там делать совершенно нечего, я считаю.


Пусть это будет банальной истиной, но ganjustas по своему тоже прав. Говнокод бывает оправдан и бывает нужен. И не всегда говнокод пишут говнокодеры, бывает нормальные программисты пишут говнокод, когда надо. Тот же ganjustas ну явно никак не говнокодер. И списки перевернет и максимальную подпоследовательность найдет. Одно мне не нравится, молодые почитав авторитетного ganjustas посчитают, что смысла им учиться переворачивать списки, учить разные структуры данных и алгоритмы не нужно. Потому что, они молодые и глупые. Знаю, потому, что сам таким был. Теперь я старый и все равно глупый Но понимаю, что все это реально на самом деле надо, даже если они всю жизнь будут говнокодерами в говноинтеграторах.

Расскажу свою историю работы в одной очень крупной компании. Было это года три назад. Пошел туда с нормальной программисткой конторы, где раньше писал медицинский софт. Большая компания к IT отношения не имеет, совсем не имеет, т.к. это энергетическая компания. Пошел туда по причине того, что ЗП было почти в 2 раза выше и гораздо больше перспектив, вплоть до беспроцентных кредитов на покупку жилья.

Для начала об аспектах, не касающихся говнокода. Режим, этот чертов режим! Начало рабочего дня в 8:00. Пару минут опозданий, выговор. Три опаздания, увольнение. Я два раза опаздывал и один раз не заметно опаздал, что не считается Дресс-код, а я ненавижу костюмы, галстуки, брюки. В них банально не удобно, если особенно сидишь целыми днями в офисе. И еще, я не люблю сидеть долго, люблю поразмяться и т.д. Пришел как-то с мячиком маленьким Начал в коридоре его кидать, пинать Конечно же, выговор. А еще, мы как-то с друзьями с разных отделов засиделись в столовой компании. Ну как сказать засиделись, обед с 13:00 начинается, мы начали обедать в 13:00, за 15 минут пообедали и 10 минут просто общались, шутили, смеялись. Там все это время сидела на нас смотрела странная тетя. И вот, на 25-й минуте нашего обеда она подходит и дает нам замечание, что мы не работаем, а сидим тут бездельничаем и еще раз такое повторится, то нас уволят Потом я узнал, это была начальница какого-то финансового отдела.

Ладно, давайте про говнокод. Его там было много и на разных языках. Начиная от Дельфи с его постоянными Access Violation, ASP.NET/C#, 1C, VB. Кстати, лучший код с которым мне пришлось поработать, это как ни странно, было в VB Понятное дело, никто юнит-тестов не писал, вообще, такого понятия как тестирование не было вообще. Вася Пупкин писал код за 2 часа в режиме когда начальница отдела стоит над душой и каждые 15 минут приходит посмотреть, не готово ли все и потом, сразу же этот код пускается в продакшен. Это и биллинг и внутренняя автоматизация. Особо доставляла эта начальница, которая все время стояла над душой, каждые 15 минут. Сама она работала до 2 часов ночи, писала на 1С. Кстати, тот, кто работал до меня, оказывается спрыгнул с окна своего дома, купленного под беспроцентный кредит этой компании. Причины, мне никто не сказал. Но я кажется знаю, причину. Все же, давайте ближе к коду. Такая ужасная лапша была, что врагу не пожелаешь. Goto, глобальные переменные, да и просто каша. Все это напоминало карточный домик. Мои попытки выстроить нормальный процесс разработки, который включает хотя бы минимум тестирования, использование version control & bug tracker'а шли понятно куда. Что самое худшее, от меня требовалось тоже говнокода. Нет, я мог. Но, мое чувство прекрасного не давало покоя. И я решил, ну фиг с ними, буду пока писать говнокод, а параллельно напишу такую штуку, которая автоматизирует все это дело и будет написано нормально. По хорошему, мне требовалось около недели, чтобы автоматизировать этот процесс и уже не надо было писать-то, что они писали каждый раз по новому. И этот день настал, я был горд собой и презентовал свое решение. К своему разочарованию, получил отказ, знаете почему? Никогда не догадаетесь. Мое решение было настолько эффективным, что половины бухгалтеров этой компании можно было увольнять прямо сейчас. Сами понимаете, половину бухгалтеров, никто увольнять не хотел и мое решение было отбраковано. Все это мне напоминало одну большую фабрику, где каждый занят тем, чтобы быть хотя бы чем-то занятым и получать за это деньги. Благо у компании неисчерпаемые денежные ресурсы, получаемые от простого населения, расходы которой можно было оптимизировать на порядки. Общался с ребятами из других отделов, не IT, они тоже говорили, мол, могут запросто треть расходов сократить, что они идут впустую, но никому этого не надо.

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

Ах да, выдержал я в этой компании всего 3 месяца. Это наихудшее место, где я работал. Так вот, резюмируя хочу сказать. Если программист не будет совершенстоваться постоянно, в технологиях, в алгоритмах и не только в этих областях. То в конечном итоге, выбора у него не будет, кроме таких вот говноконтор. Если человек, банально не может перевернуть список, о каком Google, Yandex или даже MS может идти речь?
Computer science is no more about computers than astronomy is about telescopes (c) Edsger Dijkstra
Re[2]: Об инвестициях в качество кода.
От: Undying Россия  
Дата: 06.03.12 03:46
Оценка:
Здравствуйте, __lambda__, Вы писали:

___>Если человек, банально не может перевернуть список,


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

___>о каком Google, Yandex или даже MS может идти речь?


Это тоже сильно бюрократизированные конторы, соответственно с неэффективностью в них тоже все замечательно.
Re: Об инвестициях в качество кода.
От: мыщъх США http://nezumi-lab.org
Дата: 06.03.12 05:20
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Первый способ — это рефакторить говнокод, написанный "профессионалами" не знающими основ cs.

объясните же, наконец, что такое рефракторинг и для чего он нужен? "работет -- не трожь". пример из жизни. при внутреннем тестировании мой модуль неожиданно начал выдавать на серверной стороне ERROR. в силу обстоятельств конкретизация ошибки невозможна и ERROR может означать все, что угодно. от "не удалось выделить память", до "нам передали неправильные аргументы". попытка воспроизведения ситуация на моей стороне ни к чему не привела -- все работает. убили часа два. разобрались -- дефект транслятора. да-да, знаю, что нормальный программист об этом думает в первую очередь. причем, транслятор мы не меняли. переставли две строки в программе (комментарий не в начале, а в конце). и транслятор поехал крышей. причем, как-то нестабильно он поехал. а поскольку он jit, то даже на код не посмотришь. что делать? поменяли транслятор -- заработало.

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

ПМ>Какой из этого следует вывод? Надо нанимать хороших программистов, это выгодно.

ПМ>Причем это очевидно всем крупным успешным компаниям — MS, Google, Facebook, Яндек и пр.
ПМ>специально создают вокруг себя ажиотаж, а потом применяют очень агрессивную методику отбора
ПМ>(кто был у них на собеседованиях, тот знает, в Фесбук сейчас вообще можно попасть только через
другой путь -- через опен-сорс, поглощаемый фейс-буком. не знаю как у вас, а у меня на fb аллергия, хотя технологически это одна из самых продвинутых компаний на данный момент, в которой намного больше R, чем D.

ПМ>Кто и зачем пропагандирует говнокод и решения от MS?

а решения от ms это говнокод? товарищ с васма поражался почему студия на порядок быстрее багдада на следующем коде:


double f(double a)
{
    return (4.0 / (1.0 + a*a));
}
__declspec(dllexport) double pi(int begin,int intervals,int step)
{
     float h = 1.0 / (double) intervals,x;
     static double sum = 0.0;
     int i;
     int t0=GetTickCount();
            for(i = begin; i <= intervals; i += step)
            {
                x = h * ((double)i - 0.5);
                sum += f(x);
            }
            sum *= h;
              int t1=GetTickCount();
    printf("%d\n",t1-t0);
    return sum;
}


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

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

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

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

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

так что давайте уточним о какой ситуации мы говорим? когда начальник дурак или подчиненные идиоты? кто у нас скрывается за кодовым термином "программист"?
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Re: Об инвестициях в качество кода.
От: elmal  
Дата: 06.03.12 06:08
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Прежде всего, хотелось бы заметить, что инвертировать в качество кода можно по-разному.

ПМ>Первый способ — это рефакторить говнокод, написанный "профессионалами" не знающими основ cs.
Месье может дать определение говнокода? А то, лично мне небезосновательно кажется, что у месье под качественным кодом понимается черти какое спагетти — копипаста, где методы под тысячу строк, а то и вообще без методов — все в одном методе. Но зато с черти какой преждевременной оптимизацией, ну и изобилующее собственными велосипедами, которые вставляются копипастой, даже без выделения метода (ибо вызов процедуры — это накладные расходы, а мы боремся за качественный сверхоптимальный код).
Даже скажу почему кажется:
1) Судя по информации, оставленной месье о себе — опыт нулевой. А когда такой опыт, на первое место всплывает так называемая оптимальность, алгоритмы и тому подобное;
2) Неприятие ООП. При этом не заметно, что месье является сторонником функционального подхода. Чую, что императивный подход месье считает серебряной пулей, а все остальное типа придумали придурки, которым за 30 лет;
3) Если в фирме, занимающейся рахработкой корпоративных приложений, на первое место всплывают сложность алгоритмов, обращения велосипедных списков, то вывод только один. В фирме проекты, где нет даже намека на повторное использование кода, где все связано со всем, структурированием, иерархией, инкапсуляцией, модульностью там и не пахнет. Все делается методом копипасты. В результате, если кто то ошибется в алгоритме, это решение расплодится в 100 местах, и в результате поправить будет очень и очень сложно.
Я не могу понять, какой смысл кому то делать настолько черный пиар для BrightConsult, но на месте начальства, я бы все таки проверил своих сотрудников и нашел того, кто дискредитирует компанию. Ибо круче CBOSSа напиарили. Вроде найти такого сотрудника элементарно — уверен, что там максимум один деплоймент инженер в 23 года собеседует сеньеров. Или же месье уволили оттуда, и он таки мстит?
Re[9]: Об инвестициях в качество кода.
От: Der_Ritter Европа  
Дата: 12.03.12 10:45
Оценка: -1
Здравствуйте, Сонный Программист, Вы писали:

/* skipped*/

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

Re: Об инвестициях в качество кода.
От: minorlogic Украина  
Дата: 12.03.12 15:03
Оценка:
Третий способ , находить оптимальное решение для каждой задачи. Существует очень широкий класс задач с сильно различными требованиями к качеству кода. Начиная от "решить одноразовую задачу" вообще без требований к коду, закачнивая софтом критичным к жизни людей. Это для вас новость ?
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re: Об инвестициях в качество кода.
От: Niemand Австралия  
Дата: 13.03.12 09:13
Оценка:
Здравствуйте, Паблик Морозов, Вы писали:

ПМ>Первый способ — это рефакторить говнокод, написанный "профессионалами"


пишу сюда как почетный говнокодер. а по нечетным — хороший программист.

есть еще одно необходимое, но не достаточное условие — давать времени. Я искренне верю что много из тех, кого ругают за кривой код — нормальные люди, умеющие писать приличный код, но в силу разных причин — от лени до спешки — этого не делают. Особенно это проявляется на поддержке, где надо баг закрыть "здесь и сейчас", в маленьких фирмах, где программер не может толком объяснить зачем ему надо время на тестирование, рефакторинг. Или когда меняются требования, а архитектуру менять уже поздно.

как только я начал умножать все сроки своих проектов на два и стремился выкатить релиз за две-три недели до официального запуска — качество кода и стабильность системы возрасли в разы.
If the message above is in English — means I'm wasting my work time and work computer to post here. No hard feelings
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.