В преддверии релиза CheckTrust: с чего начинается веб-сервис или как я познакомился с Сашей Алаевым

Привет, друзья! Уверен, и вам и мне в будущем будет любопытно перечитать этот пост, поэтому постараюсь написать его хорошо :) Считанные дни остаются до паблик релиза веб-сервиса для SEO-специалистов CheckTrust, к созданию которого я приложил свою руку разработчика, дух архитектора и любовь ярого ценителя искусства. Когда, как ни сейчас, запечатлеть в истории рассказ о том, как он был задуман, как создавался и кто за всем этим стоит. А за одно и поздравить его основателя, ведь у него сегодня день Рождения :) Но обо всём по порядку!


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

Заказчик-неадекват (с чего всё начиналось)

Это был октябрь 2009 года. Тогда я работал рукожопым верстальщиком. Если быть точнее, я был таким человеком, который верстал и собирал за 20$ шаблоны DataLife Engine - cms-ки, известной в народе как ДЛЕ. Мы работали с очень мутным парнем из Украины по имени Вадим - он находил заказы на дизайн, отрисовывал, скидывал мне, после чего я собирал DLE-шный шаблон и получал заветные 20 баксов (правда, перед этим приходилось ещё пару недель у него их выклянчивать).

По правде сказать, Вадим был фиговый дизайнер - все его дизайны были почти одинаковые (зато я научился с закрытыми глазами писать css "font: 11px Tahoma bold;"), но менеджер он был ещё более фиговый. Однажды, когда мы занимались очередным шаблоном, он в изнеможении написал мне в icq: "Всё, я больше не могу, заказчик попался абсолютный неадекват! Поговори с ним сам по поводу вёрстки, я тебе контакт скину." После долгих уговоров (у меня ведь не было никакого желания общаться с каким-то неадекватом) я всё же согласился поговорить с заказчиком. Его звали Александр Алаев.

Алаев Александр Александрович, известный в своих кругах как АлаичЪ - профессионал в области оптимизации и продвижения веб сайтов, блоггер, автор многочисленных публикаций (блог alaev.info), помогающих многим новичкам и мастерам SEO. Создатель популярной программы FastTrust.

Несложно догадаться, что Саша оказался куда более адекватным, чем Вадим :) Более того, он оказался дружелюбным, обязательным, а так же очень интересным в общении! Мне вспоминается, что мы сразу нашли общий язык. Периодически Саша подкидывал мне работу по вёрстке, и это была разнообразная работа: шаблон сайта приюту для животных, интернет-магазин по продаже накладных ресниц, сайт-визитка какому-то стрёмному проповеднику, собиравшему своих адептов где-то в Екатеринбурге :) Были и DLE-экземпляры, из которых мне сразу на ум приходят шаблоны Vibiraem.info и Winterlife.ru, которые, между прочим, живы до сих пор.

Примерно так я представлял АлаичЪ'а в 2009 году

Эпоха DLE - создание мега модулей

Однажды я признался Саше, что на самом деле являюсь не только верстальщиком, но ещё и промышляю программированием. Помню, что даже удивил его этим, ведь даже в аське я у него был записан именно как верстальщик. Это был февраль 2011 года. Чтобы придумать идею, Саше никогда не нужно было много времени, и уже в начале марта он написал мне "Санёк, а ты можешь вывести на одной странице ссылки на все новости DLE?" Именно с этого вопроса и началась, по сути, наша с ним совместная деятельность. 16 марта 2011 года увидел мир наш первый модуль HTML SiteMap для DLE.

Это была бомба. Серьёзно, это было просто великолепно! Читатели блога alaev.info во многом DLE-шники, и для многих этот модуль оказался полезной находкой (тем более, мы распространяли его совершенно бесплатно). За короткий срок мы получили множество отзывов и комментариев, благодарностей. Это так воодушевляет, когда ты видишь, как результаты твоей работы оказываются полезны кому-то ещё!

Модули DLE от команды АлаичЪ и ПартнёрЪ

На волне этого воодушевления, менее чем через два месяца мы выпустили второй модуль - CatFace — SEO оптимизация категорий для DLE, и он стал ещё большей бомбой, чем модуль карты сайта! Количество комментариев к посту, посвящённому CatFace, било все рекорды (Саша даже чистил их, удаляя малоинформативные). Пожалуй, этот модуль принёс немалую долю нашей славы, как DLE специалистов. Саше - как DLE оптимизатора, а мне - как программиста. В то время мне почти каждый день приходили письма с вопросами, пожеланиями или просьбами по разработке модулей. Но лучшие я писал только для Саши и его блога :) Самым прекрасным было то, что мы делали общее дело, делали его хорошо, помогая при том людям. Более того - мы стали настоящими друзьями! Кажется, именно тогда я и пообещал Саньку, что однажды приеду к нему в гости. Забегая вперёд, скажу, что выполнил это обещание :)

