17 заметок с тегом

жизнь

Всем привет из солнечного Краснодара!)

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

Описывать всё не имеет смысла (текст получится очень длинным), но расскажу кратко по важным пунктам.

Пандемия, работа и удаленка

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

Во-первых, я женился, в самую пандемию, в Москве, в ЗАГСе Митино)

Во-вторых, появилась удаленка и спрос на услуги программистов вырос (как и их зарплаты). Удаленка позволила уехать из Москвы как только сняли карантин. А рост зарплаты позволила закрыть свои основные потребности.

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

Программирование

Я по-прежнему программирую на Ruby. У меня также были попытки изучить Golang (я даже что-то на нём написал), но так как это не мой основной язык, если у тебя нет постоянной практики, то знания теряются. Поэтому я решил не распыляться и изучать то, с чем сталкиваюсь каждый день.

Мне повезло написать с нуля приложение для подготовки к ЕГЭ. Поработать в финтехе (интегрируя крупные банки к платформе для самозанятых). Написать целые библиотеки (гемы) для этого.

В общем, своим профессиональным ростом я доволен. Программировать мне по-прежнему нравится.

Инвестиции

В 2019 году я пришёл на фондовый рынок и вот уже три года подряд увеличиваю свой инвестиционный портфель имея свои 20% годовых (каждый год). Кто-то скажет что мало, а я скажу... А ничего я не скажу)

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

Планы

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

В ближайшее время расскажу подробнее.

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

2021   веб-разработка   деньги   жизнь

О карантине и обучении

Всем привет!

Вот уже месяц как я сижу в изоляции. С ума пока не сошёл, с телевизором ещё не разговариваю. Хотя говорят, что волноваться стоит, если тебе из него стали отвечать)

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

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

Golang

Короче, я стал учить Golang)

Это уже не первый мой подход к этому языку. У меня были попытки его освоить и ранее, но после Ruby всё кажется «некрасивым»)

Не хватает каких-то методов из коробки. Нет итераторов, на всё про всё только цикл «for». Какая-то странная ситуация с массивами и срезами. Первый раз столкнулся с указателями. Строгая типизация тоже поначалу запутывала, накладывающая кучу ограничений. И вообще, по ощущениям, на Golang я пишу больше кода, чем это потребовалось бы написать на Ruby.

Но всё-равно, выбрал Golang в качестве второго языка.

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

Но теории, естественно, недостаточно. Нужна практика. И поэтому, параллельно своему обучению, я пишу на Golang торгового робота скальпера для торговли акциями на бирже ММВБ и параллельно осваиваю фишки языка, включая работу с go-рутинами)

Проект получился как-то сам собой. Дело в том, что у меня открыт брокерский счет в Тинькофф Инвестиции. И у них есть API для работы на бирже, как раз предназначенный для создания роботов. И под это дело, разработчики банка сделали SDK, написанный на Go.

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

Весь функционал разнесён по пакетам, под каждый функционал сделан отдельный интерфейс.

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

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

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

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

Вести с полей)

Всем привет! Прошло уже почти три месяца как начался 2020 год. И начался (да и продолжается) он как-то уж очень турбулентно.

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

Моя работа и жизнь в Москве

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

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

В целом, мне абсолютно нормально сидеть дома и не выходить на улицу. Всегда есть чем заняться и что поделать, чтобы не сойти с ума от заточения. Хотя погода в Москве, как назло, стало очень крутой. Именно сейчас нужно ходить по паркам и наслаждаться тёплой погодой. А они закрыты)

Мой новый проект

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

Как будет готово, сделаю анонс.

Мои приключения на рынке ценных бумаг

8 марта российский рынок акций стал падать вниз. По отдельным акциям у меня была просадка в 30-40%, что меня не сильно тревожило, потому что портфель был достаточно сбалансирован и имел максимальную просадку в 12%. Однако, как только на рынке возникла коррекция, я продал весь свой портфель, зафиксировав небольшой плюс.

Сделал я это по нескольким причинам.

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

Во-вторых, весь свой портфель я собирал стихийно, по наитию. Что не правильно, потому что в нём могут оказаться «проблемные» компании.

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

Теперь начну его формировать, следуя своей стратегии. Покупать ценные бумаги на 5% всего объёма портфеля и на просадке конкретной ценной бумаги в 20-30% докупать ещё на 5% от стоимости портфеля.

Сейчас в списке 20 компаний, которые я хочу взять. 75% от общей суммы портфеля составляют дивидендные акции, остальное: корпоративные облигации. Собирать буду только то, что приносит какой-то кэш. Никаких акций роста, потому что в ближайший год никакого роста точно не будет.

Общая ситуация

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

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

Это коснется всех нас. Например, я пишу на Ruby. И я, как бы, ни на что не намекаю, но вот к примеру:

  • Рокетбанк закроет отдел дебетовых карт. А там около 50 бэкенд разработчиков, которые пишут на Ruby
  • Один чувак из Ruby-сообщества (достаточно квалифицированный специалист с хорошим опытом) был недавно сокращен, так как в компании начались трудные времена.
  • Наша компания закрыла найм новых специалистов на время карантина.

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

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

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

Такой план есть у меня, такой план должен быть у каждого из нас. Наступают реально тяжелые времена и я радуюсь тому, насколько вовремя свалил из маркетинга в разработку. Сейчас вкатиться в IT будет несколько сложнее (но всё ещё возможно).

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

Ну и самое главное, берегите себя и своих близких. Это сейчас наше самое главное богатство!

