Пусть программирует Сережа

17.06.22

Сообщество - О жизни

Вам это знакомо. Должно быть знакомо.

У каждого клиента – свои предпочтения. Не только в выборе автомобиля, блюда на обед или корпоративной информационной системы. Клиенты любят выбирать программистов.

Ну, что программисты разные – ежу понятно. Считается, что клиенты предпочитают профессионалов. Мы тоже так думали, и искренне стремились сделать каждого своего программиста этим самым профессионалом.

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

 

Кто такой Серёжа?

Я буду называть Серёжу Серёжей, потому что он просит называть себя именно так. Не знаю, почему.

Ничего особенного. Отучился в ПТУ (колледже) на программиста, пришёл работать. Попал в отдел сопровождения – где надо «а-а-а-а-быстрее-быстрее-клиент-ждёт». Такой старт во многом и определил стиль программирования Серёжи.

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

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

Клиенты Серёжу полюбили. Руководитель отдела сопровождения – тоже. Но, тем не менее, через три года Серёжа ушёл – в отдел разработки. Туда, где сидят «настоящие программисты».

 

Переход

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

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

И началась дичь. И для Серёжи, и для программистов. Закатывали глаза, заламывали руки, брызгали слюной, бились головой о стену. Но ничего не помогало – говнокод стал частью ДНК Серёжи.

Несчастный очень быстро скатился вниз по показателям. Какую бы задачу ему не дали – ни фига не получалось. Точнее, программирование шло с противнейшим скрипом и затратами колоссального времени остальных сотрудников – приходилось объяснять, ещё раз объяснять, тыкать носом, заставлять переделывать и, в конце концов, забирать задачу и, матерясь, переделывать самим.

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

Позвали начальство.

 

Решение

Начальство было мудрое. С одной стороны, виден полный провал Серёжи во всём «сурьёзном». С другой – бывшие клиенты Серёжи изнывали без него. Ну а чё, подумало начальство.

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

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

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

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

Но начался жесточайший кризис.

 

Кризис

Программисты полезли в сокровищницу Серёжи и ахнули… Не, говнокод-то они уже видали, но чтобы столько, да в одном месте, и как-то это всё взаимосвязано! И, самое поганое – работает!

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

Для программистов это было в новинку. И бесило жутко. Начались скандалы. Брал программист задачу, смотрел, матерился, звал Серёжу и пытался тыкать его носом. Серёжа к тому моменту уже стал чуть смелее, и отвечал просто: «не хочешь – не делай, сам подшаманю». Раз сказал, два сказал – перестали пытаться воззвать к чувству вины.

Ну ладно, сказали программисты. Щас мы покажем – и Серёже, и его клиентам, как надо программировать. И стали молча делать решения так, как положено. Но тут, совершенно неожиданно, взвыли клиенты.

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

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

Фраза «Пусть программирует Серёжа» звучала всё чаще и настойчивее.

Но программисты не сдавались – решили объяснить клиентам, как надо на самом деле. Организовали несколько встреч, собрались, поговорили. Рассказали про архитектуру, стоимость поддержки кода, правильное проектирование, сценарии использования, масштабируемость и т.д. Короче, изложили, что есть «правильно».

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

Под руку попался инструмент планирования загрузки оборудования имени Серёжи – клиент попросил добавить в него новую функциональность. Программисты сказали, что на анализ всего инструмента придётся потратить 10 чел/часов. Но раз такое дело, сделают это бесплатно. Клиент, правда, цифру услышал и запомнил.

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

Насчитали, в итоге, предварительную стоимость в 120-160 чел/часов. Клиент был в шоке – нахера отдавать столько денег за создание с нуля инструмента, который уже давно работает? Программисты пытались объяснить, что это будет правильно. Говнокод обязательно сломается когда-нибудь, не будет масштабироваться, не натянется на него очередное функциональное требование.

Но всё было тщетно. Клиент перестал слушать программистов. Твердил, как заведённый: «Пусть программирует Серёжа». Особенно с учётом того, что Серёжа оценил текущую доработку в 4 чел/часа.

Но программисты не сдавались. Они пошли к начальству.

 

Финал

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

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

Итак, хороший код принёс бы компании 160 чел/часов. Плохой, по оценкам программистов – 50 чел/часов. Отправили цифры начальству, попросили о встрече.

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

Серёжа насчитал 300 чел/часов. И не просто насчитал – принёс документы, которые подтверждали цифры. Чаша весов резко качнулась. Но Серёжа, кроме денег, докинул на неё свои говнокодерские аргументы.

Во-первых, инструмент работал уже через месяц после начала создания. Да, через задницу, но задачи клиента решал. Во-вторых, инструмент продолжал развиваться и выполнять своё предназначение в течение двух лет. Ну да, не развиваться, а «развиваться». В-третьих, ни разу, ни единого разочка, с клиентом не было проблем – ни с инструментом планирования, ни с другими задачами.

Четвёртое добавило начальство – неистовая, слепая лояльность клиента. К Серёже, конечно, но через него – ко всей компании.

Программисты с выводами не согласились, но уже исчерпали все аргументы. Раз такое дело – пусть и правда программирует Серёжа.

 

P.S.

Развитие истории получилось неожиданным. Чутка поостыв, программисты подумали, поговорили, поспорили и… Признали право Серёжи и его говнокода на существование. Решили к нему даже присмотреться. И, по возможности, поучаствовать – очень, почему-то, захотелось и к себе неистовой лояльности.

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

Стали просто разбавлять. Один день красиво программируешь, другой – пускаешься во все тяжкие. Сравнивали дни говнокодерства с мероприятиями вроде Ла Томатины. И, как ни странно, остались довольны.

Во-первых, чутка больше зарабатывали – доработки говнокода требовались часто. Во-вторых, нашли в говнокодерстве профессиональную ценность – лучше понимали, как надо писать код. В-третьих, обнаружили, что и своим клиентам иногда полезно сделать «быстро и точно» - лояльность повышается, а следом – и поток объём задач. В-четвертых, клиенты Серёжи, наконец, сдались и разрешили другим программистам официально решать их задачи.

Теперь можно услышать не только про Серёжу. Пусть программирует Коля, Петя, Вася. Жить стало интереснее и проще.

См. также

"250+ тысяч, в штат и работу пока не ищу": как изменился типичный 1С-ник в 2023 году

О жизни Россия Бесплатно (free)

Подводим итоги работы в 1С за 2023 год. Все о вас: 4 подробных раздела с цифрами, графиками и ужасными цветами диаграмм (должна же где-то быть стабильность).

08.02.2024    21361    Neti    85    

106

Адекватность работодателя. Как её определить? Часть 2. Процесс работы, от испытательного срока до увольнения

О жизни Бесплатно (free)

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

22.01.2024    3459    biimmap    61    

66

Адекватность работодателя. Как её определить? Часть 1. Собеседование, заключение трудового договора

О жизни Конфигурации 1cv8 Бесплатно (free)

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

16.01.2024    4935    biimmap    99    

76

Идеальное место работы для ЗУПера... Какое оно?! Часть 1. Негативные тенденции, ненужные знания.

О жизни Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)

Импортозамещение увеличило потребность в архитекторах, аналитиках, разработчиках 1С, в т.ч. по ЗУП. Все их ищут всеми возможными способами, но не могут найти и не знают, чем же их завлечь к себе!? Давайте разберёмся в этом вопросе!

27.11.2023    4161    biimmap    52    

