Интервью с Петерисом Круминьшем (CEO в Browserling) и ответы на ваши вопросы

Хочу запустить цикл интервью с людьми кто вместе с нами читает Хабр и имеет опыт делать мега крутые проекты. У них есть желание рассказать про себя кто они и как они достигли текущих результатов и в комментариях постараться ответить на ваши вопросы. На данный момент таких набралось уже 3 человека, кто хочет помочь всем нам прокачать свои мозги. После первого поста глянем стоит ли делать публикации двух остальных.
К этим людям я поставил требования (можете добавлять в комментариях свои требования):

  1. Они должны быть из Хабра (пускай даже read only)
  2. Иметь желание отвечать каждому, кто пишет в комментариях вопросы
  3. Имеет опыт запуска проектов в США или Европе
  4. Кто запускал проекты без мешка денег

Начнем с первого нашего друга pkrumins он на Хабре с 2011 года, про его разработки писали у нас.
image
Место: Сан-Франциско, США
Занимаемая должность: CEO в Browserling
Источник интервью: fogcreek

Наш сегодняшний гость — Петерис Круминьш, сооснователь и CEO компании Browserling, — кроссбраузерного он-лайн сервиса по тестированию. А также автор книги ‘Perl One-Liners‘, — GTD (getting things done) применительно к программированию — о том, как быстро получать результаты с помощью командной строки на языке Perl. В его блоге регулярно появляются новые статьи.

Как ты начал заниматься разработкой программ?

Я начал играть с компьютерами ещё в 6 лет, когда получил доступ к 386 и 486 ПК на маминой работе. Когда я в первый раз сел за компьютер, то был полностью заворожён. С тех пор я каждый день мечтал о своём личном персональном компьютере. И долгое время, пока не получил его, я использовал любые способы, чтобы приблизиться к сфере ИТ. Я подружился со многими ребятами, интересовавшимися компьютерами и у которых они были. Будучи ребёнком, я даже притворялся студентом в нескольких университетах, лишь бы получить доступ к Интернету.
Моим первым компьютером стал ноутбук. У моего друга по прозвищу Зомби (он, кстати, был потрясным сис.админом) каким-то образом оказался ненужный ноутбук, и он отдал его мне просто так. Я до сих пор храню этот подарок. Ноутбук IBM Butterfly (ThinkPad 701CS). В этом чуде было 8MB RAM, 800MB жёсткого диска и две установленные операционки: Windows 95 и OpenBSD. Позже я проапгрейдил его до 40MB RAM. У него также имелась thinnet PCMCIA карта сетевого адаптера, которая помогла создать мою первую домашнюю сеть на 10МБит/с. Для тех, кто никогда не слышал про thinnet, поясню: это такой Ethernet через коаксиальный кабель (10Base2).
image
Свой собственный компьютер я получил намного позже, — годам к 15. Это была убийственная машина: 400Mhz Celeron с 256Mb RAM, 8Gb жёстким диском, 3D Blaster Banshee 16Mb видеокартой и 17» 75Hz 1024×768 CRT монитором. На компьютере стояла новёхонькая Windows 98 (которая к тому моменту только-только была опубликована).
Я 100% самоучка. Я начал изучать сразу несколько языков одновременно. Когда я получил свой Celeron, я уже имел чёткое представление о том, что я от него хотел. Я хотел создавать web-страницы, и поэтому в первый же день начал писать на HTML, Javascript и CSS. Сначала я не до конца понимал, как работают web-сайты и не знал о языках серверного уровня, и мне пришлось повозиться, прежде чем я узнал, что для запуска сайта в Интернете нужен web-сервер. Сначала я держал свои сайты на Angelfire, но после — настроил свой собственный Linux Slackware сервер с PHP и MySQL. И само собой, мне хотелось стать хакером, — для этого я выучил C и Assembler. Я провёл огромную тучу времени в IRCNet, а заодно и разобрался, как писать mIRC-скрипты и создал свою собственный IRC-клиент с помощью Visual Basic.

Расскажи нам немножко о том, кем ты стал

