Блог Александра Левашова

Пишу о веб-разработке на Ruby on Rails, маркетинге и жизни

Алгоритмы, ReactJS и другие новости

В последнее время у меня не много новостей. Однако, я стараюсь фиксировать свой прогресс и достижения в письменном виде. Это помогает собрать все мысли воедино, вернуть фокус на цели, да и просто весело)

Основная работа

Ну что могу сказать? Спустя полгода «жёсткой» коммерческой разработки, меня уже не пугает legacy-код) Я могу достаточно быстро развернуть любой проект и продебажить его, чтобы понять как он там работает.

За это время я успел поработать на трёх разных, достаточно крупных, рельсовых проектах и пощупать их изнутри. Все проекты работаю в связке Rails + ReactJS с примесью рельсовых вьюх (на Slim или на Haml).

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

И это меня конечно, несколько, демотивирует...

С другой стороны, есть возможность глубже изучить рельсовый код, посмотреть на работу разных гемов и погрузиться в инфраструктуру вокруг проектов (GIT, деплой, работа на сервере и так далее). В этом отношении появилась некоторая «беглость», что меня очень радует.

Алгоритмы

Я, наконец, взялся за своё фундаментальное образование и начал учить алгоритмы и структуры данных.

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

Хоть весь код там написан на Питоне, мне достаточно просто и интересно было всё это переписать на Руби. Самое прикольное, что вместе с написанием кода и использования разных входных данных, приходит понимание, чем одни алгоритмы лучше других и почему они работают так, а не иначе.

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

Паттерны проектирования

Помимо алгоритмов и структур данных я также занялся изучением паттернов проектирования.

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

Интересно, что какие-то из них я использовал ещё будучи не знакомым с ними) Сейчас изучаю порождающие паттерны, типа фабрик, но также структурные и поведенческие.

Все изученные паттерны я также храню в отдельном репозитории.

ReactJS

Весь август я провёл погружаясь в Реакт. Не то, чтобы я так сильно хотел стать full-stack разработчиком, скорее просто для общего развития и понимания, как Реакт взаимодействует с рельсами.

В процессе работы у меня было немного свободного времени на одном из проектов. Где я поковыряться с ним чуть более полно.

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

Получилось прикольно! Теперь хочу сделать свой блог в этой же связке.

SMM Collector

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

В общем и целом, всё хорошо)

32)

Привет. Вот и прошёл ещё один год моей жизни) Отличный повод подвести небольшие промежуточные итоги.

Оглядываясь назад, мне до сих пор не верится какой огромный путь я проделал за эти два года. А сколько событий произошло за это время! Жизнь увеличила свою интенсивность: ощущаю себя на гребне какой-то очень сильной, и завораживающей меня, волны. Могу точно про себя сказать, что жизнь моя началась именно после тридцати. Та самая, о которой я так давно мечтал.

Новые знакомые, куча разных возможностей и ещё несколько важных изменений, о которых должны знать только двое (и один из них я :) ). Ну и конечно же мой окончательный переход в веб-разработку и переезд в Москву.

За пять месяцев жизни в Москве я смог оказаться на концерте Muse в Лужниках, побывать на выставке Фриды Кало, увидеть спектакль «Дон Жуан» в театре «Сатирикон» (и ещё раз офигеть от актёрского таланта Константина Райкина), да и просто погулять по Москве (о-о-о, это отдельный вид удовольствия).

Знаете, я никогда не был скептиком или прожженным материалистом. Вообще для IT-шника у меня уж больно «магическое» мышление, не свойственное людям моей профессии. Магическое оно в том смысле, что я умудряюсь видеть закономерности там, где их, на первый взгляд, и быть-то не может. Но анализируя всё это «задним» числом, начинаешь осознавать, что всё это я когда-то уже ранее вознамерил, а затем просто и методично воплотил это намерение в свою жизнь. Со стороны кажется, что это было легко, но за этим всем скрыт чудовищный объём работы, если не пахоты.

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

Мне нравится Москва, но это не то место, где мне хотелось бы прожить всю свою жизнь. И вот что я подумал. Если удастся разыграть свои карты мудро, то чем чёрт не шутит: вдруг я окажусь в какой-нибудь тёплой европейской или азиатской стране?

Этого возможно добиться в двух случаях:

  1. Либо увеличить свою стоимость как специалиста (возможно продавая себя за рубеж, напрямую заказчику).
  2. Либо создать что-то своё (коммерчески успешный продукт или компанию, которая занимается разработкой веб-приложений на заказ).

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