72

15 лет вместе...

О жизни Сообщество Бесплатно (free)

Прочитав название публикации, мысль возникает о свадьбе... Но речь не об этом!

25.08.2023    2411    biimmap    23    

46

Как изменилось собеседование разработчиков 1С за последний год

О жизни Россия Бесплатно (free)

«Многие кандидаты хотят от собеседования простую вещь: чтобы оно длилось пять минут и брали сразу на 300 000 в наносекунду», — Эльдар Мингалиев, разрабатывает новые форматы собеседований.

22.08.2023    13702    Neti    161    

107

Зачем и как ставить плюсы

О жизни Бесплатно (free)

Не раз сталкивался с тем, что пользователи сайта не очень понимают, как ставить плюсы и зачем. Многие думают, что поставить плюс = добавить публикацию в избранное. В статье будет кратко об этом.

21.08.2023    3551    biimmap    93    

126
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Torin 741 17.06.22 09:45 Сейчас в теме
Костя встал на место,
Костя всё достаточно,
Пам-пам-пам-пам,
Серёжа, молодец!
user2002096; DrAku1a; Dmitri93; sm.artem; myoker; igor_demin@mail.ru; portwein; al_zzz; Созинов; user603532_fan_club_chelsea; Perfolenta; Senator_I; Ali_q; Dimbayyyy; vld1973; CheBurator; 1c-intelligence; +17 Ответить
2. klaus38 17.06.22 10:06 Сейчас в теме
Я когда лезу в свой код, пятилетней давности к примеру, всегда сомневаюсь, а не Сережей, меня тогда звали?
Teut_Vlad; user1706724; Serg O.; user2002096; DrAku1a; MKassatkin; xantif_2000; teplova_ok; CheBurator; Helly_ti; berserjk; Dmitri93; Krasnyj; user618575_VladimirGluhov.1c; korppinen; babys; I_r_a; Tarlich; Upiterus; Serge R; m_aster; biz-intel; gigabyte_artur; user1346935; garik79; m1_1976; t278; Andy_NTG; rhtr; user1315860; Созинов; MamakovTA; NiGMa; popiksergey; vakham; maksa2005; amd1986; SP2000; RocKeR_13; Ponommax; Ali_q; mitia.mackarevich; Jeka44; AntonProgma; +44 Ответить
110. DrAku1a 1679 23.08.23 16:12 Сейчас в теме
(2) Типа, запросы в цикле, разыменования справочников и документов. Не "по канону" и без описания.
Но удивительно при этом - код работает и не сильно нагружает систему... Клиент сервер помощнее поставил - и даже не знает, что что-то там написано криво.

Это как история развития отчетов - вначале были примитивные формы (v77), написанные под пользователя, где он управляя 1-2 галочками или полями ввода настраивал что ему нужно на выходе. Порой, в таком отчете было 3-4 или даже больше кнопок "Сформировать" и под каждую - свой отдельный алгоритм написан и свой макет нарисован. И всем пользователям, кроме 1-2 бухгалтеров, было удобно.
Потом появился "Универсальный отчет" на построителе, с кучей настроек, который надо было ещё настроить под себя каждый раз и сохранить настройки. Неудобно, надо понимать что как устроено в БД.
И только потом, появилась СКД, внутри которой - варианты отчета (несколько предопределенных настроек отчета + того, какие поля настроек показывать в форме самого отчета). Получилось сделать почти как в v77.
3. AntonProgma 46 17.06.22 10:49 Сейчас в теме
Пишите хороший код, а плохой не пишите!
G13ma; klaus38; EvgeniyOlxovskiy; NeLenin; Ali_q; sapervodichka; +6 1 Ответить
12. sapervodichka 6697 17.06.22 11:31 Сейчас в теме
(3) а мне ещё нравится из этого мультика: "Сам испёк, сам и кушай!"
Прикрепленные файлы:
IT_GG; Tarlich; Brook; klaus38; Igorro82IT; dvsidelnikov; EvgeniyOlxovskiy; Serg O.; vakham; +9 Ответить
4. sinichenko_alex 178 17.06.22 10:52 Сейчас в теме
Был у нас один такой Антон Сережа....
5. пользователь 17.06.22 10:53
Сообщение было скрыто модератором.
...
6. vld1973 85 17.06.22 11:01 Сейчас в теме
Серёжа между прочим не только со стороны клиента, но и с точки зрения владельца компании самый полезный сотрудник, так как приносит больше всего прибыли (несмотря на говнокод) :)
Teut_Vlad; DrAku1a; Helly_ti; v.l.; DimaP; tsugancov; chg; babys; Tarlich; biz-intel; Andreeei; oleg-m; Serg O.; Loginoff92; popiksergey; Ali_q; +16 Ответить
25. Serg O. 224 17.06.22 17:45 Сейчас в теме
(6) быстро весело
с юморком и матерком...

это всё хорошо работает на "свежей" (типовой) конфигурации - там куда костыли не вставь, остальное всё
разгребай потом всем коллективом
31. shard 279 18.06.22 23:12 Сейчас в теме
(25) особенно когда впоследствии регистры накопления перестают закрываться и итоги пухнут со страшной скоростью. А в один непрекрасный момент приходится заменять срез остатков этого РН на разницу прихода и расхода некоторого набора измерений с начала времен. И запрос по одной(!) номенклатуре начинает 2 минуты 40 секунд выполняться. Лично видел такую базу, которую до этого состояния целый франч из таких "сереж" довел (но это только технические "изюминки", в учете там вообще мрак был - никто его даже не хотел замечать).
master555; +1 Ответить
41. tindir 20.06.22 07:04 Сейчас в теме
(31) все что вы описали отлично укладывается в "все потом, не сейчас, а сейчас хочу я впляс". Самый главный прекодес для клиента это незаменимость Серёньки, а так же в "один прекрасный момент" нелинейный рост затрат на сопровождение кода. Мне сейчас приходится "на заводе" обьясняться с заказчиком, почему "все так долго", а вот раньше Серунчик-дорогой-любимый-умница делал все быстро и легко. Он быстро и легко, "переписал" систему ценообразования, легко "исправил" долгую запись документов заказКлиента и реализации, сделал "легкий" отчет по остаткам на складах (без этих ваших сложных условий(с)). И все это был здорово, ровно до того момента, пока у клиента не появился "новый" продукт, который адмнистрируется-продается чуть сложнее.
user1706724; +1 Ответить
45. shard 279 20.06.22 14:59 Сейчас в теме
(41) 1 в 1. Пытался проводить аналогию с наркоманом (ибо медики были): либо лечить (долго и тяжело), либо дать очередную дозу (в надежде что передоза не случится). С умным видом кивали, соглашались, а через 2 минуты (засекал) требовали "здесь и сейчас в пляс".
7. usd1001 17.06.22 11:10 Сейчас в теме
Есть мнение, что гов*окод - это лишь повод самоутвердиться для особо заносчивых гуру. Масштабируемость, архитектура и 1С - найдите, как говориться, лишнее слово.
Я знал двоих персонажей, которые разносили чужой код. Оба с мерзким характером, нелюдимы. Было ощущение, что они нашли для себя оружие, которым отбивались от внешнего мира - это желчь. Но стоит отдать должное, один из этих персонажей профессионал своего дела, который соблюдал собственные рекомендации, а у другого нет ничего, кроме мерзкого характера.
user1706724; user1070856; Yashazz; dnikolaev; +4 Ответить
10. dnikolaev 177 17.06.22 11:28 Сейчас в теме
(7) точно точно) в гуру впринципе чужой код- говнокод по определению
105. v.l. 434 13.08.22 19:35 Сейчас в теме
(10) притом с фатальной ошибкой - его писал не гуру.
8. Aftee 17.06.22 11:20 Сейчас в теме
Я чет не пойму. То ли гуру не смогли объяснить клиенту, что поддержка грамотно написанного кода в дальнейшем будет стоить 2 часа гуру, вместо 4 часов Серёни, то ли гуру не такие уж и гуру. А может Серёга своего рода Кличко в мире 1С? Его код настолько гениален, что понять его могут лишь единицы.
9. KOTzilla 15 17.06.22 11:26 Сейчас в теме
(8) «А сегодня в завтрашний день не все могут писать код. Вернее писать код могут не только лишь все, мало кто может это делать»
Teut_Vlad; user1706724; Serg O.; DrAku1a; user662573_rx-tx; svetlitsky_sv; user979386; CHSN8; m_aster; babys; Tarlich; PLAstic; Jimbo; user1346935; Senator_I; morin; Kutuzov; popiksergey; maksa2005; Aftee; +20 1 Ответить
95. tsugancov 04.07.22 13:31 Сейчас в теме
(5)

