Гость рубрики «Рабочие места» – Максим Шамаев. Вот уже более 10 лет он занимается разработкой в X-Cart. Кроме того, Максим принимал участие в таких проектах, как LiteCommerce и Ninjawidget (семейство модулей для Ecwid).

Если вы тоже занимаетесь разработкой ПО, то для вас этот пост обязателен к прочтению. Максим очень подробно рассказывает о своем рабочем софте, «железе» и непосредственно процессе работы.

Максим Шамаев
CTO и CIO X-Cart, а также архитектор X-Cart 5. Как технический директор, Максим занимается развитием платформы для электронных магазинов X-Cart и повышением технологического уровня компании в целом (дабы повысить эффективность труда и эффективность используемых решений). Как директор по информационным технологиям, он занимается внутренней инфраструктурой X-Cart.

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

Ну-с, начнем с рабочего места:

Рабочее место Максима
Рабочее место Максима
Максим Шамаев
Максим Шамаев

Какое ПО используете?

О, здесь все просто! :) Но начнем не с ПО, а с железа.

Железо

Это ноутбук Lenovo IdeaPad Y560p. Ноуту 3 года, но он один из последних ноутов на десктопной версии Core i7. Как следствие, ноутбук достаточно мощный, за счет большего количества ядер. Я в него доставил памяти до 8 Гб, и в качестве основного винта поставил SSD. Родной винт встал вместо DVD.

К ноутбуку прилагается:

  • беспроводная клавиатура A4Tech – только у этого производителя есть подходящие мне клавиатуры, с раскладкой, к которой я привык. Да, клава простая, но на другой я начиная дико промахиваться. :) С учетом моей высокой скорости печати – это критично.
  • беспроводная мышь Logitech.
  • подставка с вентилятором для ноутбука.

Конфигурация дешевая (брал 3 года назад за 30 т.р.), мощная (бьет современные ноутбуки на Core i5 / Core i7 с низком энергопотреблением), но тяжелая по весу. Однако за счет рюкзака, мобильность получается приемлемая. В соседнюю комнату с ноутбуков не подойдешь, но в другой офис приехать – это запросто.

Режим работы ноутбука – без выключения. Закрыл крышку – уснул. Открыл – проснулся. Засыпает/просыпается за 5 секунд, за счет SSD.

ОС и общая концепция софта

Операционная система – Windows 7 (стояла на ноуте от рождения). Устраивает всем, менять не собираюсь. На Windows 8 тоже переходить не собираюсь, ибо там нет чего-то такого, что прям вот мне позарез надо было бы.

Далее самое интересное. Так как я все же сильно программист, много делаю для X-Cart 5, много чего исследую, мне нужен linux-сервер, где я был бы, как минимум, root. Причем, лучше если серверов будет несколько. И надо, чтобы все это могло работать без Интернета, и, чтобы, если я накосячу на сервере, его падение было бы максимально дешевым. Выход прост – виртуальная машина.

В качестве виртуальной машины я использую VirtualBox, ибо достаточен и бесплатен. Получившаяся связка Windows + VirtualBox обладает следующими плюсами:

  1. Мне начхать на то, упадет виртуальный сервер или нет. Я его подниму еще раз.
  2. У меня может быть много виртуальных серверов, а мой ноутбук позволяет спокойно держать 4 активных разных виртуальных сервера. Больше мне ни разу не понадобилось. :)
  3. На Windows я могу позволить себе все программы, которые мне нужны, от Photoshop до Microsoft Office.

За годы работы такая конфигурация показала себя лучше, чем чистый Linux или чем Linux + VirtualBox, так как на Linux не поставишь Photoshop (да, я знаю про GIMP, но он меня не устраивает) и Office (да, я знаю про аналоги, но иногда они не могут открыть то, что мне надо). А ситуация, когда в Linux есть виртуальная машины с Windows, меня не устраивает, так как Photoshop в ней работает дюже медленно.

