Функциональное программирование и Twitter: интервью с женщиной-мечтой

2014-01-20

Это интервью Дана МакКаллум, старший инженер компании Twitter, дала блогу LambdaLadies, в котором женщины-разработчики делятся своим опытом в функциональном программировании. Несмотря на достаточно феминистскую направленность блога, это интервью будет интересно прочитать всем, вне зависимости от пола, цвета кожи и любимого фреймворка.

В: Привет, Дана. Давай начнём с простого: пара слов о себе.

О: Я  Дана МакКаллум, работаю старшим инженером в Twitter. Работаю над рекламным API, до этого работала с клиентским API.

В: На каком языке пишешь?

О: Scala.

В: Можешь рассказать о своих основных рабочих инструментах?

О: Всей душой ненавижу все эти современные IDE, поэтому соорудила себе адскую машину из githooks, ctags и подобной дребедени, добавила сверху BBEdit в качестве текстового редактора  получилось вкусно. Функция автозаполнения помогает мне быстро перемещаться между файлами.

В: Как давно ты используешь Scala и чем пользовалась до него?

О: Мой стаж работы со Scala  полтора года. До этого, когда работала над клиентским API, писала на Ruby. Давно хотела приступить к Scala, поэтому перевелась в команду, работающей с ним. Сейчас мы почти весь код переписываем на Scala. Работать с Ruby в Twitter уже как-то старомодно.

В: Это твой первый опыт функционального программирования?

О: Когда мне было 12 или 13 лет, родители записали меня на курсы компьютерных технологий в Университете штата Индиана, как бы это отвратительно ни звучало. Там я изучала Scheme, который и стал моим первым функциональным языком программирования. Хотя преподавание велось отнюдь не функциональным методом, скорее, это было введением в мир компьютерных технологий: «Вот, детишки, это цикл». Между Scheme и Scala я не занималась функциональным программированием вообще.

В: Тебе нравится функциональное программирование?

О: Обожаю его. Scala не обожаю. А вот функциональное программирование восхитительно.

В: Ты принимаешь участие в профессиональном сообществе функциональщиков?

О: Стараюсь избегать онлайн-соообществ, потому что в Интернете все ведут себя как мудаки. А на мудаков мне жаль тратить своё время. Гораздо более тёплые отношения выстраиваются в реальной жизни. Так что в онлайн-драмах не участвую, концентрируюсь на человеческих взаимоотношениях с теми, кого знаю.

В: Какие бы языки и инструменты тебе бы хотелось изучить?

О: Я пытаюсь воскресить свои знания о Scheme или другом лиспоподобном языке – исключительно ради развлечения. Заглянула было в дебри Common Lisp, но меня убил его API. Он отдаёт каким-то PHP-душком. Например, нет никакой стандартизации в наименованиях функций. Есть функции, создающие новые списки; есть функции, которые повторно используют введённые списки, но нет общего стандарта. А поскольку я ищу язык для изучения в качестве хобби, чтобы расслабиться, мне такие заморочки не подходят. В итоге я обнаружила, что Scheme в этом смысле действительно хорош. Он полностью стандартизирован, всё наполнено смыслом и систематичностью. Поэтому я немного погрузилась в Racket  диалект Scheme. Пробовала заняться Go, но не была очень впечатлена. Он мне показался хорошенькой библиотечкой с синтаксисом, немного отличающимся от C. Не вижу его особых преимуществ перед другими языками.

Ещё попробовала платформу Arduino, поскольку всегда хотела написать что-то для ОС, работающей в реальном времени. Многие не видят никакого смысла использовать ОС в реальном времени, а мне вот очень нравится программирование для встраиваемых систем. Это бесконечный драйв.

В: Можешь рассказать о каком-нибудь своём детище, которым можешь гордиться?

О: Хм, это же мой любимый вопрос, который я задаю на собеседованиях кандидатам…

Ну что ж, попробую ответить на него сама. Пожалуй, своим любимым проектом могу назвать проект 10-летней давности, когда я писала систему навигации для самолётов. Она работала на Palm Pilot с GPS-блоком на тыльной стороне. Я получала данные от военных, которые публиковали все эти базы данных для аэропортов, и работать с этой информацией было сплошным удовольствием. В самолёте есть такая штучка, которая называется индикатором горизонтального положения  этакий компас, который сообщает об отклонении от курса. Поэтому для Palm Pilot я создала инструмент, завязанный на GPS-системе, который работал так: Вы могли сказать своему пилотному наладоннику что-то вроде «Я сейчас в Блумингтоне, и хочу полететь через Индианаполис в Форт Уэйн, а затем в Мидлэнд, штат Мичиган»  и он прокладывал курс. А тестировала я эту систему сама в реальном полёте.

В: Так ты умеешь управлять самолётами?

О: Да, я пилот.

В: Тебя можно называть магом, ведь ты умеешь ЛЕТАТЬ.

О: Можно просто волшебницей. Но без самолёта летать меня не научили даже в Twitter.

В: У тебя есть математическое образование?

О: И да, и нет. Высшего образования у меня нет, поэтому мой уровень образованности весьма хромает. В школе же отлично успевала по математике, и тогда же приступила к изучению тригонометрии и математического анализа. Мой учитель математики разрешал мне спать на уроках, потому что знал, что я это уже изучила самостоятельно.

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

Помню, было время, когда все вокруг говорили об одном: программисты обязаны отлично знать математику. И, знаешь, я с этим не очень согласна. Для создания программ вовсе не нужно знать определённые математические концепции; программирование  это образ мышления, способность решать проблемы и мыслить категориями свода правил, чтобы совершить путь из одной точки в другую. Математика с программированием связаны только в этом контексте.

В: И напоследок: что ты посоветуешь девушкам и женщинам, которые хотят заняться функциональным программированием?

О: Сложно отвечать на такие вопросы. Мне задавали подобный вопрос о женщинах, которые мечтают стать пилотами. И у меня нет никакого совета. Просто возьмите и делайте, не обращая внимания на тех, кто говорит вам «нет».

Перевод: Люся Ширшова. Спасибо блогу LambdaLadies за простые вопросы. 


Читайте также: 

Математика и программирование: нужны ли они друг другу?

Рейтинг востребованности языков программирования

Рекрутинг талантов в IT