Но теперь я точно знаю, что всё будет хорошо!)

Новая работа, переезд и запуск SMM Collector

Всем привет. С момента последней записи, в моей жизни произошло несколько важных изменений.

Я запустил SMM Collector, нашёл работу Ruby on Rails разработчиком и переехал в Москву)

А теперь по порядку.

Москва и новая работа

Прошло ровно два месяца как я был принят на работу RoR разработчиком в одну из московских компаний, которая занимается разработкой на заказ.

Окончательно осознав, что в Краснодаре работу мне не найти, в середине января я решил испытать удачу, изменив в своём резюме: «Готов к переезду в Москву».

Каково же было моё удивление, когда резко выросло количество собеседований и откликов со стороны московских рекрутёров.

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

В общем, уже через неделю после принятия оффера, я оказался в Москве-сити.

И сразу сделал вот такое фото, для истории:

Для меня переезд был особенно волнительным мероприятием, так как последние 14 лет я прожил в Краснодаре.

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

А вот такой вид открывается из окон офиса:

О самой работе возможно расскажу как-нибудь в другой раз. Но если коротко, то мне повезло. И с проектами и с командой.

Сейчас один рабочий день по интенсивности проходит как три. За эти два месяца

  • Я, наконец, узнал что такое коммерческая разработка.
  • Стал лучше понимать как работает React и как он взаимодействует с рельсами через API.
  • Теперь больше и глубже работаю с Git.
  • Задеплоил приложение на 4-х разных серверах, используя Docker
  • Настроил CI в Jenkins для production окружения.
  • А ещё я очень много дебажу)

Работы много и она интересная. Приходится очень быстро учить разные вещи и сразу внедрять их в работу. Это стресс, но пока мне всё нравится)

SMM Collector

Ещё я, будучи уже в Москве, доделал и запустил свой второй SaaS-проект: https://smmcollector.ru

Это сервис поиска целевой аудитории для таргетированной рекламы ВКонтакте.

Там реализовано всё, что я планировал сделать на первом этапе:

  • Реализовал ServiceObject паттерн, добавив новый слой, чем существенно облегчил себе жизнь.
  • Отрефакторил код, который переиспользовал после предыдущего проекта. Стало красивее)
  • Научился работать с API ВК, реализовав сложные сценарии для поиска.
  • Поработал с отложенными задачами (пощупал CRON).
  • Глубже поработал с AJAX.
  • И сделал ещё кучу других интересных (и не очень) задач.

Когда я уже всё сделал и запустил тестовую рекламу, то обратил внимание, что регистраций много, но оплат практически нет.

Доступ к сервису по модели: «Плати сколько хочешь»

Я долго думал и решил, что не буду пока брать за этот продукт деньги.

Любой пользователь ВКонтакте может зайти в личный кабинет и начать работу c сервисом абсолютно бесплатно.

Сейчас, в планах собрать первую базу пользователей, расширить функционал и получить отзывы.

А после того как доведу продукт до ума, то введу за него плату.

Вот как-то так всё)

О работе, митапе, Руби и Краснодаре

Привет.

Перед Новым Годом у меня в жизни всегда происходит какой-то кризис. Сейчас, например, у меня резко прекратился поток заказов на фриланс (вёрстку сайтов). Пока нет заказов делаю свой второй проект на рельсах по сбору аудитории из ВКонтакте для настройки рекламы.

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

Также рельсы не перестают меня удивлять!) Каждый раз открываю для себя что-то новое. Особенно радует как один и тот же код ведёт себя в разных окружениях.

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

В итоге, я всё же сделал базовый MVP (выгрузил в прод), правда всего с одной рабочей функцией. Остальные страницы я пока «закрыл» и буду добавлять и открывать по мере готовности. Сделаны все стили, приложение работает на мобильных устройствах (хотя в этом и нет особого смысла), но его нужно ускорить, так как есть проблема со скоростью загрузки страниц. С текущими скриптами не работает turbolinks. Пока не пойму почему .

Как только будут готовы первые восемь сценариев, сделаю полноценный запуск.

Как я на митап сходил и рубистов нашёл.

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

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

Видео с митапа, где я общаюсь с двумя рубистами:

Из беседы я узнал, что:

  • В Краснодаре всего два работодателя, которые что-то пишут на Руби.
  • Практически большинство сильных рубистов уезжает либо в Москву, либо заграницу, так как в регионе нет рынка для этого языка / технологии. А если работа и есть, то она очень хорошо прячется).