(8) Тока "Гуру" порой кричит, что это не возможно, а джуниор на джаве или на котлине с легкостью это невозможное решает))))
user1706724; v.l.; +2 Ответить
104. Krasnyj 1282 22.07.22 01:27 Сейчас в теме
(8) Объяснять клиенту - это отдельная компетенция, зависящая от профессионализма программиста чуть менее, чем никак.
Helly_ti; +1 Ответить
11. morin 57 17.06.22 11:29 Сейчас в теме
Самообучился и свалил на место по козырнее. Вертел этот Сережа своего франча на одном месте!
13. frkbvfnjh 785 17.06.22 12:26 Сейчас в теме
Отучился в ПТУ (колледже) на программиста, пришёл работать. Попал в отдел сопровождения – где надо «а-а-а-а-быстрее-быстрее-клиент-ждёт».
- это вообще законно? сажать человека который познает азы программирования в отдел где нужно решать задачи быстро? Так то нужно было в отдел программистов с наставником, а там где быстро, нужны опытные. Что то так себе компания, удивительно как Сережа вообще адаптировался и не покончил жизнь самоубийством, какие вообще к Сереже могут быть претензии после такого? Да ему памятник при жизни нужно поставить, а руководителя компании на лоскуты пустить, ну я так думаю...
Teut_Vlad; user1706724; Helly_ti; svetlitsky_sv; v.l.; Krasnyj; CHSN8; silverr; Aleksey_Ekb; EvgeniyOlxovskiy; Loginoff92; +11 Ответить
65. tindir 21.06.22 05:54 Сейчас в теме
(13) Даже если у тебя тренер по плаванию олимпийский чемпион, ты не научишься плавать на берегу =) я помню как начинал во франче. ребята пытались сюсюкать и "давать не сложные задачи". Что вопревых снижало мою норму-час, во вторых давало около нулевой выхлоп по опыту. По этому пошел к ЗУП/ЗКБУ и стал настоятельно просить "взять на проект". Ох и напорол я им тога =) Но это была важная ступенька в эффективности и полезности.
Helly_ti; 5sreda; +2 Ответить
92. user705698_bursev 29.06.22 09:57 Сейчас в теме
(13) Я тоже работал во франче, где младших/начинающих специалистов сажали именно на поддержку. Это не подразумевало, что все задачи они должны были решать сами, главная задача - это принять от клиента проблему. А решать уже это либо старший будет делать, либо сам начинающий, когда станет немного поопытнее. С одной стороны хорошая школа, а с другой поддержкой редко кто любит заниматься, видимо, поэтому и кидали тех, кто еще молод и полон желания спасти мир:)
Helly_ti; +1 Ответить
14. biimmap 1827 17.06.22 12:31 Сейчас в теме
Пристрелите Серёжу! Каждый в своей компании и в себе лично. Программировать качественно гораздо быстрее!
Как-нибудь напишу на эту тему статью, а то уж больно надоели говнокодеры.
tindir; EvgeniyOlxovskiy; SP2000; +3 1 Ответить
15. Petr54-ru 90 17.06.22 12:32 Сейчас в теме
Сережин подход был описан в модной в начале нулевых книжке автора Кент Бек "Экстремальное программирование". Не хватает только написания тестов и программирования парами - но это походу из за нашей 1С специфики. Истоки того, что потом станут называть "иджайлом".

Мне в то время довелось поработать в проекте, который делался по это методологии, было круто. Ну и такой подход безусловно имеет право на жизнь при высоком уровне лояльности заказчика. Например для внутренней разработки, если на работе не много политики, он на мой взгляд является оптимальным.
user1070856; EvgeniyOlxovskiy; NiGMa; +3 Ответить
16. Perfolenta 204 17.06.22 13:24 Сейчас в теме
Любой код пишется для того, что бы удовлетворить клиентов... если клиенты любят и ценят Серёжу, значит он и есть самый лучший программист...
А правильные, но не признанные клиентами "гении" и "академики" от программирования, пусть задумаются чего им в действительности не хватает для конкуренции с Серёжей...
Как и любой другой товар, программный код имеет показатель цена\качество... а любой продавец товаров Вам скажет, что большинство продаж это нижний ценовой сегмент... выбор большинства покупателей стремится к показателю цена, а не к качеству... поэтому, если заказное программирование это Ваш бизнес, то Вы не можете не учитывать психологию покупателя... говнокод был, есть и будет всегда, как и остальные говнотовары...
Teut_Vlad; user1706724; Helly_ti; Дон Кихот; svetlitsky_sv; v.l.; ArchAhper; djut77; Krotov_Valery; user1070856; hiduk; user1346935; lunjio; Senator_I; Loginoff92; +15 Ответить
17. info1i 223 17.06.22 13:44 Сейчас в теме
В статье указано, что инструмент и код работает стабильно - случай редкий, так как на практике все наоборот: код падает, процессы заказчика сбоят, заказчик злится со словами "Сережу не привлекать к нашим задачам, только профи!".
И если бы так ценились низкоквалифицированные программисты... Посмотрите на зарплаты. Все хотят высококвалифицированных. Так что статья расходится с реальностью.
user1706724; sashocq; vladimir.badaykin; PLAstic; Yashazz; EvgeniyOlxovskiy; +6 Ответить
18. Petr54-ru 90 17.06.22 14:48 Сейчас в теме
Еще у меня сложилось впечатление, что Иван специально вбросил туда "говнокод", как красную тряпку для отвлечения внимания на негодный объект. Основной момент - за счет чего и как персонаж Сережа создает для заказчика ценность.

Во-первых, инструмент работал уже через месяц после начала создания. Да, через задницу, но задачи клиента решал. Во-вторых, инструмент продолжал развиваться и выполнять своё предназначение в течение двух лет. Ну да, не развиваться, а «развиваться». В-третьих, ни разу, ни единого разочка, с клиентом не было проблем – ни с инструментом планирования, ни с другими задачами.

Четвёртое добавило начальство – неистовая, слепая лояльность клиента. К Серёже, конечно, но через него – ко всей компании.


