Показаны сообщения с ярлыком продуктивность. Показать все сообщения
Показаны сообщения с ярлыком продуктивность. Показать все сообщения

среда, 25 апреля 2012 г.

Выпуск 9. Структурируй это! - часть 1

Спец. выпуск в двух частях.

Структурируй это!


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

Естественно, что все мы что-то делаем, чтобы эти данные структурировать. Я покажу, какие способы и инструменты использую я. Возможно, что-то вам покажется интересным.

Общие идеи


1. Структура ранее наполнения. Я всегда стараюсь придумать некоторую структуру для хранения данных до того, как большие объёмы информации начинают поступать. Это может быть, как горизонтальное структурирование (теги, даты документа, номера договоров  ...), так и вертикальное (дерево папок).

2.  Не страшно если структура окажется не удачной, плохая структура лучше чем её отсутствие. Сделать хорошую структуру из плохой проще, чем хорошую и никакой.

3. Наличие структуры заранее – это хороший способ не создавать бардака в последующем. Например, имея одну папку в документации по проекту с названием "Техническая документация", класть затем счёт на первый уровень уже "не захочется", логично будет создать что-то вроде "Бухгалтерские документы".

4. Архивные данные тоже нуждаются в структурировании. Хоть это и не приятно, заниматься "бесполезной" работой по разбору того, что уже не актуально, это нужно делать. В противном случае эти данные просто "утонут" и когда они снова понадобятся (кто хоть раз делал готовые отчёты меня поймёт) приедятся тратить ещё больше времени. Часто архивные данные я структурирую менее детально, чем текущие, но это лучше, чем ничего.

5. Подход  к  структуре дело индивидуальное. Ассоциативная память штука крайне непростая. Деление, которое для одного удобно, совершенно не очевидно для другого. Тяжелее когда над данными необходимо работать совместно, но в нашей работе – это каждодневная необходимость. Тут сработает подход "Кому наиболее важно быстро находить информацию?". Например, проектная документация наиболее полезна для руководителя проекта, поэтому её структура должна быть такой, какая удобна ему. С бухгалтерскими документами всё может быть по-другому.

6. Не переусердствовать. Излишне глубокая структура тоже плохо. Я везде стараюсь не превышать без лишний необходимости 2-х уровней.

Почта


1. Держи inbox пустым. "Входящие" – это показания к действию, то что вам нужно делать. Всё остальное должно быть спрятано в архив, а лучше разложено по папкам.

2. Пользуйся автоматическими фильтрами. Совет коррелирует с п. 1. Чем больше автоматических фильтров отсеивают вашу почту, тем лучше. Меньше лишних для работы писем в inbox, меньше времени тратиться на ручное структурирование. Сейчас уже все распространённые программы/сервисы для работы с почтой это позволяют. У меня в рабочей почте на данный момент 21 фильтр.

Исходный код


С исходным кодом проектов чуть-чуть другая история. Но тут тоже работает правило  "Кому наиболее важно быстро находить информацию?" хотя и в немного перекошенном виде.

Нужно придерживаться одной идеологии в одинаковых сферах применения. Скажем, для веб-движка, должна быть одна структура хранения во всех проектах. И это должно относится не только к раскладыванию кода, но и к таким вещам, как, например, картинки и css.

Если используется фреймворк, часто он рекомендует или заставляет использовать определённую структуру. И её стоит придерживаться. Это сэкономит время на разъяснение структуры новым разработчикам, вместо этого их можно будет отправить читать соответствующий раздел документации. В фреймворках с принципом "соглашение ранее конфигурации", это ещё и экономит время на указание движку нестандартной структуры проекта.

Задачи


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

1. Собирать задачи в этапы. Этапы не имеют прямой связи с версией проекта. Иногда в одном этапе выпускается несколько версий, иногда версия длиться больше одного этапа. Это некоторое психологическое деление, которое удобно руководителю проекта. Все задачи в голове связываются с их этапом. Это позволяет затем проще в них ориентироваться ("а ... это было на этапе N, мы ещё тогда добавили классную фичу X и активно разрабатывали фичу Y, помню-помню"). Я больше помню развитие проекта в этапах, чем с привязкой к годам-месяцам. Иногда я начинаю этапы, по некоторым значимым событиям. Например, при переходе на GIT я сделал новый этап проекта.