И это на самом деле грустно, потому что устроится на работу Rails разработчиком здесь с небольшим опытом практически невозможно. Либо совсем уже работать «за еду», чего я объективно не могу себе позволить в силу возраста (я уже давно не студент).

И дело даже не в моих запросах. У меня коллега работал в местной компании на должности Junior-а за 15000 рублей в месяц, без какого-либо обучения. А со специалиста Strong Junior, зарплата которого 35 тыс. рублей, спрос как с Middle. И это в Краснодаре.

Отчасти это происходит потому, что соискателей больше, чем работодателей. Типичные законы рынка, спроса и предложения. Это нужно просто принять.

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

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

Я рассматривал ещё вариант выйти на Upwork, но там свои заморочки, о которых расскажу как-нибудь в другой раз.

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

Про Руби и Питон.

Изучая рынок труда в Краснодаре я вспомнил забавную историю о том, как в 2016 году впервые выбирал свой первый язык для серверной разработки. На тот момент я работал интернет-маркетологом в строительной компании, но уже подумывал о том, чтобы стать веб-разработчиком. И вот после работы, по вечерам, я учился писать свой код и верстал простые странички на HTML и CSS.

Изначально, мой выбор был между Руби, Питоном и ПХП.

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

  1. Лёгкость изучения.
  2. Востребованность на рынке сейчас.
  3. Перспективы в дальнейшем.

Именно в таком порядке. Для меня было важно быстро стартануть и остаться в этой нише надолго.

Тогда всей хейтили ПХП, мне он тоже не сильно нравился из-за своего синтаксиса.

В итоге, в самом начале своего пути, я остановил свой выбор на Руби (как мне тогда казалось, из-за его лёгкости). Помню как первый раз в жизни устанавливал Ubuntu, а затем два дня пытался установить Руби и Рельсы. Было много боли и слёз.

Однако тогда я ничего не понял в Руби. Для меня это была какая-то клинопись. Да и Рельсы для меня казались космосом. Интересно, что в Руби меня сильнее всего запутывал и смущал его синтаксический сахар. Мне тогда казался непостижимым например такой код:

arr.each { |n| arr_new << n + 1 }

Тогда все эти скобки, стрелочки, палочки и прочие штуки приводили меня в замешательство.

В итоге я решил попробовать Питон. Каково же было моё удивление, когда я узнал, что он уже был установлен в Ubuntu). Я воспринял это как знак Вселенной и погрузился в его изучение.

Мне понравился его синтаксис и ООП. Хороший и понятный язык. Но когда пришёл черёд изучать Джанго (я ведь хотел заниматься вебом), то понял, что ни черта не понимаю. Я учу-учу язык, копаюсь в фреймоворке, а сайта как не было, так и нет.

Сейчас я понимаю, что это нормальная практика в обучении, когда сложность низкая, а потом она резко возрастает, но тогда меня это жёстко деморализовало. Настолько, что я переключился на ПХП.

Самое страшное, что может приключится в ПХП, это то, что у тебя всё сразу начнёт получаться. Это как наркотики. Сначала тебе хорошо (в малых дозах). Ну подумаешь, что синтаксис немного сложный. Зато несколько строк и вот у тебя отправка почты готова. Но как только доза увеличивается (я дошёл до ООП) у меня начался жёсткий «bad trip». Как будто я спустился в ад. Сравнивая ООП этого языка с тем же Питоном, я понял, что больше не хочу ничего на этом писать. Никогда.

Я прошёл все стадии: отрицание, гнев, торги, отчаяние и наконец, принятие и вернулся на Руби. Мой опыт от знакомства с Питоном и ПХП не прошёл бесследно. После них, синтаксис и ООП Руби показались мне чем-то потрясающе понятными и простыми для применения.

Я полюбил этот язык. Круг замкнулся, я остался писать на Руби. Да и Рельсы теперь выглядели понятнее.

Так вот, ещё в 2016 году я мониторил рынок вакансий на Руби и Питоне в Краснодаре. И тогда было 0 и 8 вакансий, соответственно.

Сейчас соотношение такое: около 1,5 вакансии на Руби, и больше 60 на Питоне. Причём у Питона есть много вакансий с уровнем Junior, да ещё с хорошей оплатой на старте.

Если смотреть на  Upwork, то по ключевому слову Ruby выводится около 600 вакансий и 2500 на Питоне.

Если смотреть российский рынок труда, то около 80% всех вакансий по Руби находятся в Москве.

К чему я всё это говорю?