Ну и там совершенно не обязательно должен быть совсем злой говнокод. Что там 100% неизбежно должно быть, что должно было кодеров в этой сказочке выбешивать - изменения кода скорее всего были оформлены в виде патчей и оставлены "закоменченные" куски старого кода, чтобы можно было без усилий вернуть все в зад. Потому что так быстро и дешево, и вероятность того что придется это переделывать относительно низкая.

Это как в известном пирожке

Бог создал труд и обезьяну
Чтоб получился человек
А вот пингвина он не трогал
Тот сразу вышел хорошо

Так и тут, считаем что создаем пингвина и он выйдет хорошо сразу.
DrAku1a; Helly_ti; +2 Ответить
19. morin 57 17.06.22 15:10 Сейчас в теме
Покажите код тех самых "бешеных профи". А то может они "профи" только на желтой бумажке...
Teut_Vlad; user1706724; v.l.; Krasnyj; +4 Ответить
20. johnnyshut23 71 17.06.22 16:12 Сейчас в теме
Иван исчерпал свои г-рассказы и решил сказки писать. Поздравляю, верной дорогой идете, на место Кинга метите.
user1706724; Dmitri93; Moto45; Maxim_Zuev; vladimir.badaykin; PLAstic; sinichenko_alex; oldcopy; EvgeniyOlxovskiy; +9 1 Ответить
80. Maxim_Zuev 22.06.22 14:05 Сейчас в теме
(20) На потеху почтенной публике. Почему бы и нет. Кроме него все равно никто этим не занимается
Дон Кихот; Krotov_Valery; +2 Ответить
21. swimdog 765 17.06.22 16:16 Сейчас в теме
Я вижу 2 плюса от работы Сережи
1) умение общаться с клиентом. Видимо у профи таких навыков нет.
2) делать MVP и потом его дорабатывать. Деньги размазываются по периодам и воспринимаются заказчиком лучше.
Да и польза от продукта появляется быстрее.

А в целом да, не дай бог работать после такого Сережи)
kg0; Krasnyj; babys; EvgeniyOlxovskiy; shard; Senator_I; opx; +7 Ответить
27. opx 794 17.06.22 17:57 Сейчас в теме
(21) Если выбирать из 2 типов:
1. Кто умеет общаться
2. Кто хорошо делает работу

Общество очень часто выбирает первого, т.к. не могут оценить профессионализм зачастую.
Общение оценить легче
Helly_ti; Krasnyj; ArchAhper; user1346935; Serg O.; +5 Ответить
93. Serg O. 224 29.06.22 19:15 Сейчас в теме
(27) "умеет общаться"... это теперь отдельная специализация - Аналитик
делать что-то он при этом и не должен, а делают - другие!
так и тут - говорить хорошо, а делать (и переделывать) за него - придётся другим!

не согласен - Люди и компании (которые ценят своё время и силы)
обычно предпочитают вариант 2) - чтобы работа была сделана, а не "пообщались хорошо"

а кто хорошо общается и плохо делает работу - называется "пустобрёх"
и это "мягкое" название, обычно говорят резче и нецензурнее
22. avbolshakov 17.06.22 16:40 Сейчас в теме
- Правды характеров нету!
nbondarenko; +1 Ответить
23. NiGMa 17.06.22 16:54 Сейчас в теме
Лет так 15 назад у одного из моих Заказчиков была Задача (ещё на 7.7), и начал я её кодить... так красиво кодил...
Но Заказчику надо было поскорее, поэтому мои красочные рассказы об "удобной форме с удобными кнопками и мульоном настроек под капотом" его не порадовали, а расстроили.

И услышал я от него фразу, которую теперь применяю постоянно:
"НЕ НАДО ГЛОБАЛИТЬ!!!"
AlbinaAAA; Helly_ti; v.l.; mikl79; user1070856; Petr54-ru; +6 Ответить
24. Petr54-ru 90 17.06.22 17:08 Сейчас в теме
(23)

И услышал я от него фразу, которую теперь применяю постоянно:
"НЕ НАДО ГЛОБАЛИТЬ!!!"


Хорошее выражение, мне понравилось.

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

По деньгам, реализация второго подхода будет стоить раза в три дороже, чем первого. Хотя решение лежит не в области разработки, а на административном уровне.
Helly_ti; +1 Ответить
32. shard 279 19.06.22 00:22 Сейчас в теме
(24) обычно т.н. "защита от дурака" занимает 80% кода. И сделать ее можно, но только от неизобретательного =)
26. Serg O. 224 17.06.22 17:53 Сейчас в теме
говнокодить и вставлять костыли - хорошо на чистых (типовых) конфигурациях,
и не очень долго...
а когда таких "Серёжей" не 1, а человек 5-6 и поработав полгода они уходят...

остальным - придётся разгребать за ними всё это барахло!
А когда это надо ещё и обновлять каждый раз...
с каждой итерацией это всё сложнее и сложнее...

И в один прекрасный момент - не очень-то хорошо получится
придётся бесплатно! переписывать "как надо", но уже другим!
и придётся переделывать ВСЁ с нуля !

для руководителей - надо ЭТОТ аргумент привести - что переписка займёт в 3-5 раз больше времени и сил более квалифицированных программистов - и оплачивать ЭТО будет руководитель из своего кармана!
nbondarenko; sashocq; EvgeniyOlxovskiy; shard; opx; +5 Ответить
28. opx 794 17.06.22 18:00 Сейчас в теме
Я бы сказал так:
Сережа - профессионал технического долга.
Такие обычно нравятся заказчикам и не нравятся другим программистам.
Krasnyj; ubnkfl; NiGMa; +3 Ответить
29. Lapitskiy 1057 18.06.22 12:38 Сейчас в теме
Серожа - это прообраз "индуса- спагетти_кодера".
Они незаменимы. Когда надо быстро сляпать прототип, и показать заказчику.
Потом, когда заказчик будет доволен как выглядит прототип, "индуса" пошлют на новый прорывной стартап, а вместо него уже за дело примется команда профессионалов.
Все на своем месте, все - довольны. Главное - осознать эти роли, и не перепутать!
Helly_ti; svetlitsky_sv; ubnkfl; Артано; EvgeniyOlxovskiy; papami; +6 Ответить
30. gybson 18.06.22 22:55 Сейчас в теме
Если Серёжа пишет код под конкретного клиента и клиенту нравится, то Серёжа умный. Если остальные пишут свой стройный код не как массовый продукт, где Серёжам нет места, то они просто полные идиоты. Гораздо тупее Серёжи.
33. Samarin 96 19.06.22 10:09 Сейчас в теме
Всем привет! Меня зовут Сережа. Больше 10 лет работал в сопровождении, далее "подрос" и лет 8 работаю в отделе разработки. Вполне же реальный персонаж.
Все вполне объяснимо. Многие сопровожденцы далеко не программисты и "что-то делать в конфигураторе" учатся на клиентах. Клиентам важно решение, которое их устроит и побыстрее, и еще подешевле. Обычно как: дешево и быстро? значит - некачественно. Так и есть с точки зрения дальнейшего сопровождения, оптимальности работы и прочего. Но клиента устраивает - оно работает и ладно. Клиенты не программисты и не знают (да и не хотят знать) всех тонкостей разработки и поддержки. Им важно быстрое и рабочее решение их проблемы. И за это они платят. Чаще всего их волнует результат "здесь и сейчас", а дальше будет дальше, как-нибудь обновится, поддержится.
"Рассказали про архитектуру, стоимость поддержки кода, правильное проектирование, сценарии использования, масштабируемость и т.д. Короче, изложили, что есть «правильно»." - вот это вообще было зря. У них уже есть Сережа, который им делает, оно работает и им выходит гораздо дешевле. Так что ваше "правильно" оно, может быть, качественно и дорого, но клиенты скорее подумают о том, что их разводят на деньги, потому что у них есть свое видение "правильного". Доводы "У Сережи говнокод!" вообще для клиентов пустой звук.
Клиенту небольшому хочется недорогой поддержки, лишь бы работало. Вот когда они вырастают и начинаются проблемы с производительностью - тогда и есть смысл приводить к ним настоящих программистов, экспертов и архитекторов, но это будут совсем другие деньги.
Helly_ti; Krasnyj; babys; mailtomm; mikl79; Serg O.; +6 Ответить
39. papami 55 20.06.22 05:44 Сейчас в теме
(33)
Всем привет! Меня зовут Сережа.

