Интервью с Петерисом Круминьшем (CEO в Browserling) и ответы на ваши вопросы
Хочу запустить цикл интервью с людьми кто вместе с нами читает Хабр и имеет опыт делать мега крутые проекты. У них есть желание рассказать про себя кто они и как они достигли текущих результатов и в комментариях постараться ответить на ваши вопросы. На данный момент таких набралось уже 3 человека, кто хочет помочь всем нам прокачать свои мозги. После первого поста глянем стоит ли делать публикации двух остальных.
К этим людям я поставил требования (можете добавлять в комментариях свои требования):
- Они должны быть из Хабра (пускай даже read only)
- Иметь желание отвечать каждому, кто пишет в комментариях вопросы
- Имеет опыт запуска проектов в США или Европе
- Кто запускал проекты без мешка денег
Начнем с первого нашего друга pkrumins он на Хабре с 2011 года, про его разработки писали у нас.
Место: Сан-Франциско, США
Занимаемая должность: 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).
Свой собственный компьютер я получил намного позже, — годам к 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+. Ведь когда ты в потоке, ты не хочешь быть потревоженным случайным звуком оповещения или сообщения.
А какой средой для разработки ты пользуешься?
У меня настроено две системы: 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 года), а также средние задачи (на ближайшие несколько месяцев) и короткие задачи, к решению которых я сразу же и приступаю.
Какие твои любимые книги/ресурсы о разработке?
Я схожу с ума по компьютерным книжкам и просто по технической литературе. Каждые несколько месяцев я трачу целый день на исследование новейшей литературы и покупаю наиболее заинтересовавшие меня издания. Вот пять моих самых любимых книг по программированию, разработке и компьютерам.
- Новый Омнибус Тьюринга — Книга, обязательная к прочтению для любого заинтересованного компьютерами. Эта потрясающая книга состоит из 66 коротких очерков по наиболее важным и интересным компьютерным темам, таким как компрессия, машины Тьюринга, формальная грамматика, невычислимые функции, и нейронные сети. Книга написана повседневным простым языком и почти не содержит математики. Это моя самая любимая книга.
- Маленькая книга о Семаформах — Эта книга учит тому, как думать многопоточно и решать проблемы синхронизации. Я очень рекомендую её, особенно если вы самоучка. Она ведёт читателя шаг за шагом через серию классических и не очень проблем синхронизации. В ней очень интересно решаются данные проблемы, и я рекомендую её всем с тех пор, как впервые познакомился с ней.
- Жемчужины программирования и Ещё больше жемчужин программирования. — Классическая книга по программированию. Джон Бентли знает, как писать чётко и с энтузиазмом об алгоритмах. Эти книги вечны, и они учат читателя, как разбираться в проблемах, решать их по частям и эффективно реализовывать решения. Ты сможешь пройти собеседование в Google, если прочтёшь эти две книги.
- Маленький комбинатор — Маленький комбинатор даёт немножко знаний о LISP самым что ни на есть забавным способом. Книга — это диалог между тобой и автором о сотнях мелких программных комбинаций, который помимо прочего учит читателя думать рекурсивно. Эта книга заставит Тебя думать и немного расширит Твоё сознание. Это одна из самых интересных книг программирования из когда-либо написанных.
- Элементы стиля и Элементы стиля программирования — «Элементы стиля» — это книга не совсем о разработке или программировании, а скорее об умении писать. Если хочешь быть успешным программистом, необходимо общаться так, чтобы другим людям было понятно, а соответственно и навыки письма просто необходимы. В книге всего 100 страниц и её можно прочитать за один вечер. «Элементы стиля программирования» — классическая книга по программированию от Кернигана, на форму этой книги очень сильно повлияла книга «Элементы стиля». Это старая книга, но по большей части все, чему она учит, применимо и сегодня. Она состоит из 70 правил программирования, таких как «пишите понятно, — не пытайтесь казаться слишком умными»; «говорите, что вы хотите просто и точно»; «выбирайте способ представления данных, который делает программу простой»; «позвольте данным формировать структуру программы».
И это я только начал. Я мог бы легко создать топ-100 моих любимых книг. Напишите мне, если Вам нужен совет по выбору книги или вы хотите обсудить со мной одну из прочитанных Вами!
Какие технологии ты изучаешь сейчас?
Я большой фанат Visual Studio, поэтому совсем недавно я скачал Visual Studio 2015 Preview и пробую её на вкус. А ещё я установил Windows 10 Preview на виртуальную машину. Поскольку моя работа крутится вокруг кросс-браузерного тестирования, мне на самом деле интересно, что сможет предложить новый браузер Microsoft — Spartan.
Компания Google надавно открыла исходный код Kythe, эта программа должна быть намного более лучшим индексатором и обозревателем кода, чем что-либо ранее существующее. Я уже слышал об этом в прошлом году от друга, настоящего гугломана, и я с нетерпением ждал этого. Я собираюсь испытывать её на исходниках ядра Linux в ближайшие свободные выходные.
Если бы у меня было больше времени, я бы объединил Oculus Rift с платформой движения для создания оборудования виртуальной реальности.
А чем ты занимаешься, когда не программируешь?
Мне нравится держать себя в форме. Я занимаюсь лёгкой атлетикой. Я открыл для себя, что короткие спринты бодрят намного лучше, чем чашка крепкого кофе. В дни, когда я выполняю спринты 10 раз по 60 метров, я заряжаюсь энергией на 10-12 часов и программирую как зверь всю ночь напролёт. Также мне нравится соревноваться в треках на дистанцию. 400-метровый спринт и 800-метровая гонка — мои любимые дистанции.
Какие советы ты бы дал себе как начинающему программисту?
У меня на примете лишь четыре правила, которые я мог бы посоветовать молодому себе:
- Решай задачи быстро, эффективно и двигайся вперёд.
- Не делай того, что не создаёт ценности (а главная ценность в наше время — это деньги).
- Как можно раньше начинай вести свой блог разработчика.
- Делай релизы рано и часто.
Автор: kal1sha