Не к тому, что я поставил не на ту лошадку. Просто реальность такова, что для профессионального роста мне видимо придётся покинуть город и попытать счастья в Москве по своему стеку. Просто из меня сейчас выйдет лучше рубист, чем питонист. Я не смогу выделить время на изучение ешё и Питона, так как работа нужна уже сейчас. Хотя и не отрицаю, что в будущем вернусь к Питону (если не для веба, то для анализа данных, например).

В общем, если не найду работу здесь, то буду идти на Москву)

Фрилансим, пилим очередной стартап и думаем о будущем.

Алоха!

Не получается у меня регулярно вести блог, публиковать заметки. Но сегодня пятница, все планы на вечер по-рушились, поэтому я не придумал ничего другого как сидеть за компом, разбираться с JSON API и пытататься понять как это всё пишется на рельсах.

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

Новостей не так, чтобы много, но они есть.

Фриланс

Я развязался с SimpleAdmin и вновь вернулся на вольные хлеба. Сейчас занимаюсь фрилансом по старым клиентам, плюс беру интересные заказы на биржах. В основном пишу парсеры на mechanize и nokogiri. Все парсеры есть здесь.

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

Новый проект

Кроме того, я медленно, но верно делаю SMM Collector — сервис для сбора аудитории.

Сейчас готов основной лендинг и я работаю над внутренним кабинетом.

Я долго искал нужный мне шаблон, в итоге нашёл его, сейчас переверстываю под себя.

Вот так сейчас выглядит внутренний кабинет:

Что уже сделано с последней новости:

  • Авторизация через ВК сразу с лендинга (в один клик, что очень удобно)
  • Оплата через Робокассу.
  • Организовал все роуты и архитектуру приложения, которую относительно просто масштабировать, в которой мне было бы удобно ориентироваться исходя из того, что в будущем нужно будет добавить.
  • Базовый функционал для сбора аудитории (то есть сервис по ключу, возвращает данные).

Что ещё предстоит сделать:

  • Очень много вёрстки внутренних страниц (нужно сделать формы и поля, изменить иконки)
  • Под каждый функционал прописать свои методы (это будет не сложно сделать, так как подготовительная работа уже проведена).

И всё. После этого можно деплоить в прод)

Разработка происходит относительно быстро, что меня радует.

Обновление приложения «Твой ЖК»

Первое приложение, как первая любовь — остаётся в твоём сердце навсегда)

Я не забил на него, продолжаю развивать и поддерживать.

Если коротко, то я поменял модель оплаты. Снизил стоимость до 800 рублей и изменил тарифы. Теперь клиент оплачивает не за месяц, а за проверки. То есть оплатив 800 рублей, он получает неограниченный по времени доступ, пока не истратит все свои проверки.

У меня нет иллюзий по поводу того, что эти изменения кардинально увеличат вероятность покупки, но даже если у меня будет 1 продажа в неделю, это лучше чем 0.

Всегда ловлю себя на интересном ощущении восторга, когда мне на почту прилетает уведомление об очередной оплате) Приятное ощущение, надо сказать.

Плюс Росреестр продолжает подкидывать сюрпризы.

Он установил капчу на каждый свой поиск.

Я два дня потратил на то, чтобы решить эту проблему! Копался с гемами типа captcha_solver и напрямую с библиотекой распознавания изображений tesseract-ocr, но ничего не заработало. В итоге, я тупо купил доступ к AntiCaptcha, настроил проверку и оно заработало.

Правда теперь время парсинга с 10 секунд увеличилось до 1-2 минут, но оно работает и это главное.

Вообще, Росреестр, да и любая организация или компания, которая предоставляет доступ к своему сервису по API, может в любой момент перекрыть кислород. У того же ВКонтакте есть ограничения по использования API. Это очень опасная зависимость и высокий риск. Я всё это прекрасно понимаю. Но, во-первых, это опыт. Во-вторых, после второго приложения я вернусь к идее создания независимого ни от чего проекта. Лучше свой API сделаю)

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

Самообразование

Выбрав профессию веб-разработчика, занимаясь программированием, я точно осознал, что мне придётся смирится с мыслью о постоянном обучении. Это неизбежный и естественный процесс. И мне это доставляет удовольствие, узнавать что-то новое. Я к этому готов.

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

Я отобрал для себя то, чем буду заниматься в ближайшем будущем, в течение 2-3 месяцев.

RSpec и TDD

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

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

Для себя я добавил в список для изучения Майкла Хартла, который написал книгу по Rails 5. Я пробежал по ней взглядом и обнаружил, что он перед написанием основного кода, сначала пишет тесты. Прежде чем копать документацию RSpec мне нужно привить эту практику (TDD) в своей повседневной работе, плюс подтянуть английский, поэтому в ближайшее время начну делать по ней клон Твиттера, плюс ещё раз освежу знания по рельсам.

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

