Этот пост, наверное, не столько опыт, сколько планирование своих действий. Но я думаю, что этакий план применим ко многим разработчикам.
Когда-то давно я писал пост о том, что закончил написание собственной системы управления сайтами. Однако, "закончил" в данном случае - это слишком громкое и абсолютно неуместное слово. Прошло уже столько много времени, а я ее все еще пишу. Пишу под каждый проект... ну или товарищи мои пишут (есть ведь у меня несколько коллег, с которыми я неплохо сработался). Для каждого проекта создаются определенные модификации модулей системы, собирается система из разных модулей для достижения определенной функциональности. Расскажу немного о том, как происходит процесс.
После прочтения и осмысления техзадания на создание сайта сначала обнаруживается в недрах жесткого диска одна из подходящих версий самой CMS, потом по архиву выполненных работ ищутся нужные модули системы, соответствующие им запросы к БД, изображения, папки и функции, конфиги и т.д. Следующим шагом идет сборка всего обнаруженного в единый комплект. Затем производятся необходимые модификации модулей - внедрение новых полей или удаление ненужных.
На этом заканчивается этап сборки сайта. Начинается этап верстки макета, если он уже готов, либо же его ожидание, а потом - верстка. Но и здесь тратится довольно много времени на актуализацию модулей - в случае с моей KatrinCMS дизайн модулей хардкодом забит в нутро каждого модуля. Да, это техническая недоработка. Но с тем опытом, который у меня был на момент создания первой версии ЦМСки, даже таковой - уже достижение. После сборки и верстки начинается тестирование и наполнение проекта контентом.
Так вот, проблема в моем случае - это существенные временные затраты на сборку комплекта системы управления, модификации модулей и хардкод-верстку. Кроме того, в большинстве случаев верстальщик из нашей "компании" не сможет сделать сайт, не зная РНР. Ему приходится обращаться к кому-то из программистов или ко мне.
По моим подсчетам, затраты времени можно снизить, ни много, ни мало, на 70%, а сам процесс создания сайта сделать настолько доступным, что даже командный верстальщик или дизайнер с опытом верстки мог бы большую часть работы выполнить самостоятельно. Таким образом выросла бы прибыльность работы и скорость ее выполнения без ущерба для качества.
Но как этого добиться?
В результате продолжительного мозгового штурма мне в голову пришла идея организации и модификации CMS. Это требует некоторого переосмысления, реструктуризации и переработки. Итогом должен стать билдер для нее, доступный по логину и паролю для определенного круга лиц. В билдере выбирается базовая комплектация и необходимые функции, указывается первоначальная конфигурация системы, а затем - отмечаются необходимые модули. Билдер автоматически по заранее продуманному алгоритму (он действительно уже продуман) собирает полный необходимый комплект системы и структуру таблиц в БД, соединяет все в единый архив и выдает запросившему его сотруднику на скачивание. Таким образом получается экономия в 2-3 человекочаса при одной только сборке исходной версии проекта.
Но и этого недостаточно.
Ранее я не понимал смысла дополнительных полей в различных модулях некоторых CMS. Сейчас же я осознал, что при помощи таких полей с возможностью добавления/редактирования/удаления можно создать абсолютно универсальные модули для системы, которые не придется менять под каждый проект. Эта модификация сохранит до 30% рабочего времени программиста при грамотном подходе к внедрению таких допполей в код.
Третья модификация должна предоставить возможность изменять оформление различных элементов модуля для фронтенда, т.е. верстку каждого модуля, прямо из админки. Верстальщик сверстал определенную страницу макета, выделил в верстке соответствующий контент-блок и просто вставил его в соответствующем редакторе внутри админки модуля, разместив вместо функциональных составляющих типа заголовка, описания и т.п. соответствующий маркер этих составляющих, выданных там же, в админке.
Такая модификация позволит сэкономить еще порядка 20% времени работы программиста.
Ну и напоследок необходима единая система обновлений, которая в принципе может быть реализована лишь при описанном выше подходе к созданию проектов, когда модули системы в разных проектах по сути будут одинаковы и различаться лишь версткой и дополнительными полями. В этом случае достаточно выложить обновление на сервер билдера и клиентские сайты автоматически смогут произвести ОТА-обновление. Такой подход к обновлению клиентских сайтов позволит прийти к дополнительной экономии времени работы программиста в 20% по каждому проекту.
Итоговая экономия времени в 70% дает нам дополнительный профит, что не может не сказаться положительно на желании работать и качестве работы каждого участника такой команды.
Освободившееся время можно потратить на общее улучшение функционала CMS, на себя любимых и на любимых и близких ;-) .
Разработка того, о чем я достаточно сумбурно написал в этом посте, уже ведется, а я постараюсь периодически о ней сообщать. В планах также описание еще одного запланированного шага к организации работы с клиентами на разработку сайтов, который должен значительно упростить нашу жизнь и доставить удовольствие от работы с нами клиенту