Если Вы знакомы хоть с основами web-программирования, наверняка перед Вами однажды встанет вопрос "использовать cms или написать самому?". Мне кажется, этот вопрос мучает всех новичков.

Прочитав первую книгу из разряда php для чайников, мы с восторгом беремся "писать сайт с нуля". Клепаем БД прямо через phpMyAdmin, пишем SQL-запросы в файле index.php. В этот момент мы понимаем, что для нас нет ничего невозможного! Написав так 2-3 сайта (кому-то потребуется больше), можно заметить, что переписываем мы из раза в раз одно и тоже, копируем огромные одинаковые куски кода. И вот рождается невероятно амбициозная идея - нужно написать универсальный сайт, который будет подходить для любого проекта! Так вы самостоятельно приходите к идее, что вам нужна cms.

Лично я даже начал работать над ней, сделал первую версию и несколько сайтов на своей системе.

Грааль веб-разработки

Достаточно быстро можно прийти к открытию, что систем таких написано великое множество. Это открытие сильно подрывает энтузиазм написания своей системы, особенно если установить одного из "монстров" и восхититься обилию возможностей. Здесь большинство наверное приходит к выводу, что не нужно писать самому, нужно только выбрать готовую и использовать - делать по 10 сайтов в день, грести бабло и кататься на лыжах в альпах.

После открытия этой истины, на Вас непременно обрушится следующий нерешаемый вопрос - "какую cms выбрать?". Это тема отдельного поста, не буду отвелкаться здесь на нее.

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

Новое разочарование

Совсем скоро радость Ваша начинает ослабевать. Иногда, сразу после релиза сайта, когда окажется, что выбранная cms не выдерживает даже самых минимальных нагрузок. Бывает разочарование приходит позднее, когда все чаще среди миллиона плагинов к системе нет именно того, который нужен вам. Вы начинаете разбираться во внутренностях этого движка, пишете какие-то костыли, свои модули. Чем дальше я погружался в это, мне становилось противнее и противнее. Я видел, что я не использую 90% кода, который написан в cms, я видел, что он только тормозит сайты.

Какой вопрос в этот момент придет в голову? Лично мне пришла мысль, что я ошибся с выбором cms, нужно попробовать что-то более мощное и прогрессивное. Может быть даже коммерческие решения. Однако в этот момент я уже не был настолько молод и оптимистичен и не бросился делать сайты на новой системе. Я начал изучать самые популярные из них подробно. И к какому выводу я пришел? Большинство недостатков и достоинств у них общие! И ни одна из систем не решает все мои проблемы.

В этот момент я снова вернулся к тому, с чего начал: "не лучше ли написать самому?". Помню свое подавленное состояние в этот момент, практически безвыходная ситуация. Я не скажу, что сайты на cms были плохими, они в большинстве случаев хорошо работали, приносили заказчикам деньги, но внутри меня постоянно росло чувство, что я делаю что-то не то. Любая нестандартная функциональность выглядела, как тупой костыль. Я очень люблю эффективный и красивый код, удачную архитектуру приложений, и подобные костыли напрочь деморализовывали меня.

Решение есть!

Именно в этот момент я обратил свое внимание на фреймворки. Идея объединения всего стандартного кода в набор библиотек с удобным API мне очень понравилась. Однако, привыкнув к тому, что после установки системы есть готовая админка, формы и т.д., было трудно отказаться от этого.

Именно в этот момент я открыл для себя Django. Уже не помню, как наткнулся на этот фреймворк, но автоматическая генерация админки сразу понравилась. Меня даже не испугал факт, что я не знал на тот момент python и вообще относился к выделению логических блоков отступами достаточно скептически.

Самое главное, мне понравился подход Django. Четкое разделение шаблонов, моделей и представлений. И никак не удастся вставить в шаблон кусок кода, он просто не будет работать. Это дисциплинирует.

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

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

Приятным бонусом стал и Python. Этот язык мне очень понравился. Оказалось, что код настолько лаконичен и понятен, а объектно-ориентированный подход так сильно развит, что экономия времени на написании кода действительно огромная. Я стал использовать питон даже для парсеров, хотя раньше писал их на Java.

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

В качестве заключения: CMS или свой движок? Я ответил для себя: Django! Возможно, в будущем я пожалею об этом, но пока я снова на стадии открытия жизни на Марсе! :)

Если Вы прошли какие-то из этих стадий, отпишитесь в комментах, очень интересно сравнить свой опыт с другим.

А может быть Вы уже прошли и эту стадию, какое разочарование меня ждет? :)

Продолжение темы: Этапы создания сайта