2. Делить задачи по области влияния. В последнее время, я делю задачи именно так, а не по отношению к модулю или подсистеме. Грубо, это ответ "для чего это было сделано?", а не "где это было сделано?". Это удобнее для менеджеров проекта, потому что им не очень интересно, что вам пришлось внести изменение в класс X, куда более интересно им, что изменение было внесено для возможности Y.

3. Собирать задачи, включаемые в каждое обновление. В Ctool я для этого использую мета-задачи. В неё вставляю связи на все задачи которые в очередное обновление нужно включить, туда же добавляю информацию о том, какие ручные действия нужно выполнить при обновлении и какую информацию нужно сообщить менеджеру или заказчикам после обновления (например, написать, что готова фича X и её можно посмотреть там-то).

4. Писать задачу, даже если она не на 100% ясна. Если понятно, что задачу нужно будет делать, но пока не понятны детали, я заранее ставлю её в систему управления проектами и помечаю особым образом. Часто при этом у задачи есть только название, но нет ни описания, ни оценки, ни исполнителя. Такая задача служит напоминанием о том, что эти вопросы у кого-нибудь нужно уточнить.

5. Сначала общий план, потом конкретика. Это похоже на п. 4, но здесь задачи мне уже ясны. Но я вместо того, чтобы сразу бросаться описывать каждую задачу друг за другом, сначала ставлю их все с названием, оценкой, исполнителем, а уже затем расписываю. Таким образом я буду видеть общий план и необходимое время на реализацию какой-то многоэтапной фичи, а уже расписывать могу по мере выполнения задач.

6. Будущее тоже важно. Как я уже говорил, я веду этапы. Этап в Ctool – это мета-задача с кучей связных задач. При этом я всегда имею мета-задачу на следующий этап и часто даже на этап +2. А также имею спец. мета-задачу "Задачи на будущее" (т.н. backlog). Это позволяет мне проще отвечать на вопросы менеджеров или заказчиков "какие у вас среднесрочные/долгосрочные планы?". Я уже в общих чертах могу переставить, как будет двигаться проект.



Хаки

Быстрые пометки. Я использую хитрый хак, для пометок своих задач. Например все мета задачи я помечаю значком "⌘", не описанные до конца задачи - "~", бесконечные задачи - "∞" и т.д. Я стараюсь выбирать значки редко встречающиеся в названии задач (помогает таблица Unicode), чтобы потом по ним можно было строить удобные фильтры с поиском в названии задач.

Мета-задачи. Ещё один хак, которые я использую. Для каждой новой фичи я все связные задачи собираю в одну мета-задачу (с помощью связей к задачам в Ctool). В мета-задаче я могу быстро оценить готовность различных этапов, а также в комментариях вставлять важные замечания от заказчиков и менеджеров.

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

Comming soon


На этом я прервусь, чтобы затем вернуться со второй частью, где я планирую:
  • рассказать о конкретных инструментах/сервисах, которые я использую;
  • рассказать как я структурирую "умные мысли";
  • рассказать как я структурирую информационно-новостной поток;
  • привести некоторые полезные советы и вопросы самому себе, которые позволят оценить насколько хорошо продумана структура.

UPD: вместо двух частей будет целая серия заметок, смотрите соответствующий тег. Не переключайтесь!

пятница, 27 января 2012 г.

Выпуск 6. Короткий

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



Продуктивность




Программирование

понедельник, 17 октября 2011 г.

Выпуск 2 - работа в "потоке", язык Dart, видео лекции


Работа в режиме "Потока"

Цитирую:

