Что значит «хороший программист»?

Я уже неоднократно в своих статьях упоминал о той огромной важности, которой обладает скорость загрузки сайта интернет-магазина. Стоит скорость загрузки страниц уменьшить с 0.5 до 3-4 секунд, то конверсия падает в РАЗЫ. Вы осознаете это? Вдумайтесь очень внимательно! Это значит, что если страницы грузятся более 4 секунд, то ваш доход будет в 3-8 раз ниже. А это разница, которая может поставить крест практически на любом бизнесе.

Посмотрите на график ниже. Это зависимость уровня конверсии от скорости загрузки страниц в крупном ИМ (Walmart.com). По ней четко видно, что граница 1-2 секунды, это тот предел, при котором вы будете впереди планеты всей, а как только время загрузки зашкалит за 3 секунды, вы превращаетесь в унылую серую массу.


Согласно онлайн опросам факты такие:

• 60% пользователей ожидают, что страница загрузится в течение 3с
• Около 75% пользователей смартфонов покинут мобильную страницу, если она будет загружаться дольше 5с
• Те, кто ушел с сайта из-за низкой скорости, скорее всего покинут его, если зайдут другим путем.

Как правило, скорость работы зависит от выбранной системы управления и от «наворотов» сайта», количества товаров и программиста, который реализует функционал.

Знаете, как обычно в веб студиях рождается пункт в перечне достоинств, что «Сайт полностью оптимизирован для SEO»? Очень просто! Просто берут и добавляют этот пункт в перечень достоинств CMS, на основе которой создается сайт. Еще бы, ведь это утверждают создатели CMS.

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

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

1) Программист оптимизирует БД

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

Приведу конкретный пример. Как-то ко мне попал в руки интернет-магазин, у товаров которого было 45 различных свойств: материал, страна производства, оптовые и розничные цены, вес, размеры, количества на разных складах, наличие специальных атрибутов и куча других… Под все эти свойства по умолчанию резервировалась строка в 256 текстовых символов. Время загрузки страницы, которое по куче параметров (по фильтру), выдергивало нужные товары, составляло около 20 секунд. Товаров было более 50тысяч, свойств много, код ужасен. В результате время загрузки было такое, что пользоваться сайтом было нельзя.

После оптимизации одной ресурсов одной только БД, время загрузки упало до 11-12 секунд. В два раза!
Этим обычно никто не заморачивается. А надо.

2) Программист должен ломать голову, чтобы использовать функции и программные решения, которые выполняются быстрее всего и не грузят сервер.

Разные операторы или программные решения будут по-разному грузить сервер. В случае с этим ужасным примером часто вместо того, чтобы сразу вытащить нужные данные из базы одним запросом, сначала вытаскивалось что надо и не надо, а потом обрабатывались в массивах. Это сильно увеличивало время обработки и занимало огромные ненужные ресурсы памяти.

Оптимизация этих процессов в нашем примере сократила время загрузки страницы до 3 секунд

3) Программист должен ломать голову, что из «якобы» нужных динамически обрабатываемых вещей можно убрать в статику и не трогать.

В примере с этим несчастным сайтом, фильтр в зависимости от выбранных значений, считал по остальным параметрам количество товаров, которые выведутся, если выбрать тот или иной вариант по свойствам. Когда значений свойств немного – это не страшно. Но что делать, если их несколько сотен? Возможно, иногда стоит пренебречь динамическим расчетом только по этому параметру, если это дает заметный выигрыш в скорости. Когда мы убрали динамический расчет по параметру кучи брендов, то время загрузки страницы сократилось до 1.2-1.3 секунд.

4) Программист должен кешировать все, что возможно.

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

Те страницы, которые грузились за 1.2-1.3 секунды, при повторном обращении к ним, выдавались частично из кэша и скорость формирования страниц составляла 0.3-0.6с.

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

Стоит ли говорить, что разница в конверсии, не заставила себя ждать?

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

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

Создание Интернет магазина – на чем можно сэкономить?

