Джеймис — старший разработчик, который, среди прочего, в течение 9 лет был частью команды Basecamp и был одним из основных членов команды Ruby On Rails. Джеймис также ведет блог и делится бесконечными интересными вещами на Github.

Как вы пришли в программирование?

Это было летом перед моим младшим классом в старшей школе, и моя мама только что купила новенький компьютер Tandy с колоссальным 20-мегабайтным жестким диском. Конечно, будучи в то время уважающим себя ботаником, я повозился. Я обнаружил GW-BASIC, спрятанный в каком-то малоизвестном каталоге, и, таким образом, вооружившись брошюрой с инструкциями и смутными воспоминаниями об изучении BASIC и черепашьей графики в начальной школе, я копался в нем. Так начался роман с разработкой программного обеспечения, который длился более более 25 лет и, похоже, продлится еще много лет.

Какой ваш любимый язык программирования и почему?

Что ж, Ruby — мой любимый повседневный язык. Я использую его для многих вещей, и мне нравится, насколько он выразительный и гибкий. Однако до того, как я открыл для себя Ruby, я много занимался C, профессионально и на стороне, и мне до сих пор очень нравится многое в C. Я экспериментировал с Go и Rust, и хотя оба они интересны, ни один из них действительно передать то чудо, которое я до сих пор испытываю, работая на C. (Я знаю, верно? «Чудо» — это не то слово, которое большинство людей использует при работе с таким языком, как C…)

Расскажите нам немного о создании Ruby On Rails, как вы начали работать над ним и как это было?

Ладно, это будет что-то вроде романа.

Моя первая конференция по Ruby состоялась в конце 2004 года в Вашингтоне. На самом деле, я выступил в качестве спикера с презентацией о написанной мной системе внедрения зависимостей (на основе проекта Java HiveMind) под названием Copland. (Излишне говорить, что с тех пор мои взгляды на внедрение зависимостей изменились, см. здесь).

Так уж случилось, что на конференции был еще один джентльмен, тоже впервые, и тоже там, чтобы рассказать о своем новом проекте. Этого парня звали Дэвид Хайнемайер Ханссон, и (как вы, наверное, уже догадались) проект, о котором он нам рассказывал, назывался «Ruby on Rails». Мы с ним болтали на конференции, и он признался, что хочет иметь возможность связать Rails со всем, что вам нужно для создания веб-приложения, даже с базой данных. Поскольку я написал несколько привязок Ruby для SQLite, мы начали обсуждать, как интегрировать их в ActiveRecord. Я написал для него простой адаптер в качестве доказательства концепции, и на этом все.

Или я так думал. Через некоторое время со мной связался DHH и спросил, не хочу ли я поработать на стороне для 37signals. Я также писал SSH и SFTP-клиенты на Ruby, и DHH хотел, чтобы я реализовал функцию в Basecamp, которая позволяла людям загружать файлы и сохранять их на своих собственных SFTP-клиентах. (Если бы я только знал, какой головной болью обернется эта функция, я бы отказался!) Так что я провел пару месяцев, подрабатывая 37signals, и в январе следующего года они отвезли меня в Сиэтл для Мастерская «Строительство базового лагеря» сделала мне предложение, и я согласился.

Когда я работал на 37signals, до самой работы с Rails оставалось совсем немного. Джереми Даер и я были первыми двумя коммиттерами проекта после Дэвида. Это были веселые времена! Было интересно быть в авангарде, наблюдать за распространением, бороться с антагонизмом со стороны устоявшихся сред, таких как Enterprise Java и им подобных. Сначала каждая функция, которую мы добавляли в Rails, исходила непосредственно из наших потребностей в создании и поддержке Basecamp, но по мере того, как все больше и больше людей начинали использовать Rails для более широкого круга проектов, мы стали принимать все больше и больше исправлений.

Как я уже сказал, это было очень весело. Определенно, это один из величайших опытов, которые я получил, работая с открытым исходным кодом. Я начал выгорать на нем несколько лет спустя. Это очень очевидно, если вы посмотрите на участников проекта Rails. Если вы найдете там мою карточку (сейчас я № 26), вы увидите, что мое участие угасло примерно в начале 2007 года.

Бывает.

Вы проработали в Basecamp девять лет, каково это быть частью такой растущей компании и как это повлияло на вашу работу?

Базовый лагерь был просто потрясающим. Это та среда, в существование которой большинство людей, вероятно, даже не могут поверить. Джейсон и Дэвид удивительно благосклонны и щедры, и все, кто там работает, легко входят в 99% лучших по способностям. Все помогают друг другу. Здесь нет политики ради выгоды, нет сплетен. Находясь в такой среде, вы хотите быть таким же хорошим, как и все вокруг вас. Вы вознесены. Ты многое попробуешь, многому научишься. Это были мощные, определяющие жизнь девять лет. Я действительно ненавидел уезжать.

Вы ведете (отличный!) блог, как вы решаете, о чем писать? Писать дается вам так же легко, как и развиваться?

Спасибо! Когда тема начинает щекотать мой разум, письмо, как правило, приходит довольно быстро. К сожалению, темы появляются урывками. В последнее время у меня очень мало времени (моя жена вернулась в школу, полный рабочий день, в УрГУ, и у нее четверо детей и дом, который нужно содержать, что означает, что мы оба гораздо более ограничены в нашем свободном времени в эти дни) .

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

Вы выкладываете много крутых проектов на Github, расскажите немного об этих проектах.

Я люблю возиться.

Я много работал с алгоритмами лабиринтов (даже написал о них книгу — Лабиринты для программистов), но мне также нравится играть с алгоритмами в целом. Я экспериментировал с созданием кельтских узлов, манипуляциями с SQL, логическими головоломками, фракталами и многим другим. Некоторые вещи (такие как привязки SQLite, Net::SSH и Capistrano) с тех пор нашли других сопровождающих, и я рад видеть, что они полезны стольким людям.

Чем вы сейчас занимаетесь?

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

Кем вы видите себя в будущем? Каковы, по вашему мнению, проблемы на данном этапе вашей профессиональной карьеры?

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

Но если честно, жизнь удалась. Сумасшедший, занятый и беспокойный, но также полезный, полезный и замечательный!