С Linux была веселая ситуация: изначально я поставил Ubutnu, что-то типа 10.04, как основную ОС, и оставил Windows, как вспомогательную ОС. Все работало хорошо, пока я, собственно, не уронил Ubuntu. Окей, восстановил. Еще раз уронил. Еще раз восстановил. Где-то на 10 разе поставил VirtualBox. Окей, проработал так год. А дальше стал нужен Photoshop, Microsoft Word и еще всякое по мелочи.

Окей, сначала перегружался из одной ОС в другую. Потом начал думать, чтобы поставить Windows в VirtualBox. Посмотрел, сколько ресурсов жрет Photoshop, понял, что не прокатит. И после этого принял решение, что надо все это пересобрать по-другому. После этого получилась текущая конфигурация. Она работает уже 2 года в таком режиме, и я не разу не пожалел о переходе, и ни разу не было такого, что я чего-то не могу сделать.

Максим Шамаев: «На Windows 8 переходить не собираюсь»
Максим Шамаев: «На Windows 8 переходить не собираюсь»

Софт для работы

Моя среда разработки – это комбинация из следующих компонентов:

  1. VirtuaWin – обеспечивает мне виртуальные рабочие столы с переключением по Ctrl+Shift+стрелки. Рабочих столов у меня 10: 2х5 матрица, где 1 стол – верхний левый угол, а 10 стол – нижний правый;
  2. putty – консоль до виртуальной машины. Их я размещаю парами на 4 рабочих стола (3, 5, 7, 9 столы), в результате, у меня 8 консолей до текущей виртуальной рабочей машины;
  3. vim внутри putty – чистая консоль, без мыши. Долгое время работы, знание кода и моя личная высокая скорость позволяют мне очень быстро работать в нем;
  4. браузеры – chrome + firefox – на 2 других рабочих столах (8 и 10). Основной браузер – chrome;
  5. скайп – 2 стол;
  6. truecrypt – криптоконтайнер, шифрованный достаточно стойко, чтобы я там хранил все свои пароли. Соответственно, на 1 столе я обычно открываю файл с паролями; :)
  7. photoshop (если нужен) – 6 стол. Там же находится плеер foobar200; :)
  8. ngrok.com – это клиент для сервиса ngrok, стоит внутри виртуального сервера и прокидывает виртуальный сервер наружу – он получает URL вида 0123456789abcdef.ngrok.com. Это весьма полезно для отладки внешних сервисов и для демонстрации кому-то чего-либо локального;
  9. прочий инструментарий (winscp, WinCacheGrind, jmeter и пр.) – 4 стол.

В результате, я всегда знаю, что где открыто. Среди 8 терминалов тоже есть деление:

  1. терминалы на 3 столе – mysql консоль + сервисные скрипты (X-Cart имеет набор макросов, которые сильно сокращают время разработки, как раз второй терминал на 3 столе служит для их запуска) + запуск тестов + запуск code sniffer’а;
  2. терминалы на 5 столе – просмотр логов, операции с файлами, настройки серваков и прочее;
  3. терминалы на 7 и 9 столах – для редактирования чего-либо, с помощью vim.

То, что еще можно отметить, если рассматривать софт по функционалу:

  1. Почта – наша компания использует Google apps for business, поэтому у меня вся почта в gmail. Просматриваю я ее через браузер. Такой подход избавляет меня от привязки к одной инсталляции почтовика и позволяет использовать одни и те же почтовые настройки выезде, на всех компьютерах, планшетах и телефонах. Все полезные ссылки – просто в bookmarks в chrome.
  2. Быстрый обмен сообщениями – skype + hangouts.
  3. Календарь – стандартный Google calendar (в браузере), из корпоративного аккаунта.
  4. Быстрые записки – есть 2 текстовых файла: 1 лежит открыто на винте, второй в криптоконтейнере. Ссылки на них есть прямо на рабочем столе. Открываю я их обычно на 2 столе.
  5. Управление рабочим временем – использую trello.com, канбан доска в браузере. Она бесплатна и очень функциональна. Служит мне записной книжкой как моих дел, так и каких-то больших задач. Умеет привязывать карточку к дате.
  6. Twitter / facebook / vk / other – отдельных клиентов нет, все через браузер. Открываю их не чаще 1 раза в день. Единственное, бывает, использую vk как плеер. :)