Сейчас я являюсь CEO Browserling. Я создал Browserling в 2011 году вместе со своим другом, это происходило в Bay Area (Сан-Франциско). Мой обычный день состоит из множества написанных строк кода, управления серверами, работы с заказчиками и моими работниками. Мне нравится то, чем я занимаюсь и прямо сейчас я не могу представить себя за чем-нибудь другим, кроме как управлением компанией, занимающейся разработкой. Я был невероятным фанатом Пола Грэма и его сочинений, которые вдохновили меня создать стартап.
На данный момент я 100%-но сфокусировался на развитии бизнеса. Я не берусь ни за какие проекты на стороне, а также прекратил писать книги, поскольку это отвлекает меня от главной цели — компании. Первым правилом создания успешной компании является 100%-ная концентрация на продукте. Сейчас я занимаюсь увеличением выручки и создаю интернациональную удалённую команду Browserling’а. Только недавно я нанял замечательного инженера из Украины, — я расширяю компанию также и на не-Англоговорящие рынки.
Помимо этого я решаю множество технических задач. Например, — как эффективно отображать клиентам браузеры, запущенные на виртуальных машинах, или как получать сотни скриншотов браузера в секунду. Мне нравится работать с серверами, и я планирую перенести стек серверов из EC2 и Rackspace облаков на реальные сервера. Облачные сервера хороши, когда ты только начинаешь бизнес, но по достижении определённого уровня важным этапом становится переход на собственное серверное оборудование. Это экономит много денег и многократно увеличивает производительность.

Что для тебя самое приятное в программировании?

Я просто счастлив, когда нахожусь в потоке или когда все дела сделаны. Я могу очень часто входить в поток, и конечно же хочу поделиться с вами своим секретом. На самом деле всё просто: все самое важное я делаю ночью, а после сплю весь день. Ночное время идеально подходит для работы в потоке. Ночь устраняет всё, что тебя отвлекает или пытается удержать твоё внимание на себе. Ещё одним секретом нахождения в потоке является… закрытие Twitter’а, Facebook, Skype, Gtalk и G+. Ведь когда ты в потоке, ты не хочешь быть потревоженным случайным звуком оповещения или сообщения.
image

А какой средой для разработки ты пользуешься?

У меня настроено две системы: Windows/Linux. Я использую Windows 7 на своей основной рабочей станции и подключаюсь с помощью SSH к своим Linux-серверам. Совсем недавно (в прошлом месяце) я собрал новую рабочую станцию, в основе которой лежит процессор Intel i7 4790K, разогнанный до 4.7Ghz.
Также у меня есть линусковый firewall сервер, линуксовый файловый сервер и линуксовый сервер разработки. Я поднимаю линуксовый файловый сервер на Windows через Samba, и он запускает набор дисков, собранных в RAID6, которые допускают отказ двух дисков из рейда. Все эти линуксовые сервера работают на Slackware. Мне нравится простота Slackware. Я использую минималистичные установщики и добавляю лишь те пакеты, которые мне необходимы. Например, фаерволу достаточно Bash, Vim и Iptables; файловому серверу нужны лишь Bash, Vim, Cryptsetup и Samba. А на сервере разработки установлено только то, что непосредственно требуется для разработки.
Я использую Vim на Windows и Linux, а также gVim и Visual Studio на Windows. Я не могу себе представить процесс разработки в Windows без IntelliSense. Я использую полностью перенастроенную Vim и два десятка плагинов, таких как:

  • surround.vim (быстро редактируемый окружающий текст)
  • repeat.vim (повторение недавних команд)
  • matchit.vim (расширение соответствий ключей %)
  • snipmate.vim (сниппеты кода)
  • nerd_tree.vim (для обзора файловой системы из vim)
  • a.vim (дополнительные C и H файлы)
  • ragtag.vim (соответствия для редактирования HTML)
  • tabular.vim (выравнивание текста)
  • bufexplorer.vim (работа с буфером)
  • python.vim (улучшенная поддержка python)
  • exchange.vim (быстрая замена текста)
  • abolish.vim (подстановка слов)
  • speeddating.vim (увеличение дат)
  • и много других.