Во время работы в одиночестве человек в идеале находится в состоянии, которое психологи называют потоком. Поток – это состояние глубокого, почти медитативного погружения в работу. В этом состоянии человек испытывает лёгкое чувство эйфории и не замечает течения времени: «Я начал работать. Когда оторвался, прошло уже три часа». Человек не прикладывает сознательных усилий, потому что работа, кажется, идёт потоком. Вы часто бывали в этом состоянии, поэтому нам не нужно его описывать.
Не все виды работы требуют состояния потока для достижения хорошей производительности, но для любого, кто связан с проектированием, дизайном, разработкой, письмом или подобными задачами, поток – необходимость. Это задачи, требующие сильного импульса. И только в потоке подобная работа продвигается хорошо.
К сожалению, поток нельзя «включать» по желанию. Требуется медленное погружение в предмет, не менее пятнадцати минут концентрации, прежде чем появится это состояние. В период погружения вы особенно чувствительны к шуму и остановкам. Шумная среда может затруднить или сделать невозможным вход в поток.
Из потока вас может легко вывести направленное непосредственно на вас воздействие (скажем, ваш телефон) или назойливый шум («Внимание! Сообщение для Пола Портулаки! Пол Портулака, позвоните по внутреннему номеру…»). После каждого такого вмешательства требуется дополнительное время для возврата в поток. И в это время работа стоит на месте.

Это одна из наиболее важных отложившихся в моей голове мыслей из замечательной книги "Человеческий фактор. Успешные проекты и команды" ("Peopleware") от не менее замечательных Тома Демарко и Тимоти Листера.

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

В инете книга есть в бесплатном  украденном виде:
http://flibusta.net/b/72962

Купить можно в Ozon или в любых других местах:
http://www.ozon.ru/context/detail/id/2338486/


Видео-лекции

Опубликовали видео-лекции с Yet Another Conference (проводит Яндекс, приглашают разных людей). Самое интересное оттуда лекции из 3-го зала про БЭМ в разных его проявлениях. Сам ещё не смотрел, но собираюсь. Вова смотрел в прямом эфире, ему понравилось, рекомендует.

http://yac2011.yandex.ru/

Есть и другие интерсные видео опубликованные за последнее время, ссылки тут:
http://habrahabr.ru/blogs/webdev/130137/



PHP Tips & Tricks

Если вы хотите разбить строку, где что-то написано через запятую или другой делитель, используйте:

$sites = preg_split('/[\s,]+/ums', $sitesString);

а не просто метод explode. Это позволит игнорировать пробелы.


Pomodoro - часть 2

Ещё несколько соображений по использованию pomodoro, а вернее его модификации (см. первый выпуск).

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

Я начала делать список задач на день вечером, теперь могу говорить наверняка, это удобно. Можно выиграть 20-30 минут утром, когда тихо и спокойно на важные задачи.


По офису

я описал мониторы:
http://wiki.rusoft.lan/doku.php?id=office:monitor:start

и обновил список вирт. машин (поднял обратно с WinXP + IE6):
http://wiki.rusoft.lan/doku.php?id=office:test-comp


Dart

Интересная разработка от Google - новый язык Dart. Один из претендентов (не первый и не последний, по правде говоря) на замену JavaScript в вебе. При этом позволяет исполнять код на серверной части в вирт. машине. Скорость обещают сравнимую с компилируемым кодом.

В браузере может исполняться и сейчас транслируясь в JavaScript (поддерживает современные браузеры), но так он работает медлено. Позже обещают внедрить также <script type="application/dart"></script>, но это пока не сделано даже в Chromium или Chrome. Внутри есть API по обращению к Dom дереву документа и окну, очень похожий на JavaScript'овский.

Язык с опциональной типизацией, что уже само по себе прикольно. Работа с "традиционными" классами более нативная, чем в JavaScript. Поддерживаются getter/setter. Есть возможность писать реальный (а не псевдо, как на JS) много поточный код, по методологии акторов, называется Isolate. Поток исполняется в своей отдельной области памяти, общение через отправку сообщений.

http://www.dartlang.org/



Совет

В вашем inbox в почтовой ящике должно быть только то, что ещё требует ответа или действия, всё остальное нужно расскладывать по папкам в архив.
Идеальный inbox - пустой inbox.


P.S.

Интересный комментарий от Тимофея на прошлый выпуск.

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

понедельник, 10 октября 2011 г.

