Вползающий карго-культ
Ждевелоп написал очередной пост из серии "как на самом деле все происходит в ИТ" с привлечением меня в качестве отрицательного примера: 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
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
А остальные, если не понимают, то спрашивают. Но для этого тоже надо набрать определённый уровень.
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
Ну так для этого же есть археология кода или как там её правильно называть. Имхо, обязательный навых для всех. Не знаешь почему так сделано — лезешь в логи репозитория, в таски и смотришь.
(no subject)
no subject
Вот, пример моего лога, прямо из исходника, в начале файла. Размером примерно как твой пост:
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Первоначально, программа работала как автономный демонстрационный модуль
управления шкафами, без связи со школьной базой. Все настройки хранились в конфиге.
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
(no subject)
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Два варианта:
1. Стать попроще и писать похуже, работать побольше, есть поменьше
2. Воспитывать противогазов
Я вот пробую второй путь (хаха, слепой ведёт слепого), к удивлению получается.
(no subject)
no subject
А статья по ссылке мне понравилась, выбирают там грамотного человека, а не технодегенерата. Хотя в текущей системе понятие интервью унизительно для обоих. И для шлюхи, продающей время, и для эксплуататора.
no subject