На Windows, я бы не смог жить без:

  • Visual Studio (ничто не сравнится с IntelliSense)
  • SQLyog (менеджер GIU для баз данных MySQL)
  • SQLiteSpy (менеджер GUI для баз данных SQLite)
  • pgAdmin (менеджер GUI для баз данных Postrgres)
  • WinSCP and SecureFX (безопасные FTP-клиенты)
  • Putty and SecureCRT (SSH-клиенты)
  • KeePass (менеджер паролей)
  • ClipX (менеджер буфера обмена)
  • Launchy (для запуска программ)
  • Locate32 (для индексирования файлов)
  • allSnap (менеджер окон)
  • AutoHotkeys (автоматизация задач и программ)
  • Virtual CloneDrive (для монтирования образов дисков)
  • IsoBuster (для извлечения образов дисков)
  • ImgBurn (для создания образов дисков)
  • Enounce MySpeed (ускорь или замедли свои видео)
  • Hex Workshop (hex-редактор)
  • VMWare Workstation (виртуальные машины)
  • Cygwin (инструменты unix)
  • UltraMon (поддержка работы с множеством экранов)
  • Beyond Compare (программа для сравнения файлов)
  • Tclock2 (улучшенные часы)
  • Fineprint (прокси для принтера)
  • SumatraPDF (улучшенный просмотрщик PDF)
  • AviSynth (для редактирования видео программно)
  • ffmpeg (для конвертации видео)
  • VirtualDub (для конвертации и редактирования видео)
  • WinDirStat (для визуализации дискового пространства)
  • clink (улучшенный cmd.exe)
  • IDA Pro (для отладки)
  • Photoshop
  • Sysinternals tools

На Linux, я бы не смог жить без:

  • samba (монтирование Linux на Windows)
  • tmux and screen (постоянные shell сессии)
  • all the standard UNIX utilities (awk, sed, grep, head, tail, uniq, sort, и др.)
  • perl (быстрое прототипирование, быстрые хаки, решение задач командой в одну строку)
  • iptables and nftables (безопасность в сети)
  • htop (продвинутый монитор процессов)
  • mtr (улучшенный traceroute)
  • multitail ( отслежвание множества файлов во множестве окон)
  • nc (netcat, швейцарский нож для TCP/IP )
  • iftop (отслеживание пропускной способности)
  • ack (улучшенный grep)
  • ipcalc (калькулятор сетевых адресов)
  • pv (pipe просмотрщик – UNIX pipe прогресс бар)
  • rsync (бекапы)
  • ncdu (визуализация дискового пространства)
  • curl (http клиент)
  • nmap (сканер сети)
  • tcpdump and wireshark (для отладки ошибок в сети)
  • sysdig (strace + lsof + tcpdump в одной программе)
  • youtube-dl (скачивать все онлайн-видео)

Я программирую сидя. Я никогда не пытался программировать стоя или в движении(на беговой дорожке), — мне это кажется странным. Когда я в потоке, я слушаю канал Вокального Транса di.fm. Но это только если я уже вошёл в состояние потока, иначе музыка просто слишком отвлекает. Я бы не смог программировать без своей верной Microsoft Natural keyboard, которую я использую уже больше 10 лет. Она до сих пор работает прекрасно, но на ней уже видны потертости от времени.
Я делаю много заметок, когда пытаюсь решить какой-нибудь вопрос. Как только у меня появляется сложная проблема, я пытаюсь разбить её на мелкие подзадачи, которые могут быть решены очень просто. Затем я создаю ToDo-лист для задач и начинаю их выполнять, вычёркивая одну за одной. Вообще говоря, у меня имеется несколько ToDo-листов, объединяющих в себе длительные задачи (на ближайшие 1-2 года), а также средние задачи (на ближайшие несколько месяцев) и короткие задачи, к решению которых я сразу же и приступаю.