Redis и Sidekiq

Одно время я хотел использовать эти технологии в «Твой ЖК», когда мне нужно было реализовать отправку писем по расписанию, через день после регистрации, но оказалось что Sidekiq не работает без Redis. Задача показалось сложной и я отложил её до лучших времён. В итоге, мне так и не довелось поработать с Job-ами.

Я вижу частое упоминание Redis-а и Sidekiq в вакансиях, понимаю их пользу и для чего они нужны, но до этого не применял их. Скорее всего также займусь ими одновременно с RSpec, параллельно изучая Хартла.

Плюс попробую применить в своих реальных проектах для закрепления опыта.

ООП, паттерны проектирование и следование styleguide

А это я уже делаю сейчас. Читаю Сэнди Метц, её Ruby ООП. Расширяю кругозор, смотря в сторону ServiceObject и PhormObject. Плюс мне довелось глубже поработать с модулями.

И во всём этом многообразии технологий и знаний, изучение Rails происходит само собой. Плюс JavaScript, Docker и другие не менее важные штуки, но это всё будет уже в январе следующего года иначе меня разорвёт.

Вот такие вот новости)

Жизнь, проекты, работа и фриланс

Всем привет! С момента публикации последней записи прошло 2 месяца. За это время произошло очень много изменений о чём я сейчас расскажу.

Провал «Твой ЖК»( ! || ? )

Во-первых, я наконец доделал «Твой ЖК», но полностью провалился по продажам. Причём самих регистраций достаточно много, но вот конверсия в продажу жёстко страдает.

Поговорив с теми клиентами, кто купил доступ и протестировал мой продукт, я сделал для себя неприятные, но очень важные выводы.:

  • Росреестр не всегда отдаёт корректные данные.
  • Иногда он вообще не даёт данные по некоторым объектам, из-за чего мне пришлось вернуть деньги клиенту.
  • Пользователям в целом не достаточно просто данных о продажах, им нужны расширенные данные, которые Росреестр просто не отдаёт.

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

В итоге, моё приложение не принесло мне ожидаемых прибылей. Мой продукт в текущей формате — коммерчески неуспешен.

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

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

Но можно ли считать это провалом?

Нет. И вот почему:

  1. Проект прокачал меня как RoR разработчика. Я выучил очень много новых гемов, глубже погрузился в рельсы, решал интересные и нетривиальные задачи.
  2. У меня остался код, который я могу переиспользовать в своих других проектах, ускорив их запуск.
  3. Я получил хороший опыт продвижения стартапа. Осознал важность подготовительной (исследовательской) работой перед запуском и важность маркетинга.
  4. В моём портфолио +1 готовое приложение. Целый SaaS-сервис на минуточку!
  5. Благодаря этому приложению я нашёл себе работу. :)

Работа в SimpleAdmin

И это вторая важная новость. :)

В начале октября я устроился удалённо RoR разработчиком в компанию SimpleAdmin. Для меня это удивительная возможность поработать над интересным проектом, изучить как происходит коммерческая разработка и прокачать свои навыки backend-разработчика.

В нескольких словах о компании и её продукте.

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

В компании я работаю backend-разработчиком. Первая неделя была особенно сложной. Вникать в чужой код и погружаться в новый проект тяжеловато. Много абстракций. Я впервые увидел, что код в контроллерах генерируется без знакомых index, new, create и так далее, а вынесен в отдельный класс, подключенным модулем Crudify)))

Что мне особенно нравится, это то как организованны рабочие процессы (workflow). Опыт индивидуальной и командной разработки очень сильно различается. Какое-то время я к этому привыкал, но сейчас мне это очень нравится.

За месяц работы я узнал кучу всего нового. Стал работать с модулями и пространством имён, познакомился с Haml, подружился с Gitlab и т. д.

Успел сделать несколько интересных фич. Не знаю сколько это всё продлится, но работа интересная.

Новый проект

Однако я не оставляю попыток закрепиться на поприще стартапов и в свободное от основной работы время пилю второй свой проект.

Я делаю сервис, который собирает аудитории для ретаргетинга ВКонтакте, типа Церебро или Segmento-Target.

Важный вопрос — зачем ещё один такой сервис?

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

Есть предприниматели и маркетологи, а также им «сочувствующие» (типа меня), которые хотят собрать аудиторию за один день. Им не нужна подписка на месяц, так как они занимаются этим не профессионально, но им нужно быстро, качественно и, главное, не дорого собрать аудиторию за один-два дня, чтобы запустить рекламу в том ВКонтакте.

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