От CMS к фреймворкам, от веба к десктопам - новые профессиональные горизонты

Как в личной жизни, так и в профессиональной деятельности, я стараюсь руководствоваться принципом "Ни на минуту не останавливаться в развитии!" DLE - это просто прекрасно, однако он подходит лишь для определённого и достаточно узкого круга задач. К тому же, его ковыряние было интересно лишь на определённом этапе. Я всегда знал, что большие и серьёзные проекты с кучей уникального и сложного функционала делаются как-то иначе, на чём-то другом, но я не знал, как это называется.

С Yii Framework я познакомился примерно в то же время, когда занимался разработкой модулей ДЛЕ. Постепенно осваивая его, я медленно осознавал возможности, которые он даёт. Постепенно, с каждой прочитанной страницей API документации, с каждым новым проектом, для меня как веб-разработчика открывались всё новые и новые горизонты. Мы с моим другом и партнёром Саней Бакаевым (кругом одни Саньки, не говоря уже обо мне самом) собрали на Yii несколько очень интересных и крутых проектов, среди которых популярные сайты Gtp-Tabs.ru и GtpTabs.com, несколько сайтов промо-конкурсов для известных брендов, а так же приложения для социальных сетей VKontakte, Facebook и Одноклассников.

А пока я осваивал новые технологии, АлаичЪ временно покинул веб, покоряя мир десктопного софта! Про покинуть веб - это я не преувеличил. Во время разработки FastTrust Саня действительно исчез из поля зрения месяца на два, как не больше, не писал в блог ни одного поста - вообще не появлялся. Совершенно случайно я ему написал в день релиза программы. На вопрос "Как дела?" он ответил, что программу как-то слабовато покупают, и он ожидал большего. Кто бы мог подумать, что речь тогда шла о будущей программе-легенде, покорившей тысячи веб-мастеров и десятки SEO-студий?

FastTrust бороздит просторы вселенной

Программа действительно превзошла все ожидания, оказавшись незаменимым инструментом для отбора качественных ссылок, а так же чистки ссылочного профиля. После выхода программы Саша с головой ушёл в её развитие. Скорость выхода обновлений и новостей говорит сама за себя - меньше чем за год была проделана просто колоссальная работа, появилось огромное количество функций и вкусняшек, которые сложно даже перечислить! В прочем, не мне о ней рассказывать, ведь разработкой занимался не я. Мне же грешным делом стали приходить в голову мысли, что нам с десктопным АлаичЪ'ем не суждено будет больше посотрудничать. Как я ошибался...

Эволюция ТРАСТ'а или предложение, от которого просто невозможно отказаться

Наверное, из вышесказанного можно заключить, что наше общение с Сашей прервалось? Как бы не так! Профессиональных тем для общения стало меньше, но открылась возможность делиться чем-то личным. В то время на моей основной работе мне надавали по башке за переписку в рабочее время на нерабочие темы, поэтому мы с Сашей писали друг другу большущие электронные письма! Я больше узнавал о его семье, как и он о моей. Познакомился заочно с его женой Катей (мы даже приветы передавали друг другу через Санька) и дочкой Риткой. А ребята заочно знакомы с моей женой Оксаной. Мы делились своими взглядами на мир и на жизнь, которые оказались во многом схожи, делились историями из детства и юношества, и это было очень здорово! Однажды ребята даже прислали нам хитрую посылку с подарками: сперва мне на электронную почту пришло фото загадочной картонной коробки, обклеенной скотчем. А через пару недель я получил и саму эту коробку, в которой был новенький телефон Galaxy Nexus (для меня) и потрясающий блокнот ручной работы, сделанный Катей (для Оксаны).

Осенью прошлого года я ходил на работу в скверном состоянии духа. К слову сказать, работал я в компании АвтоЛига, г. Ярославля - замечательной компании, к которой испытываю благодарность и другие тёплые чувства, но в которой я достиг своего потолка уже пару лет назад. Мне хотелось разнообразной работы, больших и интересных проектов, хотелось участвовать в процессе, чтобы ко мне прислушивались. В общем, мне хотелось движения! Говорят, желания способны материализовываться. Не знаю, верить в это или не верить, но в сентябре Саша вдруг написал мне:

— Саня, привет!

— Привет!

— Как твои дела? Что-то давно не списывались.

