metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-01-06 02:14 pm

Вползающий карго-культ

Ждевелоп написал очередной пост из серии "как на самом деле все происходит в ИТ" с привлечением меня в качестве отрицательного примера: http://jdevelop.livejournal.com/2067575.html
Парадоксально, но факт - метаклассы аутисты, даже будь они сто тыщ раз основа основ компании - в результате замыкают все на себя, и если они на более-менее ключевой позиции - то разработка превращается в карго-культ правил, которые остальные не понимают, а глава секты не считает нужным пояснить/написать/обсудить.

В данном случае, он прав, потому что я не умею объяснить некоторые вещи коллегам и разработка кое-где превратилась в натуральный карго-культ. Причина в том, что в силу ограниченности ресурсов, меня хватает только на то, чтобы "натянуть кложурь/F# на firebird/postgresql/mssql" из-за чего некоторые архитектурные решения и их причины остаются задокументированными только в виде заметок в таск-трекере. Ну скажем, я сейчас одновременно делаю 4 проекта, из которых два коробочных, и единственный способ при этом не сойти с ума - это делать их на общей кодовой базе, что налагает на нее некоторые ограничения, которые не очевидны коллегам, не видящим всей картины в целом.

Второй аспект, который лично мне не совсем очевиден до сих пор - это степень моей личной вины в разного рода нетривиальной херне, накопившейся за 15 лет работы. Кое-где причина заведомо в том, что я не умел в общепринятые инструменты (один проект, существующий с 1997 года, использует совершенно невменяемый велосипедный фреймворк, разработанный в припадке идиотизма и только сейчас дошли руки это наконец-то заменить на нормальный код, благо с тех пор появились интернеты, нормальные сервера и сети у клиентов).
Но вот конкретно текущая ситуация с несколькими проектами на двух работах, использующими общую кодовую базу и разного рода нетривиальные кодогенераторы и F# с кложурью - с ней не очевидно. С какой стороны я на это не посмотрю, альтернатива была только одна - упростить все в несколько раз, отказаться от мысли запустить где-то кроме винды, использовать только Firebird, снизить количество проектов до одного, убрать кодогенераторы и отказаться от повторного использования кода. Из плохого для конторы и клиентов тут только снижение эффективности/скорости работы, т.к. F#/clojure/метапрограммирование с кодогенераторами все-таки сильно упрощают разработку.

[identity profile] raydac.livejournal.com 2014-01-06 11:27 am (UTC)(link)
все думаю возродить нетривиальную херню в лице вебсервера с языком форт использованным для написания энтерпрайз системы

[identity profile] vit-r.livejournal.com 2014-01-06 11:36 am (UTC)(link)
Не надо путать объяснение и обучение. Джобс - вон тоже один был и сейчас видно, насколько он был необходим. Незаменимые люди есть. И довольно часто.

А остальные, если не понимают, то спрашивают. Но для этого тоже надо набрать определённый уровень.

[identity profile] falcrum.livejournal.com 2014-01-06 12:25 pm (UTC)(link)
Вроде тебе уже стопиццот раз объясняли, что основная проблема - это твоя незаменимость противогазами.

[identity profile] tiendil.livejournal.com 2014-01-06 12:39 pm (UTC)(link)
>Причина в том, что в силу ограниченности ресурсов, меня хватает только на то, чтобы "натянуть кложурь/F# на firebird/postgresql/mssql" из-за чего некоторые архитектурные решения и их причины остаются задокументированными только в виде заметок в таск-трекере.
Ну так для этого же есть археология кода или как там её правильно называть. Имхо, обязательный навых для всех. Не знаешь почему так сделано — лезешь в логи репозитория, в таски и смотришь.

[identity profile] serbod.livejournal.com 2014-01-06 01:02 pm (UTC)(link)
Похоже, это такая беда славянских программеров - полдня спорить и доказывать, что это сложно, невыгодно, нереализуемо. И за пять минут сделать.

Вот, пример моего лога, прямо из исходника, в начале файла. Размером примерно как твой пост:
---------------------------------------------------------------------------------------------------------------------------------------------------------------


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

2013-08-02
Добавилась связь со школьной базой, в ней хранились свойства шкафов и ячеек,
список аккаунтов. Была создана форма аренды ячеек (привязки аккаунта к ячейке),
формы редактирования шкафов и ячеек, формы журнала аккаунтов по классам и журнала
аренд, дерево разделов - классы, ящики, аренды. Добавлена возможность работы с
несколькими школами с общими шкафами. (для "двойной" школы в Питере)

2013-09-12
Добавились хранимые процедуры для изменения свойств шкафов и ячеек, и для аренды
(в центральной базе). Отключена возможность аренды и журнал аренд.

2013-09-02
В локальной базе заблокирован доступ к записи в таблицы шкафов и ячеек,
остались только процедуры для установки некоторых свойств. Создание и редактирование
шкафов и ячеек планировалось осуществлять в админке.

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

2013-09-24
Принято решение, что изменения свойств шкафов и ячеек осуществляются здесь, а потом
измененные шкафы и ячейки сериализуются в XML и выгружаются на сервер, как при
создании шкафов. Отключены журналы аккаунтов, убрано пустующее дерево разделов,
формы шкафов перенесены на закладки.

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

2013-10-24
Заново включено периодическое чтение списка шкафов и ячеек из школьной базы.

2013-11-21
Исправлено чтение конфига логгера, добавлена информация о версии, код карты
пишется в ячейку шкафа при каждом цикле опроса

[personal profile] alll 2014-01-06 01:34 pm (UTC)(link)
Да может и не надо объяснять червей и пауков, а надо лепить слой абстракций, на котором незамутнённые кодеры видят только розовых единорогов.

[identity profile] juan-gandhi.livejournal.com 2014-01-06 02:13 pm (UTC)(link)
Альтернативой кодогенератору может быть только интерпретация. (Я ничего не предлагаю, просто философствую.)

[identity profile] ng67.livejournal.com 2014-01-06 02:20 pm (UTC)(link)
Ну и зачем? Почему не использовать современные инструменты?

[identity profile] sdfgh153.livejournal.com 2014-01-06 03:31 pm (UTC)(link)
Ребе, если сказать себе "я неуиноуный полностью, это всё противогазы", то ситуация вообще никак не изменится. То есть злобой на тупых их умнее не сделать. Я тоже считаю, что виноуат не ребе, конечно, но как дальше-то жить?
Два варианта:
1. Стать попроще и писать похуже, работать побольше, есть поменьше
2. Воспитывать противогазов

Я вот пробую второй путь (хаха, слепой ведёт слепого), к удивлению получается.

[identity profile] berezovsky.livejournal.com 2014-01-06 06:55 pm (UTC)(link)
Вопрос про вину несколько светлый и к профессии отношения не имеет. Всё, что происходит с человеком, - его выбор, на том или ином уровне души.
А статья по ссылке мне понравилась, выбирают там грамотного человека, а не технодегенерата. Хотя в текущей системе понятие интервью унизительно для обоих. И для шлюхи, продающей время, и для эксплуататора.

[identity profile] theaspect.livejournal.com 2014-01-07 07:26 am (UTC)(link)
И чему равен bus-factor?