Похлопаем Сереже.

(33)
Вот когда они вырастают и начинаются проблемы с производительностью - тогда и есть смысл приводить к ним настоящих программистов, экспертов и архитекторов, но это будут совсем другие деньги.


И вот в этот момент приходится все переписывать, т.к. код не читается вообще и выясняется, что проблема не в производительности в каком-то конкретном месте. А там все так написано.
И еще такое бывает, когда не клиент "вырос", а Сережа (с убытием в другой город, профессию, и т.д.)

Скупой платит дважды
96. pro-rok 295 14.07.22 07:58 Сейчас в теме
(39) Надо не забывать, что когда бизнес растет денег как всегда нет, а процессы меняются достаточно часто. И надо дешево и завтра. Заморачиваться по поводу архитектуры никто не хочет. А вот когда бизнес вырастит у него появятся деньги, возможно вообще перейдет на другую версию ПО или заплатит за оптимизацию. И пускай заплатит дважды, но зато он в свое время получил что хотел, и получил быстро.

Самое важное, подавать вовремя нужное решение, а не идеальное.
Helly_ti; svetlitsky_sv; +2 Ответить
98. papami 55 14.07.22 10:21 Сейчас в теме
(96)
Самое важное, подавать вовремя нужное решение, а не идеальное

Важно для кого?
99. pro-rok 295 14.07.22 20:12 Сейчас в теме
(98) важно для бизнеса клиента. Особенно если этот бизнес активно развивается. Если сделать мегакачественно но через три месяца, то возможно результат будет не тот. А вот если решение заработает через три дня, пускай не идеально, то бизнес возможно на этом заработает.
Helly_ti; Krasnyj; +2 Ответить
100. papami 55 14.07.22 20:44 Сейчас в теме
(99)
Мы это должны клиента спросить или за него сами решаем? Как ему это надо.
И почему качественно обязательно дольше?
Возьмем обычный запрос. Его можно написать правильно или неправильно. Банальное размещение отборов в правильном месте занимает ровно столько же времени как и в неправильном. И на выходе будут одинаковые данные.
И даже работать они будут одинаково быстро в первое время.
Helly_ti; +1 Ответить
101. pro-rok 295 15.07.22 08:43 Сейчас в теме
(100)
Спросить обязательно.
Качественно не обязательно дольше, но в большинстве случаев это все таки дольше.
С запросом согласен полностью. Неверное размещение отборов это не только говнокод, но и безграмотность программиста. А мы говорим не о безграмотности, а о говнокоде.

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

А есть быстрый вариант - когда не вникая особо в процесс оформления заказа, на "коленке" обсудим с разработчиками сайта структуру, приступаем к программированию. Данную обработку будем допиливать и допиливать десяток раз, отлавливая по ходу ошибки. Скорее всего код будет ужасен, хотя возможно изначально он был и не плох. Но множество заплаток, которые ложатся друг на друга сделают код не оптимальным. Тем более все заплатки нужно делать быстро, так как заказ оформлен, а в систему не грузиться и все ждут, когда программист допилит загрузку и можно двинуться дальше.
В результате получаем говнокод, но загрузка может начать работать уже через день-два после старта работ, криво косо, но работать и приносить пользу бизнесу. И после "тестирования" на реальных данных, обзаведясь кучей заплаток начнет работать вполне успешно.

Будет ли вариант два дешевле? Это неизвестно. Но если клиенту критична скорость, то вариант имеет право на жизнь. Если клиент готов потратиться на оптимизацию кода, то можно это сделать потом, когда все заработает. Хотя я таких клиентов встречал крайне редко.
102. papami 55 15.07.22 10:03 Сейчас в теме
(101)
Если я буду со стороны заказчика - вы мне не сдадите работу просто)
Сейчас есть проект, в котором я представляю другую сторону.
Началось в октябре 2021, когда меня попросили проверить сделанную интеграцию 1с с Битрикс24.
Смотрю, а там php-скрипт "посередине" (на сервере с 1С должен работать). Спрашиваю зачем, а они типа так все реальные пацаны делают. Это было только начало)))
Убрал за них завязку на скрипт. И дальше одно за другим. Короче цифры сделок до сих пор некорректные. Должны были все сдать в течении месяца))))).
Там работы было часов на 40. Люди умудрились развезти это на много месяцев. Я не знаю доплачивают ли им за исправления, но все это время интеграция не работает.

Был другой случай, когда был сделан обмен, и спустя полгода выяснилось, что сумма без НДС при передаче считается в другую сторону))))) Потом вылезали другие косяки, а потом еще. И через какой-то момент меня подключили к переговорам по согласованию этого же подрядчика на проект в другом месте. Я просто сказал, что их нельзя брать и просто расписал всю прелесть их подхода и перспективы гарантированных проблем.

Был еще случай, когда чел написал ПО (не на 1с) и через некоторое время предложил продать конторе сервер, т.к. тот что был не тянул. Ну как бы решение работало, сделано было быстро, но требовалось заменить сервер.
Позвали посмотреть. Выяснилось, что его продукт задр утомляет IIS запросами. По сути DDOS-ит, т.к. просто код так написан.

Есть просто связь между подходом к делу и результатом.
Нужно развиваться как профессионал.
Клиент сейчас стал умнее. Даже здесь в тендерах можно найти запросы на проверку чужого кода. Придет время, к вам тоже придут)
Helly_ti; +1 Ответить
108. svetlitsky_sv 16.09.22 11:59 Сейчас в теме
(96) Вот как с языка снял :)
Попробуйте кто-нибудь клиенту, у которого 1-2 точки прокинуть мысль о продукте стоимостью 10 месячных оборотов этих точек :) Может он закроет эти точки через полгода. Зачем сильно заморачивать продукт для такого клиента "всякими" архитектурами?
Подрастёт клиент, подрастут требования - поймет, что может освоить более серьёзный продукт и закажет новый, дорабатывая на старом. Это же эволюционный процесс как со стороны клиента, так и со стороны программиста.
У меня опыт работы более 15 лет и я многое видел :) Видел, как сделанный на коленке за месяц-полтора продукт зарабатывал в 10 раз больше своей стоимости, столько же сколько и другой - профессиональный. Видел как продукт, который разрабатывался на заре становления предприятия и дошедший до определенного уровня, остановился в развитии и его функционала хватает уже 5-7 лет без доработки... Потому что серьёзный продукт со свистелками и перделками стоит как боинг. Из-за наличия в каждом проекте аналитиков, программистов, тестеров и прочих специальностей продукт набирает денежный вес, а нужно всего то базовый функционал.
CheBurator; pro-rok; +2 Ответить
34. Артано 760 19.06.22 10:09 Сейчас в теме
Читаю Ивана и вижу, что в данном рассказе нет стороны, которой бы можно было сочувствовать и воспринимать "хорошей" стороной конфликта. Ибо стороны представляют собой почти идеальные представления двух противоположных подходов к работе: плохо и быстро против долго и идеально. Как задолго до Эскобара говорил Иосиф Виссарионович: "Оба хуже!"

