Сегодня у нас в гостях Дмитрий Честных с очень обширным рассказом о том, как он работает. Дмитрий — основатель небольшой компании, которая производит чертовски полезное программное обеспечение для Mac и Windows. На самом деле таких, как он, называют «шейкерами» и если вы принадлежите к этой профессии или хотите в нее попасть, то рассказ будет вашим путеводителем по методам работы, программам и всему необходимому.

Также нас часто упрекают в том, что почти все наши гости — пользователи Mac. Дима тоже, но у него очень сложные отношения с Макинтошем, что порадует ненавистников Маков и заставит фанатов думать, что «Маки уже не те». Дима тоже прошел ГТД, ни прибавить, ни отнять :)

Приятного чтения!

Чем вы занимаетесь на работе?

Я придумываю и пишу программы, рисую графику, делаю сайт, блог, занимаюсь маркетингом, отвечаю на письма поддержки в Coding Robots. Также я веду блог на русском языке Sellme.ru.

Как выглядит ваше рабочее место?

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

Какое оборудование вы используете?

Два года назад я написал заметку «Почему у меня три мака». Короче: потому что один из них всегда в ремонте. Сейчас у меня четыре Мака, причем три из них сломаны, а один уже не годится (он на PowerPC).

Я не буду использовать трибуну Lifehacker, чтобы жаловаться на качество Apple, но буду краток. Теперь у меня новый белый пластиковый цельный MacBook (2,26 ГГц Core 2 Duo, 4 ГБ DDR3, 250 ГБ HDD). После трех месяцев использования ждет замены материнки и дисплея. Он еще не совсем мертв, так что я работаю над ним сейчас. В шкафу лежит MacBook Air, который с декабря ждет замены шарнира экрана — они уже второй раз развалились, а это второй Air. Еще есть старый 17-дюймовый MacBook Pro, у которого под дисплеем какой-то мусор. Собственно, дисплей там изначально не предназначен ни для чего, кроме графики EGA. Древний iBook уже не годится, потому что для PowerPC нет Mac OS X 10.6.

Поэтому, когда наступит год Linux на рабочем столе, когда я перестану программировать для Mac и когда этот MacBook снова сломается, я перейду к другому методу.

У меня дома два Wi-Fi роутера: один D-Link для провайдера ADSL (7 мегабит), другой Asus для провайдера Ethernet (15 мегабит). Есть еще AirPort Express, но он не поддерживает VPN, поэтому не используется.

Телефон - айфон 3G. Предыдущий был iPhone первого поколения, но он разбился при падении на кафельный пол (нижняя часть экрана перестала чувствовать прикосновения, что очень забавно — представьте, я пытаюсь разблокировать телефон и не понимаю, что происходит: поворачиваю он вкл и выкл работал потому что то что для этого надо дергать сверху, а разблокировать - никак). Я выбрал iPhone, потому что ничего лучше не было, а программировать для него хотелось. После действий Apple по отношению к разработчикам я не хотел для него программировать.

Также есть клавиатура Apple (прозрачная, а не алюминиевая) и Mighty Mouse. Что первое, что второе - ужас. Лежат без дела, только мышкой иногда пользуюсь, когда надо что-то нарисовать, чего тачпад не работает (есть и дешёвый планшет, но я к нему не привык).

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

Три основные программы: текстовый редактор, браузер и Xcode.

С текстовым редактором пока не определился: пользуюсь TextMate, потом Emacs, потом MacVim, потом vim в консоли, потом gedit. Очень удобно, что в Cocoa текстовые поля принимают некоторые клавиши Imax (например, C-a, C-e для перехода в начало и конец строки). :wq

Моим браузером недавно был Chrome, а до этого я пользовался Safari. Есть также Firefox, который я иногда использую для Firebug, YSlow и Page Speed, но в Chrome/Safari Web Inspector уже достаточно крут, чтобы их заменить.

В Chrome я использую FlashBlock, Docs PDF/PowerPoint Viewer, «Отправить с помощью Gmail» (без кнопки) и модифицированную навигацию с помощью клавиатуры для расширений Chrome. Последнее мне очень нравится — вместо таргетинга на ссылки трекпадом я нажимаю «/», ввожу пару букв из просматриваемой ссылки и нажимаю «Возврат». Недостаток оригинального расширения в том, что оно ищет по всем ссылкам на странице и прокручивает экран, хотя очевидно, что пользователь хочет «кликнуть» по той ссылке, которую он видит, поэтому я немного изменил ее — моя версия ищет только для ссылок, видимых на экране. Я выложил исходник, но не выложил в галерею расширений... Собственно, для читателей Лайфхакера я просто выложил :-) Там же есть видео как это работает.

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

