Рубрики
Без рубрики

Как я построил инструмент для отслеживания, который контролирует веб-сайты, когда Moonlighting с моей дневной работы

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

Автор оригинала: Tony Schumacher.

Если вы хотите создать веб-приложение с нуля, вы можете подумать, что вам нужно:

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

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

Несмотря на эти проблемы, я успешно запустил мой проект на охоту на продукт И получил 600+ пользователей, в том числе моих первых платных пользователей.

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

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

Мой фон

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

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

Мы хотели узнать, когда наши конкуренты выбежали на складе, поэтому мы могли бы быстро начать высокое преобразование кампаний Google AdWords для захвата от них клиентов. Мои коллеги создали электронную таблицу с 800 веб-сайтами, которые должны были контролироваться. Мое задание было делать это вручную, нажав на все 800 ссылок. Урчание Я не хотел этого делать. Вместо этого я прочитал о способах автоматизации процесса. Я закончил настроить очень простой гусеничный в листах Google. Я написал простую функцию JavaScript, которая, для каждой из этих 800 веб-сайтов, откроет правильную веб-страницу, перейти к определенному разделу этой конкретной веб-страницы и извлекать необходимую информацию. Я был сделан за 20 минут, когда я мог потратить недели проходить через каждый веб-сайт. Как вы скоро увидите, этот опыт окажется ключевым событием для хранения.

Идея: мониторинг сайтов конкурентов

Сразу после окончания учебы я присоединился к консалтинговой компании, занимающейся стратегией высокого уровня, консалтинг на ИТ-инфраструктуре и архитектуре для крупных страховых компаний, корпораций и государственных проектов. Как консультант, мне пришлось много путешествовать, прыгая на самолеты рано утром и летаю назад во второй половине дня. Увеличивалось, что у меня было много времени, чтобы прочитать. Один конкретный сайт, Isiehackers Заставил меня влюбиться в идею создания боковых проектов самостоятельно, чтобы решить реальные проблемы (и генерировать доход). Я начал задаться вопросом: «Какая проблема я могу решить?»

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

Что я построил: The Custode

Custodee – это инструмент отслеживания конкурента, который контролирует содержимое веб-сайта и визуальные изменения и сохраняет запись этих изменений. Особенности включают в себя ежедневные автоматизированные скриншоты сайта, оповещения о ключевых слов, уведомления по электронной почте на веб-сайте изменений, а также экспорт Excel и Image. Я также в настоящее время работаю над интеграцией Dropbox для скриншотов, а также функция, которая позволит пользователям вставлять код JS, который будет выполнен до того, как сделаны снимок экрана.

The Custode можно использовать для мониторинга продуктов конкурента, чтобы настроить маркетинговые кампании. В частности, компании могут увеличить свои продажи, когда их конкуренты повышают свои цены, оптимизируйте преобразования Google AdWords (путем выбора стратегического времени для кампании), отслеживать SEO с помощью скриншотов и изменений в архиве. Хотя Custode был первоначально задуманы компаниями для мониторинга веб-сайтов своих конкурентов, есть другие случаи творческого использования. Например, я видел людей, использующих Custode, чтобы записать просматривать ViewCount для конкретных видео Youtube в течение определенного периода времени, или для мониторинга взаимодействия на онлайн-форумах. Ужелились, я на самом деле использую Chastode для мониторинга комментариев по странице Hunt Productee The Custodee и других платформ, поэтому мне не нужно регистрироваться каждый день.

Снятый на экран 2017-06-07 в 11.33.54.png

Используемые технологии

Еще один важный вопрос был: «Как я могу это сделать?» На данный момент у меня было только понимание программирования высокого уровня. Я только написал очень простой JavaScript, поэтому мои знания современных инструментов разработки и технологий были ограничены.

Все, что я узнал в университете, был на основе Java, который я ненавидел. Я чувствовал, что мне нужно было написать тысячу строк кода, чтобы сказать «Hello World». Эта технология удерживала меня от GSD – получая дерьмо … быстро!

Для этого проекта я решил пойти с JavaScript из двух основных причин. Во-первых, я использовал JavaScript перед передним и в создании своего базового сканера в Google Pailets. Во-вторых, я мог бы использовать JavaScript на стороне клиента, так и на стороне серверов, который был довольно удобным.