Отвечая на вопросы, которые могут возникнуть:

  • Нет, я не использую shared folders в VirtualBox. Данные, которые мне ценны, хранятся либо в bitbucket / github, либо их копии лежат в Windows и постоянного бэкапа не требуют. Иных данных у меня нет. Файлы между хост-машиной и гостевой я перетаскиваю при помощи WinSCP.
  • Что-то ценное – это либо криптоконтейнер, который я бэкаплю дома, либо Google drive. Так как у нас корпоративный аккаунт в Google drive, то у меня там 30 Гб места. :)
  • Система контроля версий – git. Хостинг удаленных репозиториев – bitbucket.org. Да, он проигрывает github по функционалу, но он дешевле, и у нас там корпоративный аккаунт. Более того, для ситуации, когда у вас МНОГО удаленных репозиториев, bitbucket значительно выгоднее github.
  • Плагины в браузере – стандартный набор для разработчика: Web developer + PerfectPixel + YSlow + Page speed + Speed tracker + Awesome screenshot.
  • Windows 7, потому что меня все устраивает, в WIndows 8 нет ничего, что мне бы пригодилось. Тот же bitlocker мне не нужен, так как криптоконтейнер делает все, что мне надо.
  • Почту я просматриваю достаточно часто. Но часто я просто смотрю заголовки и по ним принимаю решение, что прочитаю это в обед. Поэтому именно читаю почту я 2-3 раза в день. Но мониторю, что есть в ящике, примерно 1 раз в 15-60 минут, в зависимости от того, чем я сейчас занимаюсь.
  • В скайпе и hangouts я всегда. Если меня там нет, значит, я сплю, либо еду куда-то, либо умер вместе с ноутом. :) Причем, часто я ноут не выключаю на ночь, так что создается впечатление, что я всегда онлайн.

Отдельно стоит отметить мою приверженность vim’у. :) Да, я знаю про преимущества PhpStorm и подобных IDE, но пока никак не могу собраться и перейти на них. :) Более того, привычка настолько сильная, что все попытки перейти у меня вызывали жуткое отторжение. :) Не, ну на самом деле, :w я набираю быстрее, чем Ctrl-S. :) Вероятно, если бы код для меня был незнакомый, я бы начал сразу с использования PhpStorm… но код я знаю хорошо, его структура изначально понятна и проста, поэтому, фактически, часть функционала, который берет на себя IDE, я реализую сам, и меня это не тянет. :)

И еще, отдельно насчет мобильности. Когда мне не хватает батареи ноутбука, но нужен доступ до всех сервисов, меня спасает планшет (Acer Iconia Tab A501). Интереснее всего получается с моими лекциями. Я читаю лекции в УлГТУ, и там мне иногда достаются аудитории, где нет розеток. В этом случае я просто использую планшет – его батарее и функционала хватает с избытком. Причем, в нем есть и почта, и Google docs, и клиенты для всех нужных сервисов, от trello до skype. Виртуальная машина – это единственное, чего у меня нет на планшете. :) Но в этот момент она мне не нужна. Как не нужна и в других похожих ситуациях – на конференциях, в поезде или самолете.

Ну, и для передачи духа – скриншоты. :)

10 стол с основным браузером
10 стол с основным браузером
9 стол с putty и vim’ом
9 стол с putty и vim’ом

Как вы организуете свое время?

Общие подходы и принципы просты, выработались с годами. Где-то год назад я прочитал про GTD и немного поменял свои процессы, правда, GTD-совместимыми они не стали. :)