Я пользуюсь Gmail с древних времен, но только недавно перешел с Mail на его веб-интерфейс. Нитки очень удобны.

В Gmail Labs у меня есть: расширенные элементы управления IMAP (очень полезно, когда я использовал почту), создание документа, настраиваемые форматы даты, предварительный просмотр Flickr, предварительный просмотр документов Google, проигрыватель Google Voice, перетаскивание панели навигации, предварительный просмотр Picasa, выбор текста цитаты, подпись настройки, SMS в чате, настройки заголовка (перемещает «Gmail» в конец заголовка «Gmail — Входящие (10) — em[email защищено]»).

При обработке почты я следую принципу Inbox-near-Zero. На что нужно ответить немедленно, я отвечаю и архивирую. Где нужно немного подумать, оставляю в инбоксе. Там, где нужно долго думать или чего-то ждать, я ставлю метку «Позже» и архивирую. Иногда «немного подумать» приходится долго и в папке «Входящие» скапливается 10-15 писем. Я обрабатываю их примерно раз в неделю (ответь или забудь).

В основном я перемещаюсь по Gmail с помощью клавиатуры (нажмите «?», если вы не знаете, как это сделать). Вообще, гуглеры отлично умеют делать такие вещи: я использую клавиатуру и в Google Reader, и в самом поиске Google (для этого нужно включить эксперимент с сочетаниями клавиш). Без последнего я вообще не представляю поиск: как можно кликать мышкой по ссылкам, если быстро перемещаться по результатам поиска с помощью j/k и открывать нужную с помощью Return?

Я использую FogBugz (бесплатный аккаунт для студентов и стартапов, хе-хе) для поддержки пользователей Mémoires и Cathodique уже год, но никому не советую этого делать, и я собираюсь избавиться от него и скоро переключитесь на Gmail. Мой коллега использует Gmail для поддержки пользователей BlogJet и ScreenSketcher и доволен этим. Наша электронная почта настроена следующим образом: codingrobots.com работает на Google Apps. У нас есть отдельный адрес поддержки для каждой программы. Почта BlogJet и ScreenSketcher идет на учетную запись коллеги, почта Mémoires и Cathodique перенаправляется на мой FogBugz, несколько других адресов перенаправляются на мой Gmail. На [email protected] есть фильтры: если в сообщении есть слова BlogJet или ScreenSketcher, то письмо пересылается коллеге, остальные — мне. Иногда бывают косяки (например, в поддержку BlogJet пишут про Mémoires) и мы пересылаем друг другу письма, но такое бывает редко. Все же лучше, чем FogBugz.

У меня нет трекера ошибок. Если кто-то найдет ошибку в программе, я постараюсь ее сразу же исправить. Добавляю Crash report в отдельный ярлык в Gmail и просматриваю: если одинаковых вылетов больше двух, то это какой-то программный сбой, который нужно исправить. Если кому-то нужна фича, я ее нигде не записываю, а просто запоминаю. Потому что, если эту функцию будут часто просить, я ее не забуду и сделаю. А если редко, то и не нужно. Сначала я переживал по этому поводу и перепробовал всякие багтрекеры, но поскольку узнал, что 37signals делает то же самое, то успокоился. У каждой нашей программы один разработчик, поэтому основная функция багтрекеров — перераспределение ответственности за баги («ты написал эту фигню, ты исправишь» — «нет, виноват твой код») — нам это не нужно .

Перейдем к искусству. Для рисования мелких вещей (кнопки, маленькие иконки, графика сайта) я использую Acorn и иногда Gimp, когда Acorn не хватает функциональности.

Рисую векторную графику (иконки программ, логотипы, макбуки) в Inkscape. Я, конечно, не художник, но Inkscape мне очень нравится, несмотря на тот недостаток, что он и Gimp работают в X11 и не выглядят родными на Mac.

Я провожу много времени в терминале. Там у меня обычный bash с немного измененным конфигом: зеленый $, показать текущую директорию в строке и, если директория git-репозиторий, показать текущую ветку. Плюс псевдонимы для ls: «la» для отображения скрытых файлов и «ll» для подробного списка.

Я использую автопереход, чтобы упростить навигацию по каталогам. Удобная штука: запоминает, куда я часто захожу, и тогда вместо cd ~/Projects/cathodique можно набрать только часть имени каталога: j cat, чтобы перейти в него.