Итоги года 2019

Всем привет!

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

Жизнь в Москве

Если честно я сам офигел от того, как “оживилась” моя жизнь после переезда в Москву.

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

Сама Москва очень классная!))) И пусть иногда она на меня и нагоняет грусть-тоску из-за своей погоды (говорю это как бывший житель солнечного региона), но по всем остальным параметрам я здесь прям кайфую)

Концерты, выставки, архитектура — это всё здесь! Такого разнообразного досуга не предложит ни один город России, разве что Питер.

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

Посмотрите, какой потрясающий домик я нашёл на Патриарших прудах:

Не вся Москва такая, но гулять по «старой» Москве — это отдельный вид удовольствия. Хотя, даже и не в самых красивых зданиях (в промышленных или спальных районах) есть какая-то своя эстетика.

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

Концерт Static-X

Эпизод о котором бы хотелось рассказать отдельно)

В далеком 2004 году, когда я был студентом, то впервые познакомился с музыкой в жанре industrial metal, услышав песни группы Static-X. Я практически сразу влюбился в этот звук и в эту группу. Это было настолько обалденно и ни на что не похоже, что ровно с тех пор я мечтал попасть на их концерт, которых она никогда не давала до этого в России.

К сожалению, в 2014 году фронтмен этой группы, Уэйн Статик, умер и я распрощался со своей мечтой, пока в 2019 трое оставшихся участников не объявили о своем намерении организовать тур, сделав “замену” своему фронтмену (и подобрали я хочу сказать очень удачно).

И вот, спустя 15 лет, мне удалось это сделать) Я попал на их концерт в Москве. Я был на первом, мать его, концерте Static-X в России! Просто не передать словами как я счастлив.

Просто оставлю этот видос здесь:

Ещё около недели после концерта у меня болела шея, но оно того стоило!)

Новая работа: Баланс-Платформа

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

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

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

Компания и задачи интересные. Коллектив хороший. А ещё я пересел на Mac и возвращаться на Linux пока не планирую.

Ещё интересно то, что со мной в компании работает автор книги по Руби Игорь Симдянов. Если изучаете руби, настоятельно рекомендую приобрести его книгу.

Я свою уже подписал)

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

Кстати, если вы рубист, питонист или react-разработчик в поисках работы (в Москве или собираетесь сюда переезжать), перед тем, как открывать своё резюме, напишите, пожалуйста, мне, у меня для вас будет интересное предложение)

RubyRussia 2019

В конце сентября я побывал на RubyRussia. Это ежегодная рубишная конференция, где Ruby-разработчики (и все им сочувствующие) встречаются вместе и обсуждают темы

сфоткался с Юкихиро Мацумото (создатель языка Ruby):

Также встретил ребят из Хорошего программиста — преподавателей и выпускников разных потоков.

На конференции было много крутых докладов, которые сейчас доступны здесь

Особенно понравился доклад Вани Немытченко (преподавателя интенсива, в котором я проходил обучение) про ООП:

Реально очень круто! Посмотрите, обязательно. Оно не только про программирование, но и в целом о процессе обучения.

Открыл брокерский счёт

Это самая неожиданная и обширная для меня тема, о которой я расскажу отдельно, но уже в следующем году.

Если вкратце, то в начале октября я открыл индивидуальный инвестиционный счет (ИИС) для торговли на фондовой бирже. Пока что получилось собрать небольшой инвестиционный портфель из дивидендных акций, корпоративных облигаций и фонда ETF (в долях примерно 60/30/10), который я планирую пополнять, ежемесячно откладывая 10% от зарплаты.

Цель простая: создать свой “пассивный” источник дохода, помимо заработной платы.

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

Мои проекты

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

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

Меня всё также не покидает желание закрепится на рынке недвижимости, несмотря на “провал” ТвойЖК. Рынок недвижимости большой, у меня есть какая-то экспертность в этой области, поэтому очевидно, что нужно запускать свои проекты именно здесь.

Сейчас у нового проекта полностью готов дизайн (да, в этот раз я серьезно заморочился над визуалом), мне нужна верстка макетов, после которого можно активно писать код (часть которого уже готова).

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

Конечно для MVP важна скорость запуска проекта, и все эти вещи (тесты, архитектура) требуют дополнительного времени на внедрение, но я всё-равно продолжаю это делать, потому что:

  • У меня есть код, который я переиспользую от проекта к проекту, что позволяет мне работать «быстрее».
  • Не всегда на работе бывают задачи, которые позволяют мне профессионально расти как разработчику и это очень важная проблема, о которой я также расскажу отдельно.

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

Опубликую анонс когда всё будет готово.

Как оно вообще в целом и планы на 2020 год

У меня всё хорошо)

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

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

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

C фронтенд разработкой у меня как-то не клеится... Была цель освоить ReactJS, но в моём стеке ещё столько технологий, которые нужно изучить, что на фронт уже просто не хватает времени.

Скорее всего, до Нового Года, я уже не буду публиковать никаких записей, поэтому заранее поздравлю здесь всех с наступающим Новым Годом!

P.S. Намереваю вам реализации всех ваших целей! Счастья вам и крепкого здоровья!

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

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

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

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

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

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

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

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

Алгоритмы

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

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

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

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

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

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

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

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

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

ReactJS

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

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

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

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

SMM Collector

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

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

32)

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

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

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

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

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

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

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

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

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

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

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

2019   веб-разработка   жизнь

Новая работа, переезд и запуск 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

Ранее Ctrl + ↓