Вползающий карго-культ
Jan. 6th, 2014 02:14 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Ждевелоп написал очередной пост из серии "как на самом деле все происходит в ИТ" с привлечением меня в качестве отрицательного примера: http://jdevelop.livejournal.com/2067575.html
Парадоксально, но факт -метаклассы аутисты, даже будь они сто тыщ раз основа основ компании - в результате замыкают все на себя, и если они на более-менее ключевой позиции - то разработка превращается в карго-культ правил, которые остальные не понимают, а глава секты не считает нужным пояснить/написать/обсудить.
В данном случае, он прав, потому что я не умею объяснить некоторые вещи коллегам и разработка кое-где превратилась в натуральный карго-культ. Причина в том, что в силу ограниченности ресурсов, меня хватает только на то, чтобы "натянуть кложурь/F# на firebird/postgresql/mssql" из-за чего некоторые архитектурные решения и их причины остаются задокументированными только в виде заметок в таск-трекере. Ну скажем, я сейчас одновременно делаю 4 проекта, из которых два коробочных, и единственный способ при этом не сойти с ума - это делать их на общей кодовой базе, что налагает на нее некоторые ограничения, которые не очевидны коллегам, не видящим всей картины в целом.
Второй аспект, который лично мне не совсем очевиден до сих пор - это степень моей личной вины в разного рода нетривиальной херне, накопившейся за 15 лет работы. Кое-где причина заведомо в том, что я не умел в общепринятые инструменты (один проект, существующий с 1997 года, использует совершенно невменяемый велосипедный фреймворк, разработанный в припадке идиотизма и только сейчас дошли руки это наконец-то заменить на нормальный код, благо с тех пор появились интернеты, нормальные сервера и сети у клиентов).
Но вот конкретно текущая ситуация с несколькими проектами на двух работах, использующими общую кодовую базу и разного рода нетривиальные кодогенераторы и F# с кложурью - с ней не очевидно. С какой стороны я на это не посмотрю, альтернатива была только одна - упростить все в несколько раз, отказаться от мысли запустить где-то кроме винды, использовать только Firebird, снизить количество проектов до одного, убрать кодогенераторы и отказаться от повторного использования кода. Из плохого для конторы и клиентов тут только снижение эффективности/скорости работы, т.к. F#/clojure/метапрограммирование с кодогенераторами все-таки сильно упрощают разработку.
Парадоксально, но факт -
В данном случае, он прав, потому что я не умею объяснить некоторые вещи коллегам и разработка кое-где превратилась в натуральный карго-культ. Причина в том, что в силу ограниченности ресурсов, меня хватает только на то, чтобы "натянуть кложурь/F# на firebird/postgresql/mssql" из-за чего некоторые архитектурные решения и их причины остаются задокументированными только в виде заметок в таск-трекере. Ну скажем, я сейчас одновременно делаю 4 проекта, из которых два коробочных, и единственный способ при этом не сойти с ума - это делать их на общей кодовой базе, что налагает на нее некоторые ограничения, которые не очевидны коллегам, не видящим всей картины в целом.
Второй аспект, который лично мне не совсем очевиден до сих пор - это степень моей личной вины в разного рода нетривиальной херне, накопившейся за 15 лет работы. Кое-где причина заведомо в том, что я не умел в общепринятые инструменты (один проект, существующий с 1997 года, использует совершенно невменяемый велосипедный фреймворк, разработанный в припадке идиотизма и только сейчас дошли руки это наконец-то заменить на нормальный код, благо с тех пор появились интернеты, нормальные сервера и сети у клиентов).
Но вот конкретно текущая ситуация с несколькими проектами на двух работах, использующими общую кодовую базу и разного рода нетривиальные кодогенераторы и F# с кложурью - с ней не очевидно. С какой стороны я на это не посмотрю, альтернатива была только одна - упростить все в несколько раз, отказаться от мысли запустить где-то кроме винды, использовать только Firebird, снизить количество проектов до одного, убрать кодогенераторы и отказаться от повторного использования кода. Из плохого для конторы и клиентов тут только снижение эффективности/скорости работы, т.к. F#/clojure/метапрограммирование с кодогенераторами все-таки сильно упрощают разработку.
no subject
Date: 2014-01-06 11:27 am (UTC)no subject
Date: 2014-01-06 11:32 am (UTC)no subject
Date: 2014-01-06 11:39 am (UTC)no subject
Date: 2014-01-06 11:37 am (UTC)Или нечто на основе форт-машины вокруг строк (вроде вебсервера с ними много работают?)?
no subject
Date: 2014-01-06 11:41 am (UTC)no subject
Date: 2014-01-06 12:07 pm (UTC)no subject
Date: 2014-01-06 12:11 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-01-06 05:53 pm (UTC)no subject
Date: 2014-01-06 07:13 pm (UTC)из несамописных фортов я на smal32 делал проекты
(no subject)
From:no subject
Date: 2014-01-06 11:36 am (UTC)А остальные, если не понимают, то спрашивают. Но для этого тоже надо набрать определённый уровень.
no subject
Date: 2014-01-06 12:25 pm (UTC)no subject
Date: 2014-01-06 12:31 pm (UTC)Просто общаясь в узком кругу айседов, руССких функциональщиков и прочих, сложно понять, какой реальный уровень разработчиков сейчас и на что лучше ориентироваться - на 10 обычных разработчиков или одного хорошего. При том, что по баблу и времени разработки тоже хрен поймешь, что лучше. Ну в целом, 10*1.5к явно больше чем 1*5к, но проблема в том, что на самом деле есть 2*3к (разные проекты для разных заказчиков и на разных языках) и с этим приходится вертется.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-01-06 12:39 pm (UTC)Ну так для этого же есть археология кода или как там её правильно называть. Имхо, обязательный навых для всех. Не знаешь почему так сделано — лезешь в логи репозитория, в таски и смотришь.
no subject
Date: 2014-01-06 12:48 pm (UTC)no subject
Date: 2014-01-06 01:02 pm (UTC)Вот, пример моего лога, прямо из исходника, в начале файла. Размером примерно как твой пост:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Первоначально, программа работала как автономный демонстрационный модуль
управления шкафами, без связи со школьной базой. Все настройки хранились в конфиге.
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
Исправлено чтение конфига логгера, добавлена информация о версии, код карты
пишется в ячейку шкафа при каждом цикле опроса
no subject
Date: 2014-01-06 01:34 pm (UTC)no subject
Date: 2014-01-07 04:13 am (UTC)no subject
Date: 2014-01-06 02:13 pm (UTC)no subject
Date: 2014-01-06 02:22 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2014-01-06 02:20 pm (UTC)no subject
Date: 2014-01-06 03:31 pm (UTC)Два варианта:
1. Стать попроще и писать похуже, работать побольше, есть поменьше
2. Воспитывать противогазов
Я вот пробую второй путь (хаха, слепой ведёт слепого), к удивлению получается.
(no subject)
From:no subject
Date: 2014-01-06 06:55 pm (UTC)А статья по ссылке мне понравилась, выбирают там грамотного человека, а не технодегенерата. Хотя в текущей системе понятие интервью унизительно для обоих. И для шлюхи, продающей время, и для эксплуататора.
no subject
Date: 2014-01-07 07:26 am (UTC)