среда, 13 февраля 2008 г.

Abortive architecture

Так уж сложилось. Мы работаем в режиме вялотекущего deadline. Непрекращающегося. И времени на посидеть\подумать практически не остаётся. Отчасти в этом виновата нехватка людей. Отчасти - креативность начальства, расчитывающего на профессионализм высокооплачиваемых людей. Это не так важно.
Получается, что многие вещи придумываются и реализуются на коленке. В расчёте на свободное время которое появится, когда мы закончим. Но задачи всё появляются, и заканчиваться они не планируют. И это правильно - люди тут зарабатывают деньги, а не спасают мир идеальными решениями.
Недавно я выдал некий framework нужный для упрощения и централизации различных действий. В перспективе я планировал вытащить туда весь основополагающий функционал нашей системы. По задумке он должен был быть легко расширяем и очень гибок. Необходимый кусок подгружался только по требованию, все модули имели общий стиль использования (similar API). Но...
Сейчас у меня образовалось временное окно, в котором я сумел подумать в том числе и о своём детище. Я хотел добавить ветвление в функционал, это позволяло не слишком задумываться об общем модуле, которому необходимо вести себя немножко по разному в разных проектах. Реализация этого ветвления на настройках создавала монстра, тяжёлого как по памяти, так и по процессорному времени. Логичным кажется сделать дублирование этой разницы и использовать тот кусок, который нужен в данный момент. Но прозрачного деления не получается - слишком много сделано на текущей логике.
И вот тут у меня опускаются руки. Времени переписать весь framework у меня нет. Желания добавить очередную заплатку - тоже. Я нахожусь в классической патовой ситуации. В первую очередь виноват в этом я: не имея огромного опыта создания монстров - начал писать глобальный проект. Причём, как это ни обидно, как это ни приятно - это не последний milestone в смене взглядов на структуру и идеологию. Но сейчас я с грустью осознаю, что облажался.
Рабочий процесс это не затронет - придумывать заплатки на лету я научился давно. Но использовать этот framework в своих личных проектах в будущем я не буду.

P.S. Во произошедшем есть огромный кусок приятного experience: я в очередной раз прекратил считать себя самым умным. Я снова не считаю, что, при наличии времени, смогу придумать какую угодно сложную архитектуру. И это заслуга, в том числе, моего Технического Директора. Всё таки опыт - вещь которую можно получить только со временем. Никакой светлый ум не поможет перепрыгнуть через ступень не задерживаясь.
P.P.S. Надо уметь учиться у умных и опытных людей. Не зря в детстве говорят: "Слушай старших". Дети понимают это не так, как надо, а жаль. Я считаю, что надо объяснять еще в детском саду что "слушать" не значит "беспрекословно подчиняться". Это значит "слушать и задавать вопросы чтобы перенять опыт". Я рад, что у меня есть у кого учиться.

3 коммент.:

Анонимный комментирует...

Привет!

Случайно попал на этот блог =)

Ты действительно считаешь, что создавать свой фреймворк - это "перепрыгивание через ступеньки"?

Интересно в силу того, что я тоже люблю проектировать системы. В интернете много готовых решений(CMS, CMF), а вот обзоров различных архитектур и способов построения CMS(cmf) я мало видел.

Если бывает свободное время - было бы занятно пообщаться об архитектуре CMF и смежных темах.

meekman
(blog.meekman.ru)

Luf комментирует...

1) Нет, не считаю. Вы не поняли сей пассаж.
2) Свободного времени, тем более на дискусии о том, что уже не интересно - практически нет. Хотите пообщаться - скидывайте резюме :)

meekman комментирует...

У меня нет интересного резюме(нужны работники?), много задумок, полуреализованных программ и легких работ по типу исправлений в действующих сайтах.
Только mytools.su - мой демо проект, я пытался сделать сервис, но не смог довести до конца. Хотя подсистема статистики на нем работает и свой блог я оцениваю по ней.