5 февраля Андрей Азимов, менеджер по продукту компании Railsware, написал на Medium заметку о том, как он научился программировать за 2 месяца и создал сервис When To Surf, который уведомляет пользователей об идеальной погоде для серфинга. Неделей позже Азимов рассказал, что When To Surf вышел на первое место на платформе Product Hunt в рубриках «Спорт», «Погода» и «Серфинг». Редакция AIN.UA приводит адаптированный перевод заметки.
Два месяца назад я начал работу над своим сервисом When To Surf, который рассчитывает для серферов идеальную погоду для катания. Как многие люди в IT, я всегда мечтал создать свой продукт, который люди будут использовать ежедневно. Я хотел создать такой однажды.
Сейчас я живу на Бали и учусь кататься на серфе. Когда я начинал обучение, то с трудом понимал прогноз погоды для серферов — как, например, на сайте Magic Seaweed. Там куча разных показателей: периодичность волн, скорость ветра, его направление и так далее.
Иметь много информации — круто, но что, если большинство людей не могут ее понять? В интернете я нашел 10-страничную инструкцию, как интерпретировать эти данные. Я подумал: что, если я бы мог взять эту информацию и благодаря коду проанализировать ее и рассчитать идеальные условия для серфинга? Я хотел это сделать, но не мог, потому что никогда не программировал всерьез. Также у меня не было денег, чтобы набрать команду. Поэтому я на время сдался.
Спустя несколько месяцев в одном из коворкингов на Бали я встретил разработчика Питера Левелса, который поставил себе цель создать 12 стартапов за 12 месяцев, в результате чего запустил сервис Nomad List (платформа, которая помогает найти лучшие места для жизни и удаленной работы — прим. ред.). Он вдохновил меня сделать свою программу. Вот его основные принципы:
- Решай только свои проблемы.
- Не ходи на встречи предпринимателей, избегай бизнес-тренеров.
- Программируй и ищи решения в интернете — только так можно научиться.
- Делай простые вещи, которые вероятнее всего будут работать (не трать время на крутой но сложный фреймфорк, изучение которого займет год).
С этими принципами я хотел попробовать научиться программировать и создать свой сервис. Я знал, что не стану крутым разработчиком, но был уверен, что смогу воплотить свою идею в жизнь.
Старт проекта
3 декабря я купил домен whentosurf.co за $6. Я нашел бесплатный хостинг и загрузил свою первую HTML-страницу с надписью «Привет, мир!».
Я задумался о том, где бы взять данные и нашел API сервиса World Weather Online. Оно бесплатно первые два месяца и содержит всю информацию, которая мне была нужна. У меня не было опыта в программировании, поэтому я начал пробовать различные языки, которые видел до этого. Сначала я хотел взять данные из API и импортировать их на свою HTML-страницу. Поэтому мне нужен был самый простой язык из всех возможных — без установки серверов, фреймворков и подобных вещей.
Первым делом я попробовал JavaScript, но он оказался для меня слишком сложным. Потом я подумал о Python. Мне нравился его четкий синтаксис, но мне нужно было установить фреймворк Django, настроить для него специальный сервер — и все ради одного скрипта! Поэтому я отказался от этой идеи.
Я остановился на PHP. «PHP — плохой язык, лучше используй Ruby, Node, React или что-то похожее» — я знал, что мне будут говорить подобные вещи, но не обращал на это внимание. Для меня этот способ был самым быстрым, чтобы что-то выучить.
Спустя несколько дней мне удалось импортировать данные на свой сайт. После этого я за ночь создал первую версию сайта.
Спустя некоторое время я вдохновился одним из примеров в интернете и создал новый макет.
В это время все вокруг начали советовать мне использовать Github, но мне не понравилась эта идея. Я просто создал папку для бэкапов и каждый раз скидывал туда обновленные версии сайта.
Бесплатный хостинг работал очень плохо. Поэтому через несколько недель после старта проекта мне понадобился VPS. Я заплатил провайдеру DigitalOcean $5 и с помощью его инструкций и подсказок парня, которого встретил в коворкинге, настроил сервер.
Препятствия продолжались на моем пути. Мне нужно было получать местоположения пользователей, но недавно Chrome запретил это делать сайтам без протокола HTTPS. Поэтому мне пришлось установить сертификат Let’s Encrypt. Это было безумно сложно, но я четко следовал инструкции и все получилось.
Отзывы
В коворкинге я познакомился с Марком (Марк Кельбрюгге, основатель онлайн-каталога стартапов BetaList — прим. ред.), который предложил прикрепить iPad с запущенным приложением вместе с коробкой для отзывов к стене — таким образом я бы мог узнать мнения людей о сервисе. У этой идеи был смысл, так как почти половина посетителей коворкинга занимаются серфингом.
В течение суток всего несколько людей оставили отзыв. Задумка не сработала. Людей не заинтересовало мое приложение. В это же время у меня начал пропадать энтузиазм. Теперь работать над приложением было не так круто. Даже наоборот — в большинстве случаев это было мучительно. Я вышел на основную работу, поэтому теперь был вынужден заниматься сервисом по ночам.
Я показал приложение своему инструктору по серфингу. Ему не понравилась идея, так как на его взгляд «в серфинге есть слишком много неизвестного, чтобы предсказать идеальное время». Я осознал, что до сих пор не решил эту проблему. У меня не хватало информации, к тому же я не был достаточно хорош в программировании, чтобы проанализировать данные и рассчитать идеальное время. Более того, сервис работал только на Бали, и я не мог адаптировать его к другим местам.
Я уже хотел сдаться из-за мысли, что приложением никто не будет пользоваться. Я также не знал, как адаптировать сервис к другим местам для серфинга.
Второй раунд
Я поговорил с друзьями и они посоветовали мне продолжить работу над сервисом. Питер Левелс сказал, что подобные ситуации происходят часто, и именно в такое время «большинство людей сдаются и не запускают приложение из-за страха». Следующие несколько недель я работал очень упорно. Я хотел закончить приложение, даже если б знал, что им никто не будет пользоваться.
Даже если б я вывел формулу для расчета идеального времени, я бы не знал, как ее запрограммировать. Нужно было начать с чего-то другого. Я создал таблицу в Excel и начал экспериментировать с формулами.
Методом проб и ошибок я выразил эти формулами через код:
Я начал давать оценки каждому месту на планете — даже тем, где не было пляжей. И это работало.
На работу над сервисом я потратил около 118 часов (я подсчитал это время через приложение Toggl) и $11. Код доступен на GitHub.
Чему я научился?
- Решайте только свои проблемы. Так лучше, потому что вы действительно переживаете за них. Поиск идеального времени для серфинга был моей навязчивой идеей, благодаря чему мне было легче закончить работу над сервисом.
- Найдите наставников там, где вы хотите работать. В этом случае отлично подходят коворкинги, где люди уже работают над успешными вещами.
- Вы научитесь программированию только когда будете делать это. Не читайте книг, не покупайте курсы, не платите учителям и избегайте бизнес-тренеров. Ищите решения в интернете. Лучшие наставники не возьмут у вас денег, потому что им они не нужны.
- Не бойтесь новых технологий. Меня пугало программирование, API, настройка сервера, HTTPS, но я сделал это.
- Никогда не сдавайтесь. Делайте все, чтобы закончить свой проект.
Ранее, AIN.UA публиковал колонку разработчика о 27 вещах, которые бы он хотел знать перед тем как начать учиться программировать.