Какие твои любимые книги/ресурсы о разработке?

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

  1. Новый Омнибус Тьюринга — Книга, обязательная к прочтению для любого заинтересованного компьютерами. Эта потрясающая книга состоит из 66 коротких очерков по наиболее важным и интересным компьютерным темам, таким как компрессия, машины Тьюринга, формальная грамматика, невычислимые функции, и нейронные сети. Книга написана повседневным простым языком и почти не содержит математики. Это моя самая любимая книга.
  2. Маленькая книга о Семаформах — Эта книга учит тому, как думать многопоточно и решать проблемы синхронизации. Я очень рекомендую её, особенно если вы самоучка. Она ведёт читателя шаг за шагом через серию классических и не очень проблем синхронизации. В ней очень интересно решаются данные проблемы, и я рекомендую её всем с тех пор, как впервые познакомился с ней.
  3. Жемчужины программирования и Ещё больше жемчужин программирования. — Классическая книга по программированию. Джон Бентли знает, как писать чётко и с энтузиазмом об алгоритмах. Эти книги вечны, и они учат читателя, как разбираться в проблемах, решать их по частям и эффективно реализовывать решения. Ты сможешь пройти собеседование в Google, если прочтёшь эти две книги.
  4. Маленький комбинатор — Маленький комбинатор даёт немножко знаний о LISP самым что ни на есть забавным способом. Книга — это диалог между тобой и автором о сотнях мелких программных комбинаций, который помимо прочего учит читателя думать рекурсивно. Эта книга заставит Тебя думать и немного расширит Твоё сознание. Это одна из самых интересных книг программирования из когда-либо написанных.
  5. Элементы стиля и Элементы стиля программирования — «Элементы стиля» — это книга не совсем о разработке или программировании, а скорее об умении писать. Если хочешь быть успешным программистом, необходимо общаться так, чтобы другим людям было понятно, а соответственно и навыки письма просто необходимы. В книге всего 100 страниц и её можно прочитать за один вечер. «Элементы стиля программирования» — классическая книга по программированию от Кернигана, на форму этой книги очень сильно повлияла книга «Элементы стиля». Это старая книга, но по большей части все, чему она учит, применимо и сегодня. Она состоит из 70 правил программирования, таких как «пишите понятно, — не пытайтесь казаться слишком умными»; «говорите, что вы хотите просто и точно»; «выбирайте способ представления данных, который делает программу простой»; «позвольте данным формировать структуру программы».

И это я только начал. Я мог бы легко создать топ-100 моих любимых книг. Напишите мне, если Вам нужен совет по выбору книги или вы хотите обсудить со мной одну из прочитанных Вами!
image

Какие технологии ты изучаешь сейчас?

Я большой фанат Visual Studio, поэтому совсем недавно я скачал Visual Studio 2015 Preview и пробую её на вкус. А ещё я установил Windows 10 Preview на виртуальную машину. Поскольку моя работа крутится вокруг кросс-браузерного тестирования, мне на самом деле интересно, что сможет предложить новый браузер Microsoft — Spartan.
Компания Google надавно открыла исходный код Kythe, эта программа должна быть намного более лучшим индексатором и обозревателем кода, чем что-либо ранее существующее. Я уже слышал об этом в прошлом году от друга, настоящего гугломана, и я с нетерпением ждал этого. Я собираюсь испытывать её на исходниках ядра Linux в ближайшие свободные выходные.
Если бы у меня было больше времени, я бы объединил Oculus Rift с платформой движения для создания оборудования виртуальной реальности.

А чем ты занимаешься, когда не программируешь?

Мне нравится держать себя в форме. Я занимаюсь лёгкой атлетикой. Я открыл для себя, что короткие спринты бодрят намного лучше, чем чашка крепкого кофе. В дни, когда я выполняю спринты 10 раз по 60 метров, я заряжаюсь энергией на 10-12 часов и программирую как зверь всю ночь напролёт. Также мне нравится соревноваться в треках на дистанцию. 400-метровый спринт и 800-метровая гонка — мои любимые дистанции.

Какие советы ты бы дал себе как начинающему программисту?

У меня на примете лишь четыре правила, которые я мог бы посоветовать молодому себе:

  1. Решай задачи быстро, эффективно и двигайся вперёд.
  2. Не делай того, что не создаёт ценности (а главная ценность в наше время — это деньги).
  3. Как можно раньше начинай вести свой блог разработчика.
  4. Делай релизы рано и часто.

Автор: kal1sha

Источник

Оставить комментарий