Вот я и хочу решить эту проблему. Плюс этот сервис планирую использовать в своей работе.

Целевые запросы в директе на эту услугу есть, то есть клиентов можно получить достаточно быстро. И меня не пугает конкуренция, так как у низкие издержки. Я могу демпинговать)))

Бизнес-модель та же, SaaS-сервис по подписке, но с тарифами на 1-2 дня.

Что уже готово:

  • Авторизация в сервисе по профилю ВК в один клик, что очень удобно.
  • Общий функционал парсинга данных по API Вконтакте. Вообще интересно было поработать с API, чтобы понять как это всё работает. В ТвойЖК я тупо парсил данные из Росреестра, так как их API не отдаёт нужные мне данные. :)
  • Сбор сообществ по ключевым словам и администраторов сообществ (мой первый функционал, который я планирую в дальнейшем расширять.)
  • Готов код для оплаты сервиса, который просто нужно подключить.

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

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

В общем, работа идёт. Как будет готов MVC, сделаю анонс.

Вёрстка лендингов и посадочных страниц на заказ

И в заключении друзья, важное объявление, хотя его нужно было сделать отдельной статьей.

В свободное от всех дел время, я периодически беру заказы на верстку посадочных страниц (лендингов).

Верстаю на HTML5/CSS3, используя Bootstrap 4.

По срокам: делаю за 1-3 дня, в зависимости от сложности задачи. Стоимость работы от 4500 до 6000 рублей.

Если вам быстро нужна хорошая адаптивная вёрстка, обращайтесь ко мне. В подарок бесплатно настрою Метрику и Цели.

Писать можно в личку ВКонтакте или на почту alevash1@gmail.com

Промежуточные итоги и цели до конца 2018 года.

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

Итоги после обучения

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

Нужно что-то спарсить? Написал свой парсер. Нужно протестировать какую-то гипотезу? Быстро собрал прототип и запустил его в продакшн.

Чувствуешь себя тем самым парнем с фото в начале поста) Офигенное чувство свободы!

Кстати, скоро будет новый осенний поток. И если вы хотите пройти обучение, пишите мне в ВК или на почту. Я скину вам промокод на хорошую скидку в 8500 рублей.

Ещё я ушёл со своей основной работы и занимаюсь теперь только веб-разработкой на RoR. Поскольку фрилансить как руби разработчик я пока объективно не могу, то по старым связям беру заказы на фрилансе (сверстать какой-нибудь лендинг или настроить рекламу).

Если говорить о Rails-разработке, то практически 80% времени я занимаюсь своим сервисом «Твой ЖК»

Твой ЖК — сервис аналитики жилых комплексов

Практически все события этих 5-ти месяцев связаны с моим приложением, которое я пилил параллельно своей работе и учёбе. В него вложено такое количество часов моей жизни, что практически все мысли и идеи так или иначе теперь связаны именно с ним.

За это время я написал такое количество кода, что мне самому не верится в то, что я это вообще сделал:

  • Два раза поменял основную страницу сайта.
  • Сделал свою небольшую маркетинговую воронку продаж.
  • В разы ускорил проверку любого жилого комплекса.
  • Подключил и настроил приём платежей по API с Робокассой.
  • Сделал свою внутреннюю аналитику по пользователям и отслеживаю её для дальнейшего маркетинга.

Теперь главная страница сайта выглядит так:

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

Я подсчитал свою экономику и выяснил, что на текущий момент мой ROMI равен 86%!!!

То есть спрос есть, идея провалидирована, она прибыльна. Самое время всё это масштабировать.

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

В общем, расчехляю все свои текущие знания по маркетингу, продолжаю гуглить новую информацию по продвижению стартапов (для меня этой новый рынок). Ещё читаю материалы зарубежных коллег. Очень круто заходит https://www.indiehackers.com вот этот ресурс. Жалко, что у нас нет ничего подобного.

Продукт тоже нужно развивать. Для этого я сейчас смотрю в сторону React-а (для новых фич нужен хороший динамический интерфейс) и Sidekiq (чтобы опять же ускорить процесс сбора и обработки данных, сделав всё это в фоне).

На самом деле, моя дорожная карта разработки (и продвижения) продукта обширна и постоянно чем-то пополняется.

Скучать как видите не приходится)

Однако есть и проблемы