— Я, Санёк, вернулся из отпуска и не узнаю себя. Во мне появилась куча энергии, которая уходит в молоко. Меня достало сидеть в этой болотине, хочу двигать жизнь вперёд, но не знаю, какие действия для этого надо предпринять.

— Саня. Это знак может? Я хотел с тобой о важном поговорить, об очень важном.

— Не знаю, знак это или не знак, но мне надо что-то менять, это точно. Говори, Санёк!

— Ты же знаешь, что есть идея создать веб-версию FastTrust, так сказать saas сервис...

Вот примерно с такого разговора я и стал участником проекта CheckTrust. Соглашаться или нет? Такого выбора передо мной даже не стояло, ведь это было то самое предложение, которого я ждал так долго, хотя и сам того не подозревал! К тому же, работать с Сашей - человеком, которого я знаю, кому полностью доверяю... в общем, от такого не отказываются. Нужно было найти себе помощников и взять на себя всё, что касается технической части разработки. В тот же день мы (впервые!) созвонились с Сашей по скайпу и обсудили основные моменты. Он тогда жил ещё в Екатеринбурге, и я в очередной раз пообещал приехать к нему в гости. Мне пришлось уволиться с основной работы, кстати, ушли мы вместе с Сашей Бакаевым, которого я упоминал выше и который оказал и до сих пор оказывает нам неоценимую помощь в разработке. Спасибо, Санёк!

Что такое CheckTrust и как он создавался

Для тех, кто не в курсе:

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

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

После продумывания схемы данных и архитектуры мы стали строить план действий. Уж и не помню что за чем следовало, скажу лишь две вещи - план был очень хороший, но сбыться ему было не суждено, потому что случилось неожиданное - как раз когда мы начинали активную фазу разработки, один из сервисов (а именно, MajesticSEO), который FastTrust использовал в работе, внезапно стал полностью платным. Чтобы не подорвать доверие пользователей, мы забили на план и в экстренном порядке стали придумывать способы помочь им. Саша сразу же купил мощный сервер и максимальную подписку MajesticSEO, а я в срочном порядке склеивал всё это дело воедино. Было решено сделать наш сервер местом, где данные будут кэшироваться на какое-то время, позволяя пользователям повторно их использовать и экономить тем самым немало средств.

Горячее было время! Но мы закончили работы по восстановлению функционирования FastTrust невероятно быстро - на это ушла ровно одна неделя. И 22 октября 2013 года скрипт CheckTrust был запущен, хотя о нём тогда никто ещё не знал. Это была такая прослойка между MajesticSEO и FastTrust. Первое время мы давали всем желающим доступ бесплатно, чтобы как-то компенсировать шок от переставшей работать программы, к тому же, у нас не было никакого внятного биллинга и подсчёта запросов от пользователей. Разумеется, это не могло продолжаться вечно, и я перешёл к разработке системы приёма денег от пользователей (к слову, согласно плану, этот пункт был на самом последнем месте), которая была закончена в ноябре. Хочу выразить огромную благодарность нашим замечательным пользователям, которые отнеслись ко всему этому спокойно и с пониманием! Благодаря вам мы сумели продержаться и продолжать разработку сервиса, который стараемся сделать максимально удобным и полезным для вас!

C декабря по март мы занимались основной веткой функционала - созданием проектов и парсингом основных параметров. За этот срок в нашей лаборатории произошло два важных события: 20 января был запущен мини-сервис BackLinks Checker, предназначенный для тех, кому не посчастливилось попасть под фильтр Google Penguin, а 13 февраля, выступая на конференции All in Top Саша объявил об открытии CheckTrust для бета-тестирования! И вновь я благодарю наших пользователей за активное участие в тестировании! Ваши письма, отзывы и предложения были очень важны для нас и оказали неоценимую помощь в разработке и отладочном процессе!

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

Пока мы были заняты разработкой, Саня Алаев как-то незаметно перебрался из Екатеринбурга в Краснодар, поэтому наша встреча состоялась уже в этом тёплом городе! Мы провели вместе с семейством Алаевых целую замечательную неделю: днём вместе гуляли, болтали, отдыхали, а вечерами не забывали немного и поработать :) Не смотря на то, что я - любитель северной природы, Краснодар мне пришёлся по душе. Это чистый солнечный город, в нём очень много зелени и цветов, народ приветливый и дружелюбный. Жаль только, что не успел увидеть цветущие фруктовые деревья.

В жизни Саня оказался выше, чем я думал (186 см 182 см - почти с меня), но в остальном - именно таким, каким я его себе и представлял. Добрым, отзывчивым, улыбчивым и открытым. Катя (Сашина жена) - очень приятный и интересный собеседник, она прекрасно готовит, и вообще она - большой молодец. Пользуясь случаем, передаю ей привет! А Ритка, их 2.5 летняя дочка, - настоящий маленький ураган. По-моему, все заметили, что она была ко мне неравнодушна :)