При создании торгового  бизнеса в сети, часто возникает ситуация, что ценник, который выставляет компания с хорошим портфолио и репутацией, значительно превышает возможности, которыми располагает начинающий бизнес. Для многих стартапов заплатить 400-500 т.р. за продуманный полнофункциональный сайт не представляется возможным. Возникает вопрос, как сократить эти расходы? Ведь сайт необходимо в дальнейшем продвигать и получать с него клиентов. И тут есть очень тонкий момент, о котором большинство владельцев начинающего бизнеса не знают. А именно, что при создании сайта, который предполагается продвигать в дальнейшем, есть вещи, на которых можно сэкономить, а есть такие, на которых это делать категорически нельзя.

Что это за вещи?

Давайте я для начала обосную вещи, на которых нельзя экономить, где она однозначно обернется боком. Нельзя экономить на верстке, нельзя экономить на функционале и нельзя экономить на скорости работы сайта.

Почему нельзя? Очень просто. Если мы будем продвигать Интернет-магазин, то критично важно иметь сайт, с которым удобно работать с мобильных устройств. Сейчас огромное количество людей делают заказы с телефонов с маленьким экраном. Если посмотреть на статистику, то видно, как меняется за последние месяцы число пользователей с мобильных устройств.

На графике типы устройств в процентном соотношении за последние 4 года. Доля ПК уменьшилась с 98 до 83%. Причем динамика с тенденцией ускорения в пользу мобильных устройств.  Поскольку в современных формулах ранжировани поисковых систем преобладают поведенческие факторы, то сайт, который не адаптирован под планшеты и мобильные телефоны, будет заведомо проигрывать при продвижении. Причем это настолько важно, что это одно из необходимых условий для того, чтобы сайт в принципе можно было продвигать.

Пользователи сегодня разбалованы. Если они попадают на сайт, на котором неудобно, то он поищет другой источник. По крайней мере, это на 100% справедливо для контента, который можно  легко найти на других сайтах. В случае с информационным ресурсом, где уникальный контент и особая подача материала, это не так важно, аудитория будет терпеть неудобства навигации, если там действительно что-то стоящее. Что касается интернет-магазина, то пользователь знает, что ваши штаны они могут купить еще в сотне других магазинов, поэтому он уходит от Вас, а поисковики это фиксируют.

Отсюда вывод. Как бы вы не экономили на сайте, верстка должна быть качественной и по крайней мере, 98% пользователей, должны быть в состоянии комфортно работать на сайте. Сюда входит адаптация как для мобильных устройств, так и для ПК для разных браузеров и разрешений.

Примерно та же ситуация со скоростью работы сайта. Обычно, интернет магазин, у которого более 5000 товаров, создает ощутимую нагрузку на сервер и в результате страницы могут открываться по 3 секунды и более. Этого быть не должно. Если страница не открывается за 1-1.5 секунды, то наш избалованный потребитель поищет магазин пошустрее. Чем больше людей из-за этого уйдет, тем хуже будет поведенческий фактор по сравнению с конкурентами, у которых магазин работает быстро и тем меньше шансов на успех при продвижении.

Это основа.

При этом можно экономить на уникальном дизайне, который стоит больших денег. Можно брать готовые решения на универсальном приятном шаблоне и запускать магазин. В шаблоне уже готовый дизайн, готовая верстка и все, что нужно для заливки товаров. Главное, чтобы у шаблона была верстка была адаптивной (сейчас (08.2015) это еще редкость, скорость работы высокая для вашего количества товаров, а функционал покрывал ваши нужды, например, интеграция 1С, платежные системы, возможность простой интеграции с компаниями, занимающимися доставкой и т.п.

Такой вариант, в зависимости от выбранной системы и набора функций может стоить от 25 если на бесплатном движке с фрилансером и до 70 т.р. если сайт делается на основе платной CMS специалистами.

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

Поэтому даже в случае рождения сайта на шаблоне – 25 и 70 т.р. по качеству могут отстоять друг от друга очень далеко ))

Что категорически нельзя?

