Пользователь
0,0
рейтинг
8 сентября 2011 в 13:16

Разработка → Встать на рельсы за четыре месяца или Finance on rails из песочницы


Обойдусь без копипастов и даже ссылок о том, что 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-листы и прочее), то специфические проблемы, возникающие только перед программистами. Но это совсем другая история.

* — люблю деньги, как продукт социально-экономического развития общества. Рекомендую почитать речь Франциско Д’акония о деньгах во второй книги «Атлант расправил плечи», глава вторая.
И конечно же, когда свои деньги лежат в кармане, я их тоже люблю.
** — не выкладываю публичных ссылок, ибо боюсь хабраэффекта. И сыроват он для паблика, да и не об этом пост.
Олег Пасько @anathem
карма
133,7
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (33)

  • +8
    Вот это круто. Вот это дело!
    Буду тыкать в нос ссылкой на этот топик всем тем, кто ноет, что денег мааало, научить не научииили. Кто хочет — берет и делает. Сам!
  • +1
    Вы бы личные данные своих клиентов замазали что ли :)
    • 0
      А, прошу пощения, вроде «рыба», а не настоящие данные)
      • +3
        Один из них я, с измененными контактами, а остальное рыба-рыба :)
  • +4
    Мне Хабр дал путевку в руби-вей.
    Сначала «капли», потом книга Криса, далее перевод Харта. Кавасаки со своим «Стартапом».
    Статьи про шузы, зомбирельсы.
    Это все не напрягает. это все реально приятно учить.
    Решать свои повседневные задачи.
    Начинаешь думать ПО-ДРУГОМУ.
    Это клево!

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

    И тогда все будет оке!

  • +1
    Поздравляю. 4 месяца — это действительно очень хороший срок, если с нуля. BTW, дизайн интерфейса выглядит очень достойно.
    • +2
      Спасибо. По поводу интерфейса и дизайна в целом — вопрос больной. На данный момент за основу взята темка за $12 с ThemeForest :-[ Посему, вероятнее всего, не финальный вариант.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Отнюдь, 02.05.11 сохранён первый руби файл. Но приятно, что кто то так предполагает — значит это неплохой результат. Я старался :)
      • +1
        Я так понимаю это Ваше? pasko.ws/
        «Проектирование и внедрение интранет и интернет систем. Сайты «под ключ», в т.ч. сайты финансовых организаций, интернет-магазины и комплексные решения по продвижению в сети.»

        Быстро же Вы научились делать интернет-магазины…
        • +1
          Я не скрывал свой интерес к Web-dev-у. Посему я брался за проект-менеджмент «под ключ». Если еще поищите (спасибо, что поискали), можете найти и проекты на веблансере :) Тем не менее, код я никогда не писал.
          Если бы мне это было совсем не интересно, я бы, наверное, никогда не взялся бы за Руби.
  • 0
    Поразительно, даже вдвойне (так как исходно экономист)!
  • 0
    Отличный пост. А то часто пишут знакомые. Хочу стать программистом, научи! Я шлю в интернет. Ведь там есть все. Книжек навалом, блогов и статей. А говорят, ну это не то. Вот если бы сам все объяснил. А это блин время. А тут человек сам все освоил, молодец! Я тоже программист-самоучка, но не экономист)
    • 0
      Даже когда «все сам объяснил» — не помогает. Хотят уметь, а учиться, прилагать усилия, тратить на это время — нет. Увы.
  • 0
    очень круто!
  • +1
    Отличная success story! Действительно, главное начать (и продолжать), и все обязательно получится.
  • 0
    сейчас её могут использовать все желающие по принципу SASS

    Что вы тут имеете в виду? Что за принцип такой? Впервые слышу.
    • +1
      Прошу прощения, — SaaS, исправил.
  • +1
    Будут ли доверять системе при работе с ней по модели SaaS другие брокеры? Ведь в системе хранится самое ценное — договора и истории клиентов. Как собираетесь убеждать что все честно?
    • +1
      Актуальный и проблемный вопрос. Буду еще думать «как», ну а пока среди знакомых :)
      • +1
        «Коробочное» решение планируете? Думаю, не стоит отказываться от этого.
        SaaS конечно круто, модно, это поток, но и привлечение клиентов достаточно сложное и дорогое. При этом привлечь мало, надо еще и удержать.
        Особенно в таких нишах как страхование, недвижимость много консерваторов, многие не доверяют.
        • 0
          Если будет спрос, то почему бы и нет. Но в первую очередь система рассчитана на агентов и на совсем небольших посреднических компаний (разделять права доступа в рамках одной базы точно пока не планирую), а они вряд ли будут заморачиваться с серверами. Так что исходить из потребностей буду :)
  • 0
    отлично, а то последнее время из песочницы только копипасты про руби и «эпосы про то, как ненужно программировать»
  • +1
    Сколько в день посвящали этому времени? И каждый ли день?
    Изучали в основном только указанные источники, или и разные блоги в том числе?

    p.s. Вы молодец!
    • 0
      Системы не было, но лето оказалось более-менее свободным. Потому, когда совсем затягивало, то и часов 16 (с перерывом на базовые потребности) мог просидеть, а иной раз и пару дней быть занятым другими заботами. Хотя и во время отъездов находил время посмотреть припасенные на iPad-e эпизоды Railscasts-ов (кстати, совсем забыл упомянуть).
      Ну а блоги и форумы само-собой, но кроме уже перечисленных ресурсов и оф. сайта Рельсов с гидом ничего не выделю.
      • +1
        Вот и я хотел спросить про время как ресурс. Ну, допустим, лето было свободное. Но сейчас то как одновременно умудряетесь и экономикой совладетельствовать, и программировнием под заказ, и доводить до ума свою систему?

        Кстати, вот старая, но одна из немногих книг про руби и всякие графики и отчеты — Practical Reporting with Ruby and Rails, может заинтересует.
        • 0
          … и в ВУЗе преподавать, диссертацию доделывать, и на репетиции ходить, и про личную жизнь не забывать, и даже в игрушки изредка поиграть. Если честно, даже не знаю :-[

          За книжку, спасибо большущее! Обзаведусь, вероятно :)
  • +2
    Вы — молодец. Вы в курсе?)
    Кстати, не раз слышал о том, что многим экономистам, физикам, химикам и тд умение программировать очень помогает и делает на голову выше своих коллег.
  • 0
    Чем сделана сортировка в таблице?
  • +1
    У меня на данный момент аналогичная ситуация, только я решил изучать Python+Django. Потратил больше времени чем вы… ну занят работой :)

    Суть в том что если хочешь — выучишь.
  • 0
    ухх сколько всего вкусного для начинающего изучать руби %) от всей души спасибо, постигать руби действительно одно удовольствие

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