Пишу свои мысли о web-разработке и о жизни. Работаю в веб-студии Феникс — phoenix-cg.ru Связаться со мной можно по почте viktor@koreysha.ru

CMS для разработчиков

Dec 10, 2015, 21:52

В прошлой своей заметке я обещал, что отдельно остановлюсь о выборе CMS системы с точки зрения разаботчика. Эта тема очень объемна и сегодня я хочу поговорить о подходах к выбору инструментов разработки. Разработчиком я буду называть человека или группу людей, которые «на входе» получают ТЗ, а «на выход» отдают сайт. Далеко не всегда это программисты. Об этом далее.

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

Ищем инструмент под задачу

Суть этого подхода, думаю, понятна из названия. У нас есть задача, формализованная в ТЗ, и мы ищем тот инструмент, который позволит выполнить именно эту задачу, затратив минимум усилий. Именно этот подход я использовал, когда выбрал Эгею для своего блога.

Подход очень хорош, когда задача простая или часто возникает у разных людей или компаний с не значительнми изменениями. В этих случаях, как правило, существует инструмент, или даже несколько на выбор, который позволяет эту задачу решить. Для ведения блога таких инструментов очень много и можно выбрать тот, который требует наименьшее количество усилий для «идеальной», с точки зрения заказчика реализации.

Часто этот подход выбирают исходя из команды разработчиков. Например, для того что бы завести блог на Эгее не нужно быть программистом. Для того, что бы развернуть WordPress, выбрать тему и прикрутить пару плагинов достаточно посвятить изучению этого процесса неделю, но нет необходимости 5 лет учится на мехмате, а потом 10 лет работать в закрытом НИИ. Для того, что бы сделать презентационный одностраничник на Тильде не надо учить С++ за 21 день.

Если что-то из этого списка и есть ваша задача, то, скорее всего, вам не нужны программисты. Человек, который собирает сайт из готовых модулей — вебмастер. Человек, который сможет помочь вам решить бизнес-задачу переложив её в ТЗ для сайта — дизайнер. Человек, который сможет сделать для вас классные тексты — копирайтер, а, если с помощью текстов он поможет решить вашу бизнес-задачу, то редактор.

Все эти люди могут быть сплоченной командой профессионалов или все эти роли может играть сам заказчик. В этом подходе, скорее всего, вам нужны будут они но не программисты.

С этим подходом, правда очень легко попасть в ловушку. Например, согласно Российской бизнес-газете в год в рунете открываются несколько тысяч интернет-магазинов. Отсюда можно сделать вывод, что задача создания интернет-магазина типовая, а значит к ней хорошо применим ход рассуждений «Ищем инструмент под задачу». Такой вывод — огромная ошибка, которую допускают постоянно. Это связано с тем, что в отличае от блога, сценариев взаимодействия авторов и читателей с котором не так уж и много, в интернет-магазине таких сценариев тысячи, хоть так и не кажется на первый взгляд. Я участвовал в разработке около 20 интернет-магазинов (насчитал сейчас 16, но мог что-то упустить. Честно говоря, далеко не везде я был «на главных ролях», так что может кто-то скажет, что и лишку посчитал) и ни разу логика расчета цен не повторилась точь-в-точь. Даже в очень похожих друг на друга по ассортименту и бизнес-модели магазинах находилась разница. А это всего один из десятков или сотен компонент.

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

Инструменты для удобства разработки

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

Эта мысль настолько важна, для понимания разницы между подходами, что я переформулирую её еще раз. Разработка при таком подходе стоит дешевле, но при этом нет заранее готовых компонент. Это значит, что все, что можно было бы этими компонентами собрать будет оплачено заказчиком, в отличие от первого подхода. Но, зато все, что «сверху» готового материала, будет стоит дешевле и разрабатываться быстрее.

Понятно, что если проект изначально очень большой, сложный и вообще единственный-в-мире-такой-стартап, то этот подход экономически более оправдан. Но что делать, если я, как заказчик, понятия не имею о том «сложный» мой проект или его может собрать из готовых компонент веб-мастер без существенных доработок? К сожалению, мне известен только один способ ответить на этот вопрос достоверно — консультация с опытными и честными разработчиками.

Третий подход?

Широко пропагандируется и третий подход, в котором и овцы сыты и волки целы. Идея заключается в том, что бы уберечь разработчиков от рутинных задач, при этом предоставив им возможность любых доработок в удобной для них среде. Такой вариант дает нам возможность выбирать — вот этот и этот функционал берем «из коробки», а этот и этот пишем с нуля. Это — утопия.

Чем больше готовых компонент, тем меньше возможностей для их изменения. Это «закон природы», от которого не убежать. Понятно, что можно достичь некоторого равновесия, например 30% первого подхода и 70% второго. Проблема в том, что это только откладывает выбор того или иного подхода. Это временное перемирие, но не завершение войны.

Я не против такого микса, но только в том случае, если все участники процесса четко понимают, что для одних компонент выбран подход «Ищем инструмент под задачу», а для других «Инструменты для удобства разработки» и нет никакого третьего варианта.

Итог

Выбор CMS для первого подхода — задача рутинная. А вот для второго и для синтетического варианта — не тривиальная. Я постараюсь высказать свои мысли о её решении в одной из следующих заметок.

Share
Pin
Your comment
won’t be published

HTML will not work

Ctrl + Enter
Popular