А ещё ребята увлекаются фотографией, и они много рассказывали мне о фотоискусстве! Вот такой вот снимок семейства Алаевых у меня получился (я только фотографировал, обрабатывали ребятам сами):

Семейное фото Алаевых, сделанное моей рукой

Спасибо Кате и Саше за дружбу и гостеприимство, за экскурсию по городу, за добрые эмоции и приятное общение! Теперь мы ждём вас в гости!

Оценивая результат, размышляя над ошибками и о методе прогрессивного джипега

Вообще, я надеялся, что мы произведём паблик релиз CheckTrust прямо там, в Краснодаре. Но мы не успели реализовать всё, что задумали, и он оттянулся больше, чем на месяц. Сейчас, когда красная ленточка уже виднеется на горизонте, можно делать кое-какие выводы и анализировать приобретённый опыт.

Что мы сделали правильно:

  • Ещё на этапе обсуждений мы старались продумать не только базовый функционал, но и возможные векторы его расширения. Это позволило нам внедрить многие функции, которых не было в изначальном плане, ещё до паблик релиза.
  • Прежде чем что-то сделать, мы начали с создания схемы данных и прототипирования скриптов. Можете взглянуть на low-tech версию системы парсеров и php-демонов:

    Low-tech версия CheckTrust

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

В чём, на мой взгляд, мы ошиблись:

  • Перфекционизм - и друг нам, и враг. Мы с Сашей Алаевым оба идеалисты и хотим всё сразу делать хорошо. В этом наше неоспоримое преимущество - мы действительно делаем хорошие и качественные вещи. Но часто перфекционизм играет злую шутку со своими обладателями - вместо того, чтобы как можно быстрее произвести релиз, мы причёсывали наш сервис, возились с цветом кнопочек, размером, шрифта. Разумеется, это всё тоже нужно делать! Но всему своё время. Просто пока сервиса вообще не существует в рабочем виде, приклеивание рюшек - это скорей удовлетворение своих эстетических потребностей, а не нужд пользователей. А идеал недостижим, и так можно вообще никогда не запуститься.
  • Под каждую нужду я закладывал глобальный функционал. Ничего не могу с собой поделать. К примеру, стояла передо мной задача интеграции с биржей Sape. Ясная и чёткая задача, но меня понесло в дебри. Я стал делать функционал для подключения сразу многих бирж: создал для списка бирж отдельную таблицу в базе данных, в форме создания проекта сделал выбор бирж из списка с валидацией (ничего, что биржа там пока только одна), стал писать корневой класс агента для работы с биржами, стал его расширять для пока одной-единственной биржи. С одной стороны, это всё тоже хорошо и правильно, однако это оттянуло запуск почти на целый месяц. Абстрагирование, если оно не касается базового функционала, нужно было делать уже после запуска в рамках развития сервиса.
  • В итоге мы слишком сильно затянули релиз - в общем и целом, думаю, направление мысли понятно. Каюсь! Буду исправляться :)

А ведь это была попытка реализовать метод...

...прогрессивного джипега! Однажды меня очень зацепила статья Артемия Лебедева о таком принципе организации времени в процессе разработки. Суть этого метода заключается в том, что в любой момент времени проект готов на 100%, отличается лишь степень его проработанности ("прожаренности"):

Метод прогрессивного джипега

Приступая к разработке CheckTrust, я вспоминал о нём не раз, и хотел его реализовать. Удалось ли нам это? И да, и нет. Но мы будем стараться, ведь правда, Санёк?

С днём Рождения!

А на самом деле этот пост я хотел приурочить не только ко дню рождения CheckTrust, но и к Сашиному 27-летию. Мой папа всегда говорил, что к 27 годам мужчине можно жениться - у него голова встаёт на место. Саня! Уверен, что твоя голова и так уже на месте, и не сомневаюсь, что именно там она и останется! Желаю добра и мира тебе и твоей семье, желаю никогда не останавливаться в развитии и самосовершенствовании! Желаю исполнения желаний, и чтобы на их место вставало множество новых прекрасных идей!

Саша Алаев и я

К твоему дню Рождения я приготовил маленький ностальгический сюрприз (что уж поделать, весь этот пост похож на мемуар). Хочу показать тебе то, с чего всё начиналось - ту самую первую вёрстку, которую я для тебя сделал. Вот она - старенькая и кривая вёрстка SlimDown - именно она нас познакомила :)

С днём Рождения, друг!