В ходе работы над проектом я столкнулся с одной очень неприятной проблемой. Мне объективно сейчас не хватает фундаментальных знаний в ООП, паттернах разработки, алгоритмах и организации кода. Поясню, что я имею ввиду.

Допустим, мне нужно добавить в проект какой-нибудь новый функционал. Я его добавляю. Но насколько хорошо я его сделал?) Это главный вопрос.

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

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

У меня пока же всё происходит медленнее, чем хотелось бы. И меня это парит...

Цели до конца года

Я бы с удовольствием устроился Rails-разработчиком в продуктовую или аутсорс компанию.

Во-первых, мне нужен коммерческий опыт. Во-вторых, мой процесс обучения будет происходить быстрее. Если бы эта работа была ещё и удалённой, то было бы вообще огонь!

Но будем реалистами, вероятность этого события «крайне мала». В Краснодаре таких вакансий практически нет. По разговорам с другими выпускниками ХП, устроиться Rails-разработчиком на удалёнку не самое простое мероприятие, если у тебя нет хотя бы года опыта.

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

Это более вероятное событие, чем предыдущее. И пока все силы и внимание направлены на достижение этой цели. Плюс, опять же, отличный проект в портфолио будет.

Так что я пока партизаню)

Всем спасибо за внимание.

Твой ЖК — узнайте сколько продаж у жилого комплекса вашего конкурента!

Спустя почти 4,5 месяца разработки, я готов представить MVP своего продукта — инструмент аналитики продаж застройщика “Твой ЖК”.

Сервис позволяет по кадастровому номеру земли, на котором построен жилой комплекс (ЖК) получать напрямую из Росреестра информацию о его продажах, в формате: год, месяц, количество продаж.

Попробовать бесплатно можно по ссылке: https://tvoyjk.ru

Кому этот сервис может быть полезен?

  1. Маркетологам строительных компаний застройщиков, для мониторинга и анализа конкурентов.
  2. Аналитикам рынка жилой недвижимости, для исследования состояния рынка строительства и продаж объектов по ФЗ-214.
  3. Агентствам недвижимости, для проверки состояния застройщика и поиска наиболее выгодных объектов для продаж.

Что можно делать с этими данными?

Если вы маркетолог в строительной компании, то можно взять несколько ЖК в одном районе, выгрузить данные по каждому из них и сравнить друг с другом:

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

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

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

Насколько эти данные актуальны, можно ли им верить?

Все данные о сделках ЖК попадают в Росреестр. Они могут приходить с задержкой до месяца, что обусловлено качеством “работой” самого Росреестра.

Но все данные которые у него есть в базе, оперативно попадают к вам.

Что реализовано на сервисе уже сейчас:

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

Среднее время проверки по одному ЖК с 4 кадастровыми номерами и выгрузкой готовых данных из Росреестра занимает не более 45 секунд.

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

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

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

Попробовать бесплатно сервис “Твой ЖК” можно перейдя по ссылке: https://tvoyjk.ru

Я вижу матрицу... Или матрица видит меня?)))

И вот прошло четыре месяца моего обучения. Можно подвести предварительные итоги.

Основной блок по рельсам завершён. Идёт продвинутый блок.

Из свежего, появился новый проект BBQ: https://bbqmaster.herokuapp.com/

Это приложение по организации самых разных событий. Крутое приложение, надо сказать. В нём реализовано очень много интересных фич: закрытые события, геолокация, уведомления и т. д.

Информации настолько много, что мозг раскалывается.

Ещё я изучил Bootstrap, хотя не собирался этого делать. :)

RSpec

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

  1. Не всегда понятная и не очень удобная документация.
  2. Не всегда ясно что и как тестировать.

Пока вижу решение в том, что нужна практика. Преподаватели с интенсива, как могут, помогают.

Задеплоил своё первое приложение. Твой ЖК.

Ещё у меня радостная новость. Я задеплоил своё первое (не учебное) веб-приложение на VPS сервере.

Это клон моего консольного приложения Sales Checker, но только в виде rails-приложения.

Вот сайт: http://tvoyjk.ru

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

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

Моя активность на GitHub

Стараюсь ежедневно писать код и вносить свежие коммиты в свои репозитории:

Там видно, что в мае были небольшие перерывы, отчего я отстал от основной группы. Примерно на две недели.

Сейчас разрыв сократился на полторы недели от основного потока.