Чтобы выбрать конкретные технологии, я впервые исследовал текущие тенденции. Я посмотрел на популярные веб-сайты развития и пытался получить чувство того, что все обсуждали. Я мог видеть шумиху вокруг Node.js, которые естественным образом нарисовали меня к нему. Поскольку я собирался работать с технологиями, я никогда раньше не использовал, я решил выбрать те, которые были среди самых востребованных компаний. Обоснование было следующим: даже если проект не удался, я бы все еще мог «продавать» новые знания, которые я приобрел для клиентов.

Чтобы построить опекун, я закончил использовать следующее:

  • Node.js, mongodb, фантомые, angularjs, aws
  • Сторонние API → Dropbox, ездить на премию

Вот что выглядит архитектура TheDodee:

Заметки:

  • Там может быть еще много задних серверов, в зависимости от трафика (следовательно, + n).
  • Это причина, по которой есть эльб AWS (балансировщик нагрузки) – он направляет трафик на задневские серверы, совместно используя нагрузку между ними.
  • Сайт находится на переднем концевом сервере с Node.js и angularjs.
  • Приложение Node.js на фронт-концевом сервере имеет два целя:
    • Импорт и сохранение всех изображений в виде API для отдыха (изображения отправляются из задних серверов)
    • Нажатие изображений пользователей премиум в их Dropbox

Здание опекуна

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

На протяжении всего процесса здания я работал над всем в то же время – переключение между следующими:

  • Создание передней/дизайна с Angularjs
  • Создание моделей для базы данных MongoDB
  • Написание узел. Джой, чтобы получить результаты из гусеничного
  • Оптимизация бэкэнда, чтобы использовать минимальный CPU и RAM, чтобы я мог пойти с маленькими серверами EC2

Прежде чем начать, я принял заметки всего, что приложение потребует. Я знал, что хочу создать простой, удобный для пользователя интерфейс. Поэтому я начал, искал шаблоны HTML для интерфейса. Я не хотел разрабатывать все с нуля самостоятельно, потому что я не дизайнер, и есть люди там, чем могут сделать это лучше, чем я, и я хотел сосредоточиться на решении проблемы, которую будет решать мое приложение. Я все еще заканчивался переключением и рефакторинговыми шаблонами три раза. Это было не единственное, что мне нужно было переписать. При строительстве росли на Node.js мне также пришлось переписать его три раза, в основном потому, что мой первоначальный подход не был лучшим ресурсом – он использовал слишком много RAM и CPU.

Было больше препятствий, которые я должен был пройти мимо. Познакомиться с Mongodb, занял некоторое время. Запрошение базы данных с MongoDB была совершенно новой для меня и совершенно отличается от технологий SQL, которую я использовал ранее. Настройка серверов на AWS также приняла дополнительную стресс и время. Тем не менее, большая часть работы была потрачена на занесение узла и фантоми.

Первая версия TheDode не имела скриншотов. Затем я подумал, что это может быть очень полезно включать скриншоты, а не просто мониторинг данных. Чтобы добавить скриншоты, мне пришлось работать с браузером без головы. Я решил пойти с фантомии, потому что это позволило мне получить полную страницу скриншоты. После реализации этого я думал, что также будет здорово выделить изменения (вместо того, чтобы просто позволить пользователям сравнить скриншоты сами по себе.) Для этого я использовал пакет NPM: напоминает Отказ

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

Технические задачи и учащиеся

Глобальные переменные

Очень рано, я узнал о глобальных переменных у Node.js трудно. В JavaScript, если вы забыли объявить переменную должным образом (даже только один раз!), Он пойдет глобальным. Это случилось со мной с переменной идентификатора пользователя. Некоторые друзья тестировали TheDode, и каждый раз, когда один из них вошел в систему, все идентификаторы пользователя были перезаписаны с последним идентификатором пользователя. Таким образом, все стали одним и тем же пользователем после освежения их страницы. Это была моя первая (забавная!) Ошибка. Это было исправлено быстро, но у нас все было хорошим смехом.

Утечка памяти