Подход "Сережи" безусловно плох и в конечном счете как и показано в рассказе стоит дороже всем - и клиенту и задействованным специалистам. Но идеалистичным перфекционизмом это не лечится. Это как лечить грибок ногтей ампутацией. Любое легаси, на то и называют легаси, что ты или отказываешься от него совсем или как-то пытаешься с ним жить: изолируешься, понемногу рефакторишь изолированные и декомпозированные фрагменты, если текущие задачи требуют модификации этих участков кода. Ну или в запущенных случаях просто параллельно делаешь своё решение "сбоку", которое постепенно будет перехватывать функциональный контроль.
35. biimmap 1827 19.06.22 18:58 Сейчас в теме
(34) вот не согласиться хочется с данным утверждением. Фишка в том, что СРАЗУ писать качественно это не только быстрее, но и вполне реально для разработчиков любого уровня.

Я привык решать задачу так, чтоб больше не слышать о ней до конца проекта. Точно наверно напишу как нить об этом статью с кучей примеров из практики.
46. oldcopy 173 20.06.22 15:00 Сейчас в теме
(35) А вот здесь мы приходим к вопросу: что такое писать "качественно". Что возьмем за эталон и поместим в палату мер и весов?

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

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

Покупать для этого грузовик с манипулятором излишне. Хотя "по науке" все правильно и дважды платить не придется. Только вот никто не хочет думать, что огород может так и остаться на 6 сотках и этот грузовик нафиг не сдастся, разве что по праздникам девок по деревне катать.
Helly_ti; user840914; pro-rok; s98; user1254376; user1070856; Артано; +7 Ответить
48. biimmap 1827 20.06.22 15:06 Сейчас в теме
(46)
Что возьмем за эталон


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

Конечно же материал будет некоторым образом идеализирован. А дальше каждый сам принимает для себя решение - нужно ему так? полезно?
50. oldcopy 173 20.06.22 15:12 Сейчас в теме
(48) Качество не может быть не связано с заказчиком (ну разве что берем идеального заказчика в вакууме).

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

Делать иначе - это или бесполезно тратить свое время, или разводить заказчика на лишние деньги. Оба варианта плохие.

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

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

Варианты:

а) сесть и разобраться с правами, долго, дорого.
б) УстановитьПривилегированныйРежим(Истина) - быстро, дешево и эффективно.
pro-rok; Jimbo; +2 Ответить
52. biimmap 1827 20.06.22 15:16 Сейчас в теме
(50) Давайте будем дискутировать по факту написания статьи. Первая попытка написать на эту тему у меня уже была... Хочу под другим углом ещё раз взглянуть на этот вопрос.

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

Именно на это и хочу нацелить статью, чтоб было меньше дефективных решений!
54. oldcopy 173 20.06.22 15:25 Сейчас в теме
(52) Ошибочный именно первый вариант. Так как чтобы реализовать все по уму нужно прежде всего разобраться в текущих правах кассира, почему они именно такие и что ему можно делать, а что нельзя. Сами вы этот вопрос не решите, придется колупать мозг заказчику.

Потом нужно найти и дать нужные права роли. Это как раз самое простое.

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

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

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

P.S. Был у меня один молодой коллега, который с первого дня решил все делать правильно, через три месяца его из конторы уволили с формулировкой "дурачок какой-то, нам тут работать надо, а не в его игрушки играть".
Helly_ti; Ashandy; Krasnyj; pro-rok; s98; user1070856; +6 Ответить
56. biimmap 1827 20.06.22 15:35 Сейчас в теме
(54) Почему-то мне кажется, что Вы относитесь к людям, которые при общении на тему качества смотрят только на стоимость и другие аргументы не воспринимаете.

Дело в том, что я уже больше 10 лет занимаюсь разгребанием говнокода. И этот говнокод в длинную имеет космическую стоимость. То о чём я говорю не касается вот таких мелких задач. Сам не занимаюсь такими. Самая маленькая задача, которой я занимаюсь занимает обычно 2 недели. чаще месяц-два. А обычная для меня задача длится до полугода.

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

ps: может зря уволили коллегу? Желание делать качественно очень полезно на проектах!
59. oldcopy 173 20.06.22 15:44 Сейчас в теме
(56) Подобные моменты выходят и на "серьезных" проектах. А сеть торговых точек на обслуживании может и поприбыльнее полугодовых проектов оказаться.

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

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

Любая задача должна исходить из решения проблемы заказчика, на том уровне, на котором заказчик находится. А с позиции ваших сияющих высот: заказчик либо покупает совершенно не нужный ему грузовик, либо вы с ним даже разговаривать не будете.
s98; user1070856; +2 Ответить
61. biimmap 1827 20.06.22 16:14 Сейчас в теме
(59) в решении задач я руководствуюсь сценариями, общепринятыми подходами к решению задач, стандартами разработки.

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

А те кому не надо, пусть берут Серёжу и пусть он себе говнокодит на здоровье!

Именно поэтому у меня и есть желание написать материал, привести примеры, обосновать почему писать качественно - это ВЫГОДНО! Причём выгодно именно заказчику. Ярых говнокодеров не переубедить. От них можно только избавляться на проектах. Но очень много тех, кто просто не знает как делать качественно. Вот это как раз моя аудитория + ессно те кто является заказчиками и терпит большие убытки от говнокода..
58. shard 279 20.06.22 15:42 Сейчас в теме
(50) (56) есть еще третий вариант, как раз говнокода: выдать кассиру полные права, "сережа" поступил бы именно так.
Вариант с УстановитьПривилегированныйРежим в печ.форме как раз таки оптимальный, т.к. в этом случае не будут усложняться запросы на чтение фиксированных (необходимых для печ.формы) данных, особенно при пакетной печати. зы: Но можно эту доработку непосредственно в конфу внести, включив возможность изменений, а можно расширением или внешней печ.формой - первый способ быстрее, зато второй правильнее.
97. pro-rok 295 14.07.22 08:06 Сейчас в теме
(58)
есть еще третий вариант, как раз говнокода: выдать кассиру полные права, "сережа" поступил бы именно так

Не думаю что третий вариант это вариант Сережи. Это то что говнокод, это в принципе ошибка.
49. shard 279 20.06.22 15:10 Сейчас в теме
(46) немного не точно, имхо. Можно и тачкой, и грузовиком. А можно тротиловой шашкой урожай и достать (из земли), и доставить (почти куда надо, если с размером и направлением подгадать). А вот думать что вместо урожая на выходе может каша с примесью щепок собакиной будки получиться - это долго и дорого) зато эффективно))
51. oldcopy 173 20.06.22 15:14 Сейчас в теме
(49) Т.е. вы считаете покупку грузовика для перевозки ведра помидоров и двух ведер картошки на базар оправданным вложением?
53. shard 279 20.06.22 15:17 Сейчас в теме
(51) Если грузовик по цене тачки, то почему бы и нет, опять же девок катать можно. А Вы считаете оправданным вложение тротила в картошку?))))
55. oldcopy 173 20.06.22 15:28 Сейчас в теме
(53) про тротил придумали именно вы, такой задачи не стояло.

