Функции сайта. Чем проще, тем дороже? Почему?!

Шаблоны Joomla здесь.

   Почему "простые" требования заказчика, иногда, так дорого стоят? Почему действие, на которое уходит одна секунда может программироваться месяц? 
Как правильно соразмерить и продумать связку бюджет-желания-реализация? 
Что нужно знать перед тем, как обдумывать функции будущего сайта? 

   Мы стараемся писать статьи только по мере необходимости. Почему? Потому что не хочется тратить наше время на её написание, а так же Ваше на её прочтение. И, если, уж, мы пишем - значит прочтение сэкономит намного больше времени и нам и Вам в итоге. А, глядишь, авось, и житейской мудрости добавит, да, кругозор расширит! 
   Так, вот! Эту статью пришлось написать, потому что "накопилось". И не без оснований. С удовольствием, скинем этот груз с наших общих плеч!
   Сегодня, мы будем говорить о функциях сайта на конкретных примерах! О вершине айсберга "над водой" (читай, то, что видишь на экране) и о самом айсберге "под ней" (читай, то, что не видишь, но что происходит на самом деле).
 

НЕМНОГО ТЕОРИИ. ЧТО ТАКОЕ САЙТ С ТЕХНИЧЕСКОЙ СТОРОНЫ?

   На самом деле, сам по себе сайт (тот, что мы видим на экране) без каких-либо функций это лишь набор текста и картинок, находящихся на определённых позициях и расстоянии друг от друга. Это расстояние может быть чётким (одна картинка, левее на 100 пикселей от другой) или нет (20% видимого пространства влево). Ни о каком программировании в данном случае речь вообще не идёт. Это, лишь, так называемое "кодирование" (объяснение браузеру на его "языке", что и где показывать). Именно это мы и наблюдаем в так называемых HTML-страницах и на HTML-сайтах. Всё просто и понятно. Если контора, которая делает для Вас такой сайт рассказывает Вам о достоинствах своих "программистов", то гоните её взашей. Программированием там и не пахнет! В реализации таких задач намного важнее дизайн, так как с технической частью, да ещё при помощи современных программ справится любой младенец...
   На данном этапе, однако, важно понимать, что в таком сайте не идёт никакой речи о взаимодействии самого пользователя со страничкой. Максимальная функция - нажатие кнопок для перехода со страницы на страницу. И все, кто на неё зашёл будут видеть одно и то же. Одна картинка для всех, одни кнопки для всех и т.д.
   Так, когда же идёт речь о программировании на сайте? Когда сервер начинает обрабатывать запросы каждого пользователя по-разному, а соответственно, показывать разные картинки разным людям при посещении одного сайта. Например, время Вашего часового пояса (вычисляется по IP) или Вашу персональную страничку, которую видите только Вы и Ваши друзья. Сайт-то, он один и остаётся, но видеть его каждый будет по-разному.
 

ПОЧЕМУ ОДНА И ТА ЖЕ ФУНКЦИЯ МОЖЕТ СТОИТЬ ПО-РАЗНОМУ?

   Возьмём пример - функция Фотоальбома. Всем доступная и понятная. Компьютеры построены на логике, программисты тоже, существа логичные. Попробуем, разложить эту задачу логически.
   ЗАДАЧА: Пользователь нажимает на фотографию. Фотография увеличивается, остальной экран затемняется, пользователь может закрыть данное отображение и "вернуться" к основному списку (альбому).
   Всё просто и понятно? Как бы не так! Решений у программиста будет, как минимум 3:
   РЕШЕНИЕ 1: С нуля написать подобную функцию для конкретного сайта. Срок выполнения: 10-20 часов. Примерная стоимость (допустим, 10 евро в час): 150 евро.
   РЕШЕНИЕ 2: Взять в интернете открытый код, кем-то уже написанный и свободный и адаптировать его под решение текущей задачи. Срок выполнения: 3-5 часов. Примерная стоимость: 40 евро.
   РЕШЕНИЕ 3: Взять готовый модуль фотогалереи (бесплатный или купить лицензию) и настроить его. Срок выполнения: 20-40 минут. Примерная стоимость: 6 евро.
   Во всех трёх случаях задача полностью решена. Второй и третий вариант можно совместить и комбинировать до бесконечности, если необходимо, даже, добавить и первого, но конечная цена всё равно будет ниже! А, теперь смотрите сами!
   Кто выигрывает от применения распространённых решений? В первую очередь Вы! Ваш сайт в итоге будет стоить Вам 800, а не 5000 евро! И какая Вам разница, какой фотомодуль отвечает за реализацию данной функции у Вас на сайте? Зачем говорить: "Я видел почти такое же на другом сайте!"? Разве, можно, а главное, нужно, изобретать велосипед с нуля, если он в итоге, всё равно должен ездить и иметь два колеса и педали? Ответьте сами!
   