Я также не был знаком с утечками памяти в Node.js. Мне было интересно, почему мой сервер становится действительно медленным все время. Эта проблема была связана с фантомии. Фантомии не очень новые, и это также довольно медленно и съедает много серверов ресурсов. Там была утечка памяти, и я не мог выяснить, где. Я должен был придумать способ перезапуска сервера каждые 2 часа, чтобы он не стал слишком медленным. Мне пришлось написать много кода для оптимизации этого, чтобы сделать его более эффективным, чтобы не тратить слишком много процессора. Оптимизация всего вещей к снижению затрат на серверы заняло 2-3 недели. Я знаю, что есть другие замещенные технологии (например, без головы хрома), но с использованием фантомых – это все еще лучший способ захватить реальные полноэкранные скриншоты, не поддельные их.

Неопределенные переменные

Неопределенные переменные не настолько большие проблемы в Java, которые в настоящее время я использую в моих фрилансских проектах, но в Node.js, в редком сценарии, где вы не реализовали тесты, если есть неопределенная переменная, ваш узел .js приложение вылетает. Это на самом деле немного глупо. Если в вашем проекте есть что-то неопределенное, ваше приложение Node.js пойдет вниз. Хотя это не огромное дело, потому что ваш сервер будет перезапущен за считанные секунды, все пользовательские сеансы будут убиты, и вам придется войти в систему. Все это должно сказать, что если вы используете Node.js, обязательно поймайте все. Если вы работаете полный рабочий день на проекте с командой и правильным тестированием, вы должны быть в порядке. Но если вы хотите разработать MVP, действительно быстро, как я сделал, это становится действительно важным.

AWS счета

Я сделал ошибку, создавая AWS, не читая документацию правильно. В результате я получил довольно дорогое счет из Amazon в следующем месяце. Некоторые советы: используйте что-то дешевле, или внимательно прочитайте документацию AWS. Кроме того, имейте в виду, что ваша архитектура может измениться. Мой изменился с момента первой версии TheDode из-за большого количества пользователей, которые начали использовать TheDode. В самом начале у меня был только один сервер в интернет/дБ, а один задний сервер для фантомых.

Показывая мой код

Поскольку я был полностью новым для всех этих технологий, я широко полагался на переполнение стека. Я также разговаривал с людьми, которые построили модули Node.js. В какой-то момент я даже продемонстрировал свой код двум друзьям, у которого был опыт в создании приложений на уровне предприятия, но это оказалось не особенно полезным. Они смеялись над мной, и просто сказали мне: «Никто не может прочитать это». Хотя они были, вероятно, были верны, я не думал, что имел смысл для меня, чтобы написать код уровня предприятия. Если вы хотите разработать продукт самостоятельно, что, возможно, никто не будет использовать через 2 года, это просто пустая трата времени. Никто не заплатит вам, потому что ваш исходный код очень чистый и полный комментариев. Вам будет лучше быстро создавать свой проект, быстро выясняясь и улучшая следующую версию после получения отзывов от пользователей.

Естественно, разные настройки требуют разных методов работы. Я работаю по-разному в моих консультационных проектах. При работе с клиентами все должно быть построено очень чистое способом и в стиле компании (например, повторное использование их моделей, абстрактные методы, комментарии и т. Д.). Работа с несколькими командами Scrum в проекте большого предприятия очень сильно отличается от создания MVP очень быстро в качестве бокового проекта.

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

Запуск и отзывы

Я впервые потратил 50-100 евро на Google AdWords, просто чтобы получить пользователей и быстрый обратную связь. В то же время я реализовал сценарий от Тамбуко , сервис, который записывает поведение пользователя на вашем сайте и показывает, что они делают. Это помогло мне проверить, работал ли мой MVP. Он также показал мне, как пользователи использовали Custode, какие функции им понравились, и какие они не использовали. Затем я мог соответственно оптимизировать UX. После этого я переехал на другие проекты. Я продолжал использовать кафедру сами и увидел, что несколько пользователей (10-12) использовали его, но ничего не происходило за пределами этого.