Есть тачка, заказчик хочет чтобы тачка ездила сама.

А грузовиков по цене тачки не бывает, должны прекрасно понимать, а если и бывают, то обходить их надо десятой дорогой, потому что утомитесь его ремонтировать. А тачка с моторчиком уже завтра ваше ведро картошки повезет на базар, вместе с вашей задницей. Одна беда - девок не покатаешь.
57. shard 279 20.06.22 15:37 Сейчас в теме
55) Аналогия с тачкой и грузовиком - уже Ваше творчество. Но попробую тогда не отклоняться от тех.задания:

Есть тачка, заказчик хочет чтобы тачка ездила сама.

Под горку тачка прекрасно едет сама, демонстрация прошла успешно, немного рассыпавшийся урожай списали на погрешности ручного ввода оператором картошки в тачку. За минутную смазку и подкачку колес выставлен счет на пару часов, счет заказчиком оплачен - все довольны, задача решена)
60. oldcopy 173 20.06.22 15:50 Сейчас в теме
(57) За такую тачку вам просто не заплатят, ну или заплатят один раз. А вот если сделать просто, но надежно, то обратятся еще не раз. И пофиг что тачка кривовата, возит же картоху и обходится недорого. А дальше видно будет.

Да и получить "техзадание" от заказчика - это еще постараться надо. Обычно описывают задачу или проблему, а как вы ее решите - дело ваше.

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

Собственно по этому с "Сережами" и работают, потому что он дает недорогое решение именно насущных проблем. И эффект от них виден сразу.

Да, если компания начинает расти, то все это надо будет переделать и это будет стоить денег. Но там переделать надо будет не только программу, а вообще все. Начиная с учета и бизнес процессов.
67. Артано 760 21.06.22 07:05 Сейчас в теме
(35) Ранее за меня уже почти всё написал товарищ в 46-м посте.

Дополню, что ваше утверждение

(35)
вот не согласиться хочется с данным утверждением. Фишка в том, что СРАЗУ писать качественно это не только быстрее, но и вполне реально для разработчиков любого уровня.


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


не понимаю, с чем не соглашаетесь? С тем что "оба хуже"?
70. biimmap 1827 21.06.22 10:27 Сейчас в теме
(67) да именно с этой фразой, если про пост 46, то с подходом "а бизнесу это не надо".

Фишка в том, что "бизнес" нифига не одинэсник. И в 95% случаев он не в курсе надо оно ему или нет. И уж тем более бизнес не может просчитать последствия ошибок.

В общем я за качество)
72. Артано 760 21.06.22 11:58 Сейчас в теме
(70) Значит Вы и есть представитель идеалистической школы перфекционистов. Это в моём понимании те, кто просто за качество.

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

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

Но, в любом случае, когда речь идет не об астрактной разработке, как вещи в себе, а о части производственного процесса, то становится очевидной арифметика реального управления, когда 100 рублей нормального решения завтра больше чем 150 рублей хорошего решения через неделю/месяц/год, а в некоторых случаях даже плохое решение за рубль, но прямо сейчас будет оптимальным вариантом.

Правда, в случае с рублём это маркетинговая уловка "Сережи" или того, кто его имитирует. В итоге цена будет в районе тех же 100 рублей или уйдет в техдолг, оплата процентов по которому, обычно и топит проекты, что даёт козыри идеалистам.
73. biimmap 1827 21.06.22 12:07 Сейчас в теме
(72) Я никогда и не прятал свою идеалистическую сущность. Почему она возникла? Потому что я работаю с ЗУПом.
Как думаешь думаешь налоги можно посчитать примерно? А зарплату коллективу? С разбегом +/- 2000 р.? Нет нельзя!

Вот поэтому я и есть идеалист. Если б работал с УТ или с бухнёй был бы меньшим идеалистом. Там пересортица это норм. Лишние затраты пару лямов размазать по всему производству - обычное дело и т.д.

Но когда приходит Серёжа и начинать говнокодить в ЗУПе - это вообще недопустимо ни при каких обстоятельствах. Эта конфа не прощает ошибок)))
75. Артано 760 21.06.22 13:11 Сейчас в теме
(73) Видел я лютейших говнокод и там, где нельзя ошибаться - в банках и в страховых. Вообще не связанные показатели качество кода и качество результата.
76. biimmap 1827 21.06.22 13:25 Сейчас в теме
(75) В моей практике и предметной области они связаны. Костыльные решения связаны с тем, что не все сценарии учитываются, а это приводит к ошибкам, которые потом ещё и найти тяжело.

И главная проблема в том, что в ЗУП решение задачи на 70% занимает меньше половины времени. А вот остальные 30% это и есть самое сложное, что при говнокодерстве обычно не решается. Ибо большинство таких задач в принципе говнокодом не решить! Приходится такие решения переделывать с нуля. Именно чтоб учесть 30% сценариев, иногда даже из-за меньшего количества сценариев это приходится делать.