Выпуск 1 - вступление, летнее время и помидорки




Всем привет.

Начну выпуск новостей по разным вопросам, которые интересны лично мне (это основной критерий :) ) и возможно будут интересны вам.

Общие темы примерно такие:

  •  управление временем (собственным и чужим)
  •  личное развитие
  •  новые интересные технологии и научные открытия
  •  бизнес-литература


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

Оставляйте комментарии (они пока открыты даже анонимам, но если будут спамить, закрою).
Также с удовольствием включу ваши заметки/новости в выпуск с указанием авторства, если они подходят под общую тематику.


Летнее время

Всем рекомендуется вспомнить, что в октябре этого года РФ не будет переводить часы с летнего времени и мы останемся жить в GTM+4. Если не обновить информацию об этом, операционные системы автоматически переведут время в последнее ВС октября.

В linux на Debian за это отвечает пакет tzdata, обновить данные так:
sudo apt-get update
sudo apt-get install tzdata

Обновлять всю систему не нужно. В Ubuntu исправленные пакеты доступны во всех версиях, начиная с 8.04 (в updates репозитории). Исправления по этому пакету безопасно выполнять в production, не останавливая сервер.


Продуктивность

Очевидная идея, которую я ранее для себя не формализовал:

"Какой смысл в продуктивности, если не остается времени на настоящую жизнь, на кино, книги, друзей, родных и близки, путешествия, прогулки и отдых?"

Продуктивность - это возможность работать меньше, а делать при этом больше!

"Помидорная техника"

Она же Pomodoro technique.
Вводная статья: http://tim.com.ua/2009/10/pomodoro-technique/

Попробовал на себе в каноническом виде, не понравилось, но несколько практик перенял.

Не понравилось, что при отрезках 25 мин на задачи, мои задачи часто прерывались, когда я только начинал входить в раж (это действительно особое состояние работы мозга, расскажу в след. выпуске). Если после этого ещё 5 минут отдохнуть, задачу надо было начинать, как с нуля.

Понравилось и что я перенял:
Я и так всегда составлял список дел и проектов, которые у меня есть (по GTD), но они были отсортированы только по 4-м приоритетам. Я приходил с утра, брал какую-нибудь задачу из списка, делал, возвращался к списку, заново его изучал, думал, что теперь лучше делать, брал следующую задачу и т.д.

Теперь я делаю так.

  1. Прихожу с утра смотрю на свои задачи и проекты (ежедневный пересмотр по GTD).
  2. Выбираю список задач на сегодня, сортирую так, чтобы в данном порядке их было выполнять интересно и приятно =)
  3. Распечатываю этот список.
  4. На распечатке записываю, сколько времени и сколько рабочих отрезков ушло на задачу. Если меня прервали в процессе ненадолго ставлю пометку.
  5.  Если в процессе появилась новая задача, добавляю её в список на бумажке.


Трачу на этот процесс 5-20 минут, не спешу с ним, подхожу основательно, добавляю в процессе в список задачи, про которые забыл.

Задачи не обязательно выбираю по приоритету.  Выбираю только то, что точно успею за день (если что-то в списке осталось - это плохо, лучше составить ещё список). Микширую задачи с разной спецификой, чтобы не уставать от однотонности.

При этом стараюсь уложить задачи, чтобы их выполнение можно было делать примерно одинаковыми "помидорками", но не ограничиваю отрезки по времени. Совсем маленькие задачи группирую в одну "помидорку", чтобы выполнить их разом, а уже  потом отдохнуть.
Большие задачи разбиваются на 2-3 помидорки, между которыми отдыхаю, этапы задачи делаю осмысленными, скаэем сделав какой-то логический этап, после которого его можно выбросить из головы и заняться дальнейшими этапами.


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

Возможно позже попробую перенести пересмотр задач на вечер, чтобы с утра на свежую голову и сразу в бой! (... но это противоречит моим привычкам и GTD, так что пока не пробывал).

Совет

Всегда записывайте в отдельный список, кто и чего вам должен написать, предоставить, сделать. Добавляйте данные о том от кого вы это ждёте и когда начали ждать.