Через три месяца я начал рассматривать избавление от опеки. Я проходил через фазу, где мне это больше не понравилось. Я не уверен, почему, но я просто думал, что Custode вообще не было хорошим. В то время я начал говорить с Clifford Oravec из Tamboo, который также написал Epic Guide для загрузки загрузки самостоятельно. Я слушал свое интервью на подкаст на ходных машинах и связался с ним по электронной почте после прочтения его пост , который я нашел супер вдохновляющим. Мы начали общаться по электронной почте и Twitter, и я помню, как говорил ему, – я думаю, что Custode отстой, я просто поставлю его в автономном режиме и начать работать над чем-то другим. Он посоветовал не делать этого. Он сказал мне, чтобы получить это людей вместо этого, и ждать несколько месяцев, прежде чем бросать его. Слушаю его, я передумал и решил запустить Chastode на охоту на продукте, чтобы получить больше отзывов. Я хотел знать, был ли кто-то, кто на самом деле использовал бы опекун. Если нет, я всегда мог бы поместить его в автономном режиме на более позднем этапе и перейти к другому проекту.

Я совсем не ожидал, что нахождение успеха и положительного ответа на охоту на продукте. Люди понравилось это. Я получил 600+ пользователей и даже мой первый уплатный клиент. Я заметил, что многие аккаунты были от компаний, которые начали использовать Chakedie. Интересно, что это произошло несколько раз, когда кто-то из компании будет подписаться, и вскоре после (несколько дней, а иногда даже через несколько минут) больше сотрудников из этой компании подпишится. Я нашел это действительно круто. Это означало, что для них было полезно для них, и они имели в виду его друг к другу в офисе.

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

Выстрел на экране 2017-06-07 в 11.34.27.png

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

Заключение

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

Прямо сейчас я все еще надену много энергии в опеку. Я нахожусь на коротком перерыве, и я все еще многому участвую – не только о кодировании, но о том, как разрабатывать полезные функции для людей. Я также узнаю больше о том, чтобы заставить людей платить за SaaS и как управлять таким продуктом. Мой план состоит в том, чтобы добавить еще несколько функций и сделать Custode Statile, чтобы я мог перейти к моему следующему проекту. У меня уже есть много идей (около 50!), Которые я держу в файле Excel. Спойлер: Я запускаю еще один сайт на охоту на продукте через 2-3 недели.

Я бросил свою работу как консультант, и я начал работать самостоятельно, сосредоточив внимание на ИТ-архитектуре и развитии. Благодаря очень позитивным рекомендациям на моих предыдущих консультационных работах, теперь я могу жить 3-4 фриланс 3-4 дня в неделю и проводить больше времени на мои собственные проекты.

Ключевые учащиеся и советы

Иди и сделай что-нибудь, прекратите читать, перестань говорить, сделай это сейчас

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

Вы не обязательно должны думать о масштабировании сначала

Мои друзья засмеялись в моем коде, потому что это было нечитаемой, и сказал, что опекун не был масштабируемым. Я просто подумал: «У меня нет сотрудников. Почему я должен рефакторировать все, чтобы мои друзья могли прочитать это?» Очистите слишком много о строительстве, что-то масштабируемое в начале – пустая трата времени. Это не гарантия, что все равно будет использовать ваше приложение/услугу. Лучшее, что нужно сделать, это получить ваш продукт пользователей как можно скорее.

Сосредоточиться

Я потратил впустую много времени, которые никто не заканчивался. Перед запуском Hunt Product я решил выбросить все функции, которые используются менее 80% пользователей. Я даже прошу прошумил функции, которые требовали наибольшего времени разработки. Сосредоточение внимания вашему объекту важно, потому что если вы наполните свое приложение или веб-сайт с тоннами функций, никто не поймет ваш продукт. Вы просто отвлекаете пользователей из реальной стоимости вашего продукта.

Планировать как неудачу, так и для успеха

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

Монетизация

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

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

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

Вы можете узнать все действительно быстро

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

Это от меня. Я бы очень хотел услышать какие-либо отзывы, которые у вас есть, даже если вы думаете, что The Custode и мой подход к обучению и построению быстро, являются худшими вещью.

Пожалуйста, дайте мне знать, что вы думаете в разделе комментариев 👇 или в твиттере Отказ

Не забудьте Проверьте проект по охоте на продукт Или попробуйте на Custodee.com Отказ

Я скоро официально запускаю больше проектов. Оставайтесь настроиться за последние новости о Clubpal.io и soundcollab.com.