Почему "простые" требования заказчика, иногда, так дорого стоят? Почему действие, на которое уходит одна секунда может программироваться месяц?
Как правильно соразмерить и продумать связку бюджет-желания-реализация?
Что нужно знать перед тем, как обдумывать функции будущего сайта?
Мы стараемся писать статьи только по мере необходимости. Почему? Потому что не хочется тратить наше время на её написание, а так же Ваше на её прочтение. И, если, уж, мы пишем - значит прочтение сэкономит намного больше времени и нам и Вам в итоге. А, глядишь, авось, и житейской мудрости добавит, да, кругозор расширит!
Так, вот! Эту статью пришлось написать, потому что "накопилось". И не без оснований. С удовольствием, скинем этот груз с наших общих плеч!
Сегодня, мы будем говорить о функциях сайта на конкретных примерах! О вершине айсберга "над водой" (читай, то, что видишь на экране) и о самом айсберге "под ней" (читай, то, что не видишь, но что происходит на самом деле).
НЕМНОГО ТЕОРИИ. ЧТО ТАКОЕ САЙТ С ТЕХНИЧЕСКОЙ СТОРОНЫ?
На самом деле, сам по себе сайт (тот, что мы видим на экране) без каких-либо функций это лишь набор текста и картинок, находящихся на определённых позициях и расстоянии друг от друга. Это расстояние может быть чётким (одна картинка, левее на 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 раз (чтобы один купивший не отдал Ваше "добро" по ссылке на пользование всему интернету), потом закрыть заказ, всё отметить, записать в историю, известить администратора и т.д. и т.п. Устали от перечислений? А теперь представьте, что это надо не перечислить, это надо сделать...
Как, например, можно реализовать требование заказчика "СМС-оплата"? Поставить ему собственный центр сотовой связи? Заключить договор с компанией и выплачивать ей проценты с каждой оплаты? Да! А как заставить сервер компании отчитываться о полученных СМС вашему сайту? Да, ещё и связать конкретный СМС, с конкретного номера с конкретным человеком и конкретным заказом? Это невозможно в одностороннем порядке! А клиент говорит: "Сделайте! Хочу вот так и ничего больше делать не хочу, заключать договора с компанией не хочу, делиться с ними деньгами не хочу, вы программисты - программируйте!".
Эх, тяжело жить на свете! :-)
Ваш Интерсайт.