Итак, планирую я все в trello, деля задачи на тактические (ближайшие 2 недели), стратегические (надо сделать за полгода) и мысли (там всякий хлам, который я периодически просматриваю).

До trello я ввел записи в 3 текстовых файлах. Потом перешел на trello, так как я там стал вести планирование отдельных проектов и, чтобы не вести записи о проекте и о его причинах отдельно, в разных системах, перенес все в trello.

Быстрые записи мыслей – текстовые файлы. Позже я их очищаю, вынося что-то в trello, если надо. Фактически, это буфера обмена, куда я копирую что-то для позднего анализа. Быстрее этих файлов ничего нету. Они бьют и трелло и бумажный блокнот. :)

Само планирование у меня построено так, что есть таски, которые никогда не исчезают. Это таски по пересмотру трелло и текстовых файлов. :) Пересмотр – примерно 1-2 раза в неделю. Часто – в субботу. На выходе я получаю пересортированные и измененные карточки в trello + пустые текстовые файлы.

Из внешних «возбудителей», которые могу повлиять на мою работу, кроме skype, почты и личного обращения, можно выделить:

  • youtrack – в нем команда разработки X-Cart 5 управляет своими задачами и планирует будущее;
  • statuscake.org – мониторинг нашей инфраструктуры.

Как результат, у меня все электронное, бумаги нет вообще. :)

Какой у вас режим дня?

6:00 – просыпаюсь.

7:30 – отвожу дочь в школу.

8:00 – я на работе. Начинается моя инициализация:

  • посмотреть почту, ответить, если надо;
  • посмотреть календарь;
  • освежить таски на день, пересортировать применительно ко дню;
  • определиться, что из тасков сегодня буду делать;
  • смотрю youtrack, statuscake и пр.

9:00 – работа по таскам.

12:30 – обед.

13:30 – еще раз смотрим почту, youtrack, statuscake и пр.

14:00 – возвращаюсь к работе по таскам.

18:00-19:00 – ухожу домой, ибо хочется ужина. :)

21:00 – возвращаюсь к работе.

23:00-00:00 – время сна. :)

Кроме этого, часто работаю вечерами на выходных. В это время я читаю какие-то блоги, смотрю библиотеки, читаю changelog’у новых версий каких-то библиотек и прочее. Скажем так, оглядываюсь вокруг, что нового за неделю. Тогда же я пересортирую трелло и опустошаю текстовые файлы.

Насчет продуктивности и прокрастинации.

В принципе, если я выспался, то я продуктивен весь день до ночи. В этом мне помогает музыка. Я любитель Power metal, а это энергичный стиль. :)

Ну, и вообще, metal уважаю. :) По конкретным группам – Manowar, Running wild, Iron Saior, Powerwolf, Ross the boss, W.A.S.P, U.D.O, Warlock, Virgin Steele, Sister sin, Firewind, Axxis, Battle beast, Amaranthe, Lordi.

Даже если есть прокрастинация, если залип, затупил, — музыка тебя заведет.

Конечно, рецепт не для всех, но кому-то поможет. :)

Единственное, у музыки есть минус – я часто в наушниках и не слышу, когда меня зовут. Но ping через skype помогает отлично. :)

Какое место в вашей жизни занимает спорт?

Спорт… Здесь все плохо. :)

Никак не могу собраться и заняться чем-нибудь – много времени съедает работа. Периодически я делаю набеги в качалки, но меня хватает максимум на месяц, дальше снова надо че-то срочно делать, и я это бросаю.

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

В принципе, это не сильно на меня повлияло, хотя мне поставили аппарат Илизарова. Я работал в больнице уже на третьи сутки, хоть и одной рукой. Ну и дальше я с этой рукой, в аппарате, был и на нашем корпоративе и на Ulcamp 2013.

