Статьи

Интервью с Дэном Кроуком из Thoughtbot

Дэн Кроак — директор по маркетингу известного аналитического магазина. До того, как он переехал в Сан-Франциско, чтобы открыть филиал Thinkbot на западном побережье, Дэн был моим другом в Бостоне, который помог мне изучить все тонкости Ruby on Rails.

Дэн — хороший парень, чтобы знать, потому что он и его магазин создали все, начиная с ядра Rails и заканчивая многочисленными гемами и плагинами (такими как Capybara Webkit и Bourbon ), которые известны всему веб-сообществу. Я хотел сесть с ним и поговорить о Rails, его эволюции и о том, как его компания создала такую ​​среду вокруг Ruby on Rails.

дан-хрип-1

Я нанял Thinkbot в 2006 году для завершения побочного проекта. Я писал веб-приложения ASP.NET днем. Я хотел узнать об открытом исходном коде, Ruby on Rails, тестовой разработке, Unix, контроле версий и т. Д.

После того, как они завершили проект, я сделал несколько фрилансов на Rails, затем подал заявку на работу в mindbot, и они наняли меня. Я сейчас в компании более пяти лет.


Рельсы поразили их как нечто, что было бы замечательно.

В 2005 году Джон и Чад занимались консалтинговыми проектами на разных языках, таких как Perl и Java. После того, как они выполнили несколько проектов в Ruby on Rails, они почувствовали, что это современный уровень и что они могут быть надежно продуктивными с ним.

Как команда, им нужно было выбрать один язык / структуру и специализироваться на нем. Рельсы поразили их как нечто, что было бы замечательно. Сообщество, окружающее язык, было из тех людей, с которыми они хотели бы работать. Они были одними из первых консультантов, объявивших, что Rails — их специальность.

Это был переломный момент — они могли быть магазином, который разделял технологии, но, выбрав один, особенно перспективный, такой как Rails, они смогли привлечь таких замечательных людей, как Таммер Салех, Джаред Кэрролл, Эрик Милл и другие. ,


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

дан-хрип-2

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

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

Сообщество также является огромным преимуществом. Ruby — это очень стабильный 20-летний язык с гигантским сообществом. Библиотеки для управления зависимостями (Bundler), тестирования (RSpec), аутентификации пользователей через OAuth (Omniauth) находятся в отличном состоянии. Rubygems.org — чрезвычайно полезная работа сообщества. Тысячи Rubyists с аккаунтами GitHub вносят свой вклад в гемы. Ruby является вторым по распространенности языком на GitHub.


Как только вышел GitHub, стало очевидно, что Git и GitHub были превосходным способом обмена кодом.

Прем и Арун появляются в списке участников Rails.

Скрепка и Должа были ранними библиотеками, которые стали довольно популярными в сообществе. Оба были продолжением тестирования и загрузки файлов, которые мы делали раньше. Скрепка была вдохновлена file_column и attachment_fu . Должна быть построена поверх Test::Unit — аналогично тому, как Sass был построен поверх CSS. Этот процесс улучшения никогда не заканчивается в обществе. Другие большие усилия в традиции прикрепления файлов продолжаются сегодня с CarrierWave и Filepicker.io.

Я помню, как приходил в Rails и изучал тонну, заходя в аккаунт Subversion от Technoweenie . Скрепка и Должа были с открытым исходным кодом на пользовательском экземпляре Subversion на svn.thoughtbot.com.

Как только вышел GitHub, стало очевидно, что Git и GitHub были превосходным способом обмена кодом. Мы переместили наши старые библиотеки на GitHub и продолжили участвовать в других проектах и ​​некоторых наших. Следует, чтобы превратиться в библиотеку, которая прекрасно работает с RSpec. Factory Girl была написана для замены светильников.

Мы добавили тестовых шпионов в форк Mocha, затем в отдельную библиотеку под названием Bourne, которая расширила Mocha, а недавно добавили шпионов в RSpec Mocks . Мы не изобрели метод испытания шпиона (мы рекомендуем каждый читает Patterns XUnit Test), но мы упорно трудились, чтобы привести их в наш рабочий процесс и добавить их к существующим инструментам в обществе, развиваемся как эти инструменты стали лучше и получили сообщество служба поддержки.

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


Мы описали наш процесс разработки в нашей книге игр и руководствах .

Я воспользовался преимуществами моей оболочки (zsh) и редактора (vim). Я ужесточил свои петли обратной связи, особенно при написании тестов. Я стал более последовательным и дисциплинированным в отношении стиля и потока Git. Я лучше понимаю и использую объектно-ориентированные методы.

дан-хрип-3

Я думаю, что они великолепны! Я с нетерпением жду улучшения скорости и именованных параметров в Ruby. Я с нетерпением жду дополнительных интеграций с Postgres в Rails 4, таких как типы массивов hstore и database.

У нас пока нет крупных проектов на Rails 4 или Ruby 2. Глядя на историю прошлых выпусков, мы стараемся не прыгать. Мы некоторое время тестировали наши библиотеки с открытым исходным кодом на обеих версиях и сообщали о любых проблемах в обратном направлении, исправляя то, что можем, но ради наших клиентов мы немного более консервативны в применении новейшей технологии.


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

Допустим, вы используете OS X. Возможно, вы хотите использовать Homebrew, но это не стандартный менеджер пакетов для операционной системы. Я бы хотел, чтобы Apple сделала это стандартом. Точно так же установщики Ruby, переключатели Ruby, binstubs Bundler, соглашение о сообществе файлов .ruby-version и прокладки rbenv продолжают развиваться, чтобы управлять различными версиями библиотек, которые вы хотите использовать в разных проектах.


Маловероятно, что мы сделаем основную замену Ruby как нашему языку на стороне сервера.

Я не знаю! В ближайшем будущем, безусловно, мы сможем достичь многого с помощью Ruby, SQL и JavaScript. Маловероятно, что мы сделаем основную замену Ruby как нашему языку на стороне сервера. Скорее всего, мы будем работать над проектами, использующими сервис-ориентированные архитектуры, и различные сервисы начнут использовать альтернативные платформы и языки, такие как Go .

Я ожидал бы, что мы будем более полиглотными, чем заменим Ruby. За последние несколько лет мы использовали много баз данных, хотя в настоящее время Redis и Postgres могут обрабатывать 99% наших случаев использования.

Я также хотел бы попробовать сделать что-то вроде архитектуры кампании Барака Обамы 2012, которая представляла собой статический HTML / CSS / JS, обслуживаемый Akamai и S3 , с сотнями бэкэнд-API.


В течение многих лет мы усердно работали над тем, чтобы выложить наш лучший совет на Learn Rails У нас есть «карта следов», специально предназначенная для изучения Rails, и мы курировали ее через Интернет и в нашем собственном магазине. Зайдите туда и вы увидите, какие ресурсы мы рекомендуем использовать в каком порядке. Есть приложение для iPhone, которое поможет вам самостоятельно оценить свои способности и отслеживать ваши успехи в Rails, Git, Postgres, JavaScript-трейлах и других трейлах.


Спасибо, Дэн, за то, что уделили время на это интервью, мы очень ценим это.