Pull to refresh

Встать на рельсы за четыре месяца или Finance on rails

Reading time 4 min
Views 52K

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

1. Любопытство

«Насколько далекого?», спросите вы, а я отвечу — «Чуть менее, чем полностью», так как в десятом классе в школе у меня были уроки программирования, парочка из которых были уделены Паскалю. Признаюсь, впоследствии о html узнал, и даже мог в Dreamweaver-e сверстать страничку или поставить готовый движок, да по инструкции налепить плагинов, но не более.
Хотя компьютеры мне нравились, пошел я учиться на экономиста* — бакалавриат, магистратура по бух. учету и аудиту, аспирантура по финансам, работа в банке, преподавание, страхование. Но не жилось мне спокойно в финансах, — финансовый калькулятор удовлетворял необходимости решения тривиальных задач, но не удовлетворял мой мозг. А ему хотелось посчитать не только будущую и приведенную стоимость актива, но и создать массив данных из исторических стоимостей этого актива за n лет, высчитать среднюю доходность, дисперсию и, в конце-концов построить красивый график!
image
Рис. 1. Красивый график

И вот, взяв в месяце мае на вооружение немного желания и времени, я решил что то изучить. Почему выбор пал на Ruby рассказывать не буду, — но он на него пал.

2. Первые шаги

Представьте себе человека, который впервые в жизни слышит выражения «итератор», «объектно-ориентированное программирование» и сотни других слов, вводящих в ступор. Это не WACC (средневзвешенная стоимость капитала) или IRR (внутренняя норма доходности), которые на втором курсе перестали пугать, это что то совсем далекое от того, с чем жил прежде. И тут никто не подскажет, — вокруг одни экономисты. Тут то на помощь приходит Google. Активно поискав, находим первый учебник.
Крис Пайн — «Учись программировать». Тут всё отлично, было бы желание и умение работать с блокнотом, остальное приложиться. Установку Ruby провел с помощью rubyinstaller, который позволил установить всё окружения очень просто.
Схема работы с учебником проста — читаем главу и пробуем решить поставленные в конце задачи. Что то не выходит — возвращаемся обратно и так до полного просветления. По ходу или после обязательно надо придумывать и решать свои задачи. Уже после седьмой главы и недели изучения я смог создать массив данных из исторических стоимостей этого актива за n лет, высчитать среднюю доходность, дисперсию и всё.

3. На рельсы или шоссе?

«А что же с графиком?», на этот раз спросите вы. Вот тут и настала очередная дилемма, как же выводить результаты, ведь консолью сыт не будешь. Так как представление о Web-технологиях имелось (тот самый html), решил залезать на рельсы. На этот раз пригодился railsinstaller, который позволил установить Rails за пять минут (а прилагаемое видео вообще снимает все вопросы). Второй же книгой стало Ruby on Rails Tutorial Майкла Хартла. Для старта книга просто отлична, — от создания первого приложения, до его развертывания на хостинге. Но главе на восьмой, даже с учетом того, что я пропускал этапы тестирования, мой мозг сдался и повис. Вопросов набралось столько, что книга просто не могла на них ответить. Так как создавать и разворачивать приложения я, в общем то, научился, решил, что пришло время для своих эксперементов. Пара элементарных примеров, пара вопросов на Stackoverflow по банальным вопросам о том, как, например, создать простую форму и со временем у меня получился нужный мне график (см. рис. 1) на JS (помог Highcharts).
С начала изучения Ruby прошло около полутора месяца. Даже так: с начала изучения программирования прошло около полутора месяца.
Третьим организованным в подаче материала ресурсом стала интерактивная видеошкола Rails For Zombies, которая научила работать с запросами к базам данных и прочим премудростям. К тому времени мозг окреп и я готов был вернуться ко второй книге (Rails Tutorial).

4. Решаем свои проблемы

Балуясь на досуге с Ruby я не забывал и про другую свою деятельность. Будучи совладельцем небольшой брокерской компании, занимался страхованием. И была у нас проблема — ведение базы данных договоров и клиентов. Компания небольшая, на пару человек и использовать полноценную систему учета не имело смысла, так как 80% функционала не было нужно, а оставшиеся 20% решало не более 20% наших потребностей. Аналогичная ситуация с готовыми CRM-системами, которые заточены под любую общую деятельность, но никак не под страхование. Нужно то было всего иметь возможность вводить данные по клиенту, вводить договора и обязательно напоминать о сроках завершения договоров, сроках подхода очередного платежа и днях рождения. И написал я на Ruby on Rails такую систему, которую мы благополучно сейчас используем. Но делать её только для себя было бы эгоистично, посему сейчас её могут использовать все желающие по принципу SaaS.
На данный момент система на этапе закрытого бета-тестирования, но все основные возможности присутствуют, а основные баги найдены и ликвидированы. Работы предстоит еще много, но уже можно вести базу клиентов и договоров, получать уведомления о предстоящих важных датах (завершение договоров, дни рождения и подходящие даты оплаты согласно плану), вести учет в разрезе разных страховщиков и разных субагентов, видеть историю составленных договоров с клиентом, вводить гибкий план и график фактической оплаты по договору и многое другое. Так как сокращенное название брокерской компании SEI, системку назвал SEI CRM**.
Но суть не в этом, ибо дальше может пойти пиар еще не идеального продукта, а в том, что встать на рельсы и решить свои задачи не-программисту практически с нуля можно всего лишь за четыре месяца. Конечно, мой код не идеален, но он пока неплохо работает и я обещаю завтра быть лучше, чем был вчера, даже при работе с кодом.
image
Рис. 2. Любимые клиенты в результатах поиска
image
Рис. 3. Пример договора с подставным клиентом

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

* — люблю деньги, как продукт социально-экономического развития общества. Рекомендую почитать речь Франциско Д’акония о деньгах во второй книги «Атлант расправил плечи», глава вторая.
И конечно же, когда свои деньги лежат в кармане, я их тоже люблю.
** — не выкладываю публичных ссылок, ибо боюсь хабраэффекта. И сыроват он для паблика, да и не об этом пост.
Tags:
Hubs:
+71
Comments 35
Comments Comments 35

Articles