Ещё раз повторюсь: для других предметных областей это не на столько актуально как для ЗУП.
Как найду время написать статью, потом ещё подискутируем предметно)
36. starik-2005 3033 19.06.22 23:29 Сейчас в теме
Какие в комментах прям окуенные профессионалы своего дела - аж глаз дергается сердце радуется.
user1254376; chg; ivan1703; Krotov_Valery; ubnkfl; lepth; m_aster; teyana; morin; Fator26; biimmap; maksa2005; muskul; +13 Ответить
113. пользователь 20.09.23 11:31
Сообщение было скрыто модератором.
...
114. starik-2005 3033 20.09.23 11:50 Сейчас в теме
(113)
чтобы это понять
Не, все не так. Такое пишут не потому, что поняли, а для того, чтобы акцентировать внимание. И даже не знаю, сколько лет нужно такое читать, чтобы в э\том разобраться. Вы за 13 лет до этого не смогли дойти?
115. strelec13 20 20.09.23 12:05 Сейчас в теме
(114) Акцентировать внимание для кого, для окуенных? Надеюсь они Вам спасибо скажут (напишут) за такое Ваше внимание к ним. Профи комментарии окуенных в лучшем игнорируют в худшем зрение теряют (после подергивания глаз).
(114)
116. starik-2005 3033 20.09.23 12:10 Сейчас в теме
(115)
для кого
Ну там под постом плюсики есть. Можете посмотреть, кому с этого доставило, ну и напишите им в личку, что они... - ну там по уровню культуры...
117. strelec13 20 20.09.23 12:15 Сейчас в теме
(114) Не дай бог мне писать про окуенных, кому это интересно. Да и кто про них и их делах не знает (их комментарии в руки вместо флага), если только они сами про себя.
(116)
118. starik-2005 3033 20.09.23 12:37 Сейчас в теме
119. strelec13 20 20.09.23 12:42 Сейчас в теме
(118) Когда переходят на личности? Правильно, когда кончаются аргументы. Пока.
(118)
120. starik-2005 3033 20.09.23 13:59 Сейчас в теме
(119)
Когда переходят на личности
Приям вот ЛИЧНОСТИ (и все буквы большие)...
121. strelec13 20 20.09.23 14:11 Сейчас в теме
(120)
(114)
Такое пишут не потому, что поняли, а для того, чтобы акцентировать внимание.
Поздравляю. Вы достигли своей цели - обратили моё внимание к своему комментарию. И когда Вы научитесь игнорировать тех, кто не стоит вашего внимания. P.S. Жду Вашего спасибо за мое поздравление :) , а так же с большой надеждой, может в этот раз проигнорируете мой занудный комментарий или это уже диагноз у Вас, обращать внимание на мелочи. Или дал Вам пищу для нового комментария ? :)
37. muskul 20.06.22 02:03 Сейчас в теме
По тексту все время думал что где то у Сережи должно было что то епнуть сломаться и зафакапиться, но это случилось только у "правильного" отдела разработки.
зы. По своей работе тоже иногда сталкиваюсь что в некоторых моментах начинают усложнять потому что "просто" это неправильно
38. Manoshkin 346 20.06.22 04:04 Сейчас в теме
ох уж мне эти профессионалы которые пишут "чтобы показать было не стыдно". это иногда прям .... ничего не работает как надо, фиг переделаешь, но зато блин всё оптимизировано. программирование ради программирования.
40. maksa2005 530 20.06.22 07:00 Сейчас в теме
В следующий раз назови своего персонажа - Валера...
42. Vlan 36 20.06.22 07:46 Сейчас в теме
Программирование - это искусство. Не может быть "правильного" кода и "неправильного". Глупо говорить, что Рубенс рисовал правильно, а Ван Гог нет. Они просто разные, у них разное видение происходящего. Разбираться в "правильном" коде зачастую сложнее. Возьмите БСП. Уж куда правильнее, но я там пас. Терпения не хватило пройти все эти процедуры. Или использовать "as is" или лепить что-то свое.
Так вот, возвращаясь к искусству. Оно предназначено для потребителя (заказчика), а не для коллег-художников, которые не преминут в разговоре обязательно упомянуть, какая все-таки это мазня.
evgd02; lepth; Dima_Mazhor; Loginoff92; +4 Ответить
64. tindir 21.06.22 05:47 Сейчас в теме
(42) Программирование ремесло. Вы ведь не станете говорить, что токарь тоже художник и нарушение тех.карты это его творческое видение.
shard; Jimbo; +2 Ответить
66. Vlan 36 21.06.22 06:49 Сейчас в теме
(64) В том-то и различие, что токарь ограничен чертежом. Ни вправо, ни влево. А свободный художник не ограничен ничем, кроме конечной цели. Поэтому решений может быть несколько и даже бесконечно много.
Те, кто работает по шаблонам, и есть ремесленники. А кто-то хочет творить. Можно, конечно, и такого натворить... Но это как повезет. :-)
Loginoff92; +1 Ответить
69. tindir 21.06.22 09:14 Сейчас в теме
(66) Вы не общались с профессиональными музкантами и художниками =) там есть "база" и ее нужно неприложно знать и владеть. А оправдывать кривую поделку пост-гранж-нео-модернизмом вообще ни разу не верное решение =)
Я сейчас работаю с "творческим" кодом. Знаете что вольный-художник натворил? из самого простого - он не знал, что есть Форма.Записать() и есть метод модуля объекта"ОбработкаЗаполнения", а в итоге "творческий порыв" закончился тем что у меня внутри ОДНОЙ формы документа есть 4(!) места с вызовом сервера, где создается один и тот же объект, но творческий порыв не терпит инкапсуляций и копипаста видимо была сильно густая. Как итог я имею 4 события об одном и том же, но написанное 2 разными способами с щепоктками ctrl-c без какого либо форматирования кода.
Именно в этом и кроется ремесло - уметь использовать стандарты и техники в реализации новых идей.
oleg-m; Артано; +2 Ответить
74. Vlan 36 21.06.22 12:40 Сейчас в теме
(69) Уж поверьте, я знаком с богемой. Действительно, в художественных ВУЗах есть много непреложных требований. Но самое смешное то, что перейдя к другому преподавателю, Вы получите новый свод правил, весьма отдаленно напоминающий прежний. Никто не знает, как правильно рисовать, но все знают, как рисовать, чтобы понравилось учителю. И практически никто потом академически не рисует, все ищут свой стиль. Это несколько утрированно, но как-то так.
79. m_aster 111 22.06.22 12:14 Сейчас в теме
(42) Ну, с БСП-то всё-таки стоит познакомиться. Реально удобно, те же права, печать и т.д. Ставишь и у тебя есть костяк, не надо ничего придумывать, добавляешь свое и есть готовое решение с определенным функционалом. Мне как-то захотелось сделать почтового клиента на 1С, увидел в ДО 2 КОРП, основу взял из БСП, добавил свою форму со списком сообщений, кое-что ещё добавил и все, все работает. Потом увидел что-то подобное в ДО 3 КОРП, только у меня была общая форма, в ДО форма списка документов почтовых сообщений.
В начале нулевых работал с FoxPro, у меня был набор пргшных файлов со служебными процедурами, тоже печать, скролбары и т.д., по большей части интерфейсного порядка. В принципе, та же БСП. Практически окно готовой программы, наполняешь нужным функционалом, компилируешь в апп и все, получаешь программу.
43. yyv-911 20.06.22 08:08 Сейчас в теме
есть такой проект где что бы посчитать остатки и обороты необходимо было несколько регистров (4-5 шт накопительных регистров) получать с самого начала их существования. Ошибка в целом проектирования (направление учет деятельности УК и квартплаты). Но решение работает уже более 10 лет. без доработки. Правда время обработки постепенно увеличивается. Но это мелочи. На днях оптимизировал. Добавил в временные таблицы индексацию. Стало работать шустрее. Что бы все это переписать честно отработавшее 10 лет - дешевле заново построить и внедрить. Да и решение то в сравнении с типовыми до сих пор является топом. хотя и лютый говнокод. Такое же решение есть на 7.7. Двоякое чувство.
Так же работал в компании где главный архитектор "Сережа" который проектирует по принципу все должно быть как в ТЗ. Количество вставок в типовой УТ зашкаливает. А количество реквизитов увеличивается с каждым ТЗ.

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

Помнится Иван говорил что надо всегда быстрее в продакшн отправлять. Что бы эффект был быстрее. Без такого кода никак вообщем.

С уважением агент "Сережа" )
44. slavik27 88 20.06.22 09:09 Сейчас в теме
интересно а как оценивали г.код, только потому что большая часть программистов говорила что у Сережи г.код? ну то есть где то мерило,
или мерило - стандарты 1с, если да то понятно.
А также что можно считать г.кодом

А="Г.Код";

Ответ = СРЕД(А,3,3);


Ответ2 = ПРАВ(А,3);

А пачему ты вместо СРЕД не использовал ПРАВ, это же ПРАВильнее
47. shard 279 20.06.22 15:05 Сейчас в теме
(44) Все просто: https://its.1c.ru/db/v8std - если массовые необоснованные отклонения, то плохой код.
valm0unt; +1 Ответить
62. user1346935 20.06.22 17:43 Сейчас в теме
Автор молодец. Тему 1С он перерос )

Иди на sponsr.ru и зарабатывай там бабки!!!!
63. oldcopy 173 20.06.22 18:57 Сейчас в теме
(62) Автор графоман, пишет в принципе об одном и том же. Но определенный талант вызывать бурление в комментах у него есть.
Serg O.; user1346935; sinichenko_alex; +3 Ответить
Оставьте свое сообщение