Сайты конструкторы, а также сайты с закрытым кодом

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

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

Конструктор можно использовать на мой взгляд только как самое дешевое решение (1-3 т.р.) чисто для того, чтобы «поиграться», поучиться и получить какое-то первичное представление, а как все это вообще работает.

Немного о платных и бесплатных движках

В принципе, сейчас довольно много систем, которые по функционалу и качеству практически не уступают платным. Среди таких систем я бы выделил фреймворк MODx, WordPress. Не рекомендовал бы Joomla – ужасная система, тяжелая и плохо совместимая с SEO.

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

Дерзайте. Сэкономить можно. Запустить проект, который покажет, что такое сайт в принципе и куда надо двигаться. Сайт, который запущен по шаблону, но у которого все ОК со скоростью и версткой, можно продвигать. Мало того, его можно будет потом доработать до полноценного проекта с уникальным дизайном, когда вы абсолютно точно будете знать, что вам от сайта нужно. Конечно, стоимость такого апгрейда будет примерно как начальная разработка, но тут вы уже будете делать совершенно осознанный выбор и будете знать, чего ждать от проекта.

Как сделать однозначное ТЗ при создании сайта?

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

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

При таком раскладе, когда ТЗ состоит на бумаге в виде кучи, часто плохо согласующихся друг с другом пунктов, всегда возникает ситуация, что делается макет, очень долго дорабатывается с дизайнером, потом со слезами принимается, верстается, а на этапе программирования начинаются гениальные идеи, чего бы еще добавить/изменить. Как правило, заказчик, который плохо понимает объем работы, возмущается, если его просят оплатить эти работы дополнительно. Еще бы, ведь для того, чтобы внести изменения на этапе программирования на сайт, необходимо куча трудозатрат:

  • Руководителю проекта нужно вникнуть в суть изменения;
  • Далее надо эту суть донести до дизайнера;
  • Дизайнер это должен нарисовать, т.е. изменить уже существующий макет под новые требования. Причем часто изменения таковы, что куча соседних блоков «едут» и надо согласовывать с заказчиком, что и куда можно приткнуть;
  • Макет вторично принимается;
  • Далее верстальщик должен с учетом измененных блоков сверстать измененный шаблон. Замечу при этом, что вносить изменения сложнее, чем верстать страницу с нуля.
  • Потом программист должен внедрить новый вариант верстки. Тут тоже позволю себе заметить, что тут задача усложняется тем, что можно запутаться в вариантах, в результате вся верстка на сайте едет и программист тратит кучу времени, пытаясь понять, где он потерял дополнительный закрывающий тег </div>

Все это серьезные проблемы, которые вызывают неврозы, истерики и несварение как у заказчика, так и у исполнителя.

А ведь давным давно уже существует технология разработки ТЗ, при которой львиную долю неоднозначностей можно избежать. Называется этот зверь – динамический прототип.

Что это такое?

Делается такая штука http://jtm7ml.axshare.com/#p=интернет_магазины

Вот скрин примера (полностью как это выглядит, можно посмотреть по ссылке выше)

Создать такой прототип можно за 2-3 часа. Особенность в том, что время для изменений в этом макете в 100 ниже, чем в сверстанном в реальности сайте. Динамический прототип дает возможность расположить все элементы на будущей странице: тексты, места под картинки, эмблемы, формы, ссылки, слайдеры, баннеры и другие активные элементы. Тексты можно писать сразу реальные, места под картинки можно сразу обозначить, что там будет конкретно.

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

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

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

Если вы создаете сайт – требуйте от ваших разработчиков создание такого прототипа. Это реально сохранит ваши нервные клетки )) Как правило, разработка прототипа стоит отдельных денег, но оно стоит того. В общем виде, полное ТЗ должно состоять из такого прототипа и пояснительной записки к нему. Не в виде большого перечня слабо связанных документов, в виде кучи страниц с различным функционалом или информацией для персонала или пользователей.