Но с летними коньками я решил после этого завязать – больно дорогие падения. :)

Свободное или «вынужденно» свободное время я убиваю, читая что-то на планшете. Часто это facebook, habrahabr, какие-то тематические блоги, статьи по технологиям, научно-популярные статьи.

Если хочется выключить мозг, раскладываю пасьянс.

По выходным играю в компьютерные игры. Обычно это какая-то старая RPG. Сейчас это Might and Magic 6. Проходить я их могу месяцами, из-за недостачи времени. :)

Одно время играл на электрогитаре, но прервался после перелома. Вернулся к игре где-то в районе октября 2013, но пришлось бросить уже в декабре… Вот, думаю, в ближайшее время надо будет снова начать заниматься (для сломанной руки будет полезно).

Лайфхакерство от Максима Шамаева

Если пройтись по стандартным вещам (книги/подкасты/видео), то дела обстоят так.

Книги

Я технарь, поэтому литература сугубо техническая. Это все классика, которую полезно перечитывать:

  • «Приёмы объектно-ориентированного проектирования. Паттерны проектирования» – Э.Гамма, Р.Хелм, Р.Джонсон, Д.Влиссидес.
  • «Рефакторинг. Улучшение существующего кода» – М.Фаулер.
  • «Совершенный код» – С.Макконел.

Подкасты

Здесь тоже все классическое, но мало, так я слушаю мало, больше читаю:

  • RadioT$
  • IT-компот.

Видеоподкасты

Здесь все плохо. Чего-то знаменательного я выделить не могу… Что-то такое, что прям вот надо посмотреть, такого нет. Чаще что-то важное встречается в виде слайдов, но не в виде видео. Хотя, возможно, мне видео неинтересно. :)

Но, на самом деле, подбор информации – это очень индивидуально.

Например, мне неинтересно многое из бизнесс-литературы, из маркетинга. Мне это неинтересно, потому что я технический специалист.

Но мне интересны именно технологии, новые подходы, тенденции. А это чаще можно выловить в каких-то блогах, твиттере и прочем. На видео и подкастах это появится через месяцы.

Но эта ловля – это, опять-таки, поиск и переходы по ссылкам. Например, нашел интересный доклад, посмотрел твиттер автора, посмотрел его блог, нашел что-то интересное. Но стоит ли подписываться на этот блог? Нет, не стоит, так как информация там появляется раз в полгода. Ибо все спецы – они занятые. Просто так никто не пишет. Да и не появляется в жизни конкретного спеца что-то интересное, о чем и написать стоит и что мне будет интересно. Поэтому, каких-то блогов, которые я читаю постоянно, нет. Ну, разве что, вот этот – @developerWorks. :)

Существует ли конфигурация мечты?

О, здесь все просто! :)

Я технократ, поэтому хочу простого – мой ноутбук, но в формате носимого компьютера. При этом, должна остаться физическая клавиатура, мышь должна заменить перчатка. И я готов к тому, что компьютер сохранит вес в 3-5 килограмм, притом, что он размещается в рюкзаке от ноутбука. Автономность – не менее 16 часов. Размер картинки – примерно как 80-ти дюймовый монитор на расстоянии метра. Принцип построения картинки в очках – дополненная реальность. Связь – 4G.

При такой конфигурации я стану более мобилен, смогу работать вообще везде, смогу одномоментно видеть больше информации, смогу отказаться от мышки в пользу более удобного устройства позиционирования.

Совет лайфхакерам

Совет простой: вам должно быть интересно. Вы должны хотеть то, что вы делаете. Более того, жаждать работы, мечтать о достижении целей. Если на работу вы ходите лениво, значит, это не ваша работы или вы устали. Поэтому, либо ищите другую работу, либо отдохните. Если отдохнули, а все равно не прет, значит, таки не ваша работа. :)

Ну, и слушайте Power metal. :) Нет более энергичной и пафосной музыки, настраивающей на работу. :)