Раньше я использовал MacPorts для установки разных пакетов, но он всегда устанавливал свои библиотеки (устанавливать какую-то мелочь, качать кучу разных версий perl и т.д.), поэтому я перешел на homebrew - он использует библиотеки, которые уже есть в Mac OS X.

Иногда вместо rm использую корзину - она не удаляет файлы, а кладет их в корзину. На всякий случай.

Git — моя любимая система контроля версий. Я начал с CVS, затем переключился на Subversion (это отстой), потом на Git, потом на Mercurial, потом на Fossil, а потом снова на Git. И где-то между ними я попробовал Bazaar. Мне нравились Mercurial и Fossil, но Git все же больше. Кроме того, GitHub просто крут. Помимо консольного интерфейса я иногда использую GitX для удобного просмотра истории.

Я тоже использую свои программы :-) В Cathodique ищу и смотрю видео, а в Mémoires делаю небольшие заметки. Последнее, что мешает мне использовать его на полную катушку, это то, что он у меня всегда в режиме отладки, и как-то не получается сосредоточиться на написании чего-то, всегда хочется что-то повозить в самой программе.

Я пишу сообщения в блоге в MarsEdit (это хорошая замена BlogJet на Mac, особенно с версии 3, которая только что вышла :-).

У меня четыре аккаунта в твиттере, поэтому использовать веб-интерфейс невозможно. Я использую Tweetie (бесплатная версия с рекламой).

У меня 6 виртуальных машин в VirtualBox: Windows XP, Ubuntu 9.10, Ubuntu 10.04, PC-BSD, Mint Linux, Arch Linux. Windows нужна для тестирования наших Windows-программ и запуска панели управления реселлера, а Linux и BSD — для экспериментов. VirtualBox — нормальная программа, однако с каждым обновлением то тут, то там появляется ошибка. Но это бесплатно (хотя Oracle, вероятно, уже планирует взимать с пользователей деньги). Раньше использовал Parallels, но бросил, как только он стал слишком медленным на MacBook Pro. Не знаю почему, все остальные работают нормально.

Для скачивания файлов использую две программы: Cyberduck и Interarchy. Я бы использовал только Interarchy, но он не поддерживает Rackspace Cloud Files, на котором мы размещаем дистрибутивы ПО.

В Интернете, помимо Gmail, я использую Google Reader, Docs, Calendar, GitHub, Flickr и Picasa Web.

Я использую календарь в основном для записи прошлых событий, которые мне нужно будет вспомнить позже, чтобы подсчитать, сколько времени прошло, а также чтобы увидеть, когда следующая гонка Формулы-1. На некоторые события и дела, которые нужно отнести к конкретному у меня почти нет времени. Я не пользуюсь списками дел: по умолчанию работаю в ненадежном режиме. Нужно купить аккумуляторы? Забыл, да ладно, куплю в следующий раз. Нужно ответить на письмо? Если я забуду, они пинают. Конечно, я не так часто что-то забываю, и я не совсем придурок. А вот штука «Доводить дело до конца» — записать на бумагу и выкинуть головы, потом периодически пересматривать и запоминать — у меня не работает, потому что когда я практикую ГТД, я думаю только о ГТД. Уже штук 5 программ для создания to-do list написали-подписали. Достаточно :)

Я тоже пользуюсь Google Analytics почти каждый день: отслеживаю трафик и делаю заметки.

Я не пользуюсь мгновенными сообщениями, потому что не люблю отвлекаться. Есть скайп, который иногда выручает, плюс, если кто-то попросит быстро обсудить, включаю Google Talk в Gmail.

В Mac OS X мой док находится справа, и в последнее время я его прячу. Я использую сочетания клавиш для перемещения по программам и окнам. Для запуска программ - Spotlight (ранее использовались Quicksilver и Google Quick Launch Box).

Я использую рабочий стол для временных файлов, которые потом куда-то перетаскиваю или удаляю. Иногда я меняю картинку на рабочем столе по настроению, но обычно она просто серая (#2D2D2D). Не от плохого настроения, а для эстетики.

Пробелами не пользуюсь - перемещение туда-сюда меня раздражает. Гораздо проще скрыть программу (Cmd+H) или все программы, кроме текущей (Cmd+Opt+H).

Есть ли место для бумаги в вашей работе?

Почти никогда. У меня есть блокнот, но я очень редко туда пишу. Иногда рисую эскизы интерфейса.

Есть ли конфигурация мечты?

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

Я очень хочу хорошую операционную систему, потому что ни Mac OS X, ни Linux, ни уж тем более Windows меня не устраивают. Я чувствую, что можно работать намного эффективнее, но я не знаю, как именно :-)