ОДИН РАЗ НАЖАТЬ "МЫШКОЙ"...

   Мы рассмотрели варианты решения простой, стандартной задачи. Теперь, давайте, рассмотрим парочку технических процессов и узнаем, что же происходит "за кулисами"...
   -  Сколько-сколько? За что? - топал ногами разгневанный клиент. - Мне всего-то нужно одну кнопку, чтобы человек нажал, получил список всех возможных методов оплаты, мог выбрать, там, СМС или кредитная карта, или российские платежные системы всякие, оплатил и получил свой товар. Один раз нажать "мышкой"! Мне знакомый программист обещал всё за 300 евро сделать и дизайн ещё нарисовать!
   -  А почему Вы обращаетесь к нам? - равнодушно пожимаем плечами.
   -  Я думал, у вас ещё дешевле, у вас же "самые низкие цены"...
   Вопрос электронной коммерции очень актуален в наше время. Принцип понятен: клиент выбирает товар, выбирает метод оплаты, платит, получает товар по почте, либо ссылку на скачивание, если речь идёт о товаре электронном.
   Разработка таких систем "с нуля", как в РЕШЕНИИ 1, стоит десятки, если не сотни тысяч долларов (зависит от сложности системы), а так же постоянной поддержки и доработки на протяжении многих месяцев, отладки, оптимизации и т.д. Только подумайте о том, что на Ваш сайт одновременно зайдёт 10000 человек. И каждый начнёт регистрироваться, создавать корзину, загружать картинки, платить, обрабатывать и сохранять информацию, а потом качать, качать и ещё раз качать купленные материалы. Как долго выдержит сервер Вашего хостинга, за который Вы платите 3 евро в месяц? Правильно, секунд 30... Хорошо, когда речь идёт о маленьком, локальном бизнесе, не массовом продукте. Тогда, данный аспект можно не поднимать к рассмотрению. Но все стремятся к объёмам и развитию!
   Именно потому, что для пользователя покупка будет проходить в "одно нажатие мышкой", равно, максимально быстро, удобно и комфортно - такие сервисы и стоят дорого. И комбинировать, для снижения цены их приходится с уже готовыми решениями, которые не всегда включают в себя все Ваши требования. Значит, нужно либо платить больше, либо "урезать" требования. А больше платить никто не хочет...
   Пользователь кликает мышкой, сервер должен обработать запрос, залезть в базу данных, связаться с сервером платёжной системы, получить от неё "добро" (умножайте сложность этого процесса на количество используемых систем), сгенерировать ссылку для скачивания материала, которая будет работать, допустим пол часа или 5 раз (чтобы один купивший не отдал Ваше "добро" по ссылке на пользование всему интернету), потом закрыть заказ, всё отметить, записать в историю, известить администратора и т.д. и т.п. Устали от перечислений? А теперь представьте, что это надо не перечислить, это надо сделать...
   Как, например, можно реализовать требование заказчика "СМС-оплата"? Поставить ему собственный центр сотовой связи? Заключить договор с компанией и выплачивать ей проценты с каждой оплаты? Да! А как заставить сервер компании отчитываться о полученных СМС вашему сайту? Да, ещё и связать конкретный СМС, с конкретного номера с конкретным человеком и конкретным заказом? Это невозможно в одностороннем порядке! А клиент говорит: "Сделайте! Хочу вот так и ничего больше делать не хочу, заключать договора с компанией не хочу, делиться с ними деньгами не хочу, вы программисты - программируйте!".
   Эх, тяжело жить на свете! :-)

Ваш Интерсайт.

лимузин на свадьбу.