Кроме того:

  1. У меня появился свой VPS сервер на DigitalOcean. Кстати, если вы зарегистрируйтесь по моей ссылке, то получите на счёт 10$. Этого хватит на 2-а месяца работы вашего сервера (по самому минимальному тарифу).
  2. Обновил свой профиль на GitHub. Теперь у меня появились приватные репозитории, куда я и перевёл три свои рабочих проекта.
  3. Настроил VPN для Slack. РКН вынудил меня это сделать, потому что иначе Slack просто не работает. :)
  4. Подбил своё резюме здесь и на HH.

Что изменилось после курса?

Мне трудно передать словами насколько я счастлив, что попал на интенсив «Хорошего программиста». Я до сих пор считаю мою победу в их конкурсе чудом. Но видимо мне это больше всех было нужно, поэтому я и победил. :)

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

За 4 месяца я очень сильно вырос как специалист. Разница между тем, каким я был до интенсива, и что я знаю и умею делать сейчас — колоссальна! Я сумел прокачаться по такому количеству тем, инструментов и технологий, что просто не понимаю, как это всё вместилось в моей голове.

Просто в какой-то момент ты понимаешь, что можешь сделать это. Ты видишь матрицу. :)

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

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

И самое главное, меня не пугают те задачи, которые мне нужно реализовать. Я могу теперь декомпозировать эту задачу, разбить её на понятные для меня алгоритмы и выполнить. Просто на это потребуется какое-то время.

А дальше что?

Я сейчас работаю по найму в одной компании, не связанной с Ruby on Rails разработкой. А мне бы хотелось устроиться на работу именно в такую компанию. Неважно, занимается она аутсорс разработкой или пилит свой продукт. Мне очень нравится эта среда. Я очень хочу влиться в  команду разрабов и там уже расти как специалист.

Но пока рекрутёры не ломают мою дверь и не закидывают предложениями о работе, я буду глубже закапываться в тему рельс и Руби. :)

Скорее всего, после интенсива я буду также изучать и React.

Сейчас у меня есть идеи для трёх интересных приложений.

Одну идею я уже реализовал. Минимальный MVP работает (приложение выполняет свою основную задачу), осталось его довести до презентабельного вида.

На подходе второе. Идея подсмотрена с зарубежного аналога и по какой-то причине пока ещё не существует в Российском интернете. Особенно меня радуют, что под этот сайт есть поисковые запросы, а выдача для них свободна. Сейчас все вьюхи для него сверстаны, логика прописана на бумаге, но там нет ничего сложного.

А после этого я приступлю к тому, ради чего всё это затевалось, пилить свой FinFine.

Вот как-то так.

Рельсы-рельсы, шпалы-шпалы...

Шла 13-ая неделя обучения. И это была одна из самых тяжелых недель во всём интенсиве...)

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

Просто, у меня как-то сразу всё смешалось.

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

Ещё накопилась огромная усталость. Я просто физически не успеваю делать все домашние задания. Боюсь, что снова будет отставание от группы где-то на неделю.

Если раньше я мог после 8 часового рабочего дня выделять по 2-4 часа на занятия, то теперь мне это сделать сложнее. Короче, all I need is REST)))

По Ruby on Rails я сделаю отдельный отчёт после того как закончу по нему основной блок, а пока поделюсь успехами, причём не только учебными)

Задеплоил своё первое RoR приложение

Да, оно учебное. Да, на Heroku) Но зато первое и очень крутое!)

Это клон Ask.fm.

Одни пользователи (в том числе и анонимные) могут задавать вопросы, на которые отвечают другие пользователи.

Мой GitHub-аккаунт постепенно «прокачивается»

Пусть я уставший и упоротый, но сделать коммит и «git push» в мастер — это святое!)

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

Всё взаимодействие с Git проходит более уверенно. Моё портфолио постепенно разрастается и не только учебными программами. И это главная новость!

Sales Checker — парсер Россреестра

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

Конкретно эта программа родилась из моей личной «боли».

Занимаясь интернет-рекламой в строительной компании мне приходится мониторить конкурентов, в ручную собирая и обрабатывая данные по продажам разных жилых комплексов (ЖК). Эти данные я беру из Росреестра, вводя вручную кадастровый номер земельного участка, на котором находится ЖК.

Стандартная проверка одного ЖК занимает порядка 5-30 минут (в зависимости от количества записей о продажах).

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

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

В итоге:

На самом деле, всё очень даже неплохо. Портфолио разрастается. Учебная программа выполняется пусть и с небольшой задержкой. Уверенность в своих силах растёт. Код крутится, коммиты мутятся)))

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

Да, устал. Да, сумасшедшая нагрузка. Но я чувствую, что всё делаю правильно и двигаюсь в верном направлении.

Такие дела!

Ранее Ctrl + ↓