Тогда ваш проект будет лишен неоднозначностей. Разработка такого документа стоит от 40 до 120 т.р. в зависимости от сложности задачи. В случае разработки магазина или портала, эти деньги окупаются в 3-5 раз и экономят кучу времени в дальнейшем.

ЗЫ Кстати, у меня можно заказать такую услугу, мои контакты  здесь

Что делать, если сайт попал под санкции Яндекса?

Основная проблема с санкциями, которые Яндекс накладывает за спам с тем, что их довольно часто сложно снять. Например, при явных признаках ссылочного спама или накрутки поведенческого фактора, вы помещаетесь под фильтр, в результате которого даже по НЧ запросам будете находиться за пределами ТОП 30. Единственное, что останется, витальные запросы – т.е. вас будут находить по названию фирмы и сайта.

Что делать, если вы попали под серьезные санкции?

Санкции накладываются по разным поводам и могут затрагивать весь сайт или конкретные страницы на сайте.  За текстовый спам часто расплачиваются только те страницы, на которых спам обнаружен. Как правило, выход из под фильтра за текстовый спам не составляет большого труда. Достаточно лишь привести свои тексты в читабельный вид, убрать злоупотребление ключей из заголовков и через 2-3 апдейта придет в норму. Кроме того, такого рода фильтры не вызывают глобального изменения в трафике.

Совсем другой вопрос, когда вы видите, что ВСЕ запросы посыпались. И при этом посыпались серьезно – на 30-100 позиций вниз и далее. Это значит, что вы попали под серьезный фильтр.

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

Ситуация неприятна тем, что даже если вы поснимаете ссылки, перестанете заниматься накруткой, то даже в этом случае, вам, как и в случае с лишением права управления автомобилем, придется подождать минимум 6 месяцев. Затем, если вы убрали причины, сайт в большинстве случаев должен восстановиться автоматически. Если этого не происходит через 6 месяцев, то необходимо долбить поддержку Яндекс. Иногда это помогает.

Но часто обстоятельства такие, что и это не поможет и сайт будет вечно с запятнанной репутацией.

Итак, что делать, если сайт попал под серьезные санкции?

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

Эти процедуры делаются за 1-2 дня. Вопрос – чем заняться еще 179 дней, которые будут 100% под санкциями?

Ответ простой – запускайте параллельный проект. Вероятность, что этот сайт застрял навсегда, далеко не нулевая, а просто ждать 6 месяцев, а потом еще 3-4 месяца переписываться с Яндексом на тему «почему мой уже белый проект никуда не пускают», удовольствие ниже среднего, и к тому же чревато огромной потерей времени.

Только новый проект надо запускать так, чтобы Яндекс не мог однозначно определить, что это тоже ваш сайт. Добиться этого несложно. У этого сайта должны быть:

  • Другой владелец домена
  • Другие телефоны
  • Другие почтовые адреса
  • Желателен другой сервер (хотя бы другой IP)
  • Желательно указать другой адрес

И начинаете развивать этот проект с нуля. За 6 месяцев можно много сделать с новым сайтом. Такая стратегия даст в любом случае выигрыш. Если первый сайт потонул, то у вас будет источник клиентов, если же его реанимируют, то у вас будет дополнительный источник трафика.

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

Дальше обычно возникает следующий вопрос – как делать клон?

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

На самом деле, для стандартного магазина не надо очень много  переделок. Главным образом потому, что НЕ требуется шаманить с карточками товаров. Все, что вам необходимо изменить – это описания обычных разделов и страницы услуг и т.п. А структуру каталога можно сделать близкой к оригиналу (хотя лучше чуть изменить). Карточки товаров можно оставить идентичными, это нормально, т.к. описание товара обычно краткое и емкое, а технические характеристики в принципе нельзя рерайтить.

Поэтому, если Вы попали под санкции, в первую очередь не надо паниковать. Воспринимайте это как хороший шанс получить еще хороший рабочий инструмент. Естественно, делать этот клон надо точно по современным технологиям – быстрый, адаптивным под мобильные устройства и с вшитыми инструментами А/Б тестирования для реальной работы над ПФ, а не накрутки.