четверг, 3 октября 2013 г.

GTD'шное.

Сразу скажу: не фанат, и склонять на сторону добра не буду. Хотя, безусловно, здравое зерно в подходе есть, и если выбирать между полным Хаосом и GTD, стоит таки обратить внимание.

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

Обычный день рядового быдлокодера состоит из двух важных занятий: побыдлокодить и поговорить. Есть еще обед, но про обед напоминалки ставить нужно только в особо запущенных случаях. Причем, в отличии от буржуйских быдлокодеров, у которых каждодневное "поговорить" - это daily stand-up, происходящий утром, у наших отечественных,  этот daily stand-up может быть в достаточно рэндомное время суток, в зависимости от того когда у тех же буржуев то же утро наступает :) Например, stand-up вполне может быть где-то в районе трех часов дня, разрезая день на две части. И тогда задачи пытаешься подгонять так, чтобы что-то успеть закончить "до", и что-то начать "после", потому как даже 15-минутный "митинг" - это примерно 40 минут перерыва в работе, во время которого все-равно забудешь чего там как.  Конечно, если особо не везет, то daily stand-up'ом дело не ограничится, "митингов и петтингов" может быть великое множество, зависит от того насколько скучно вашему начальству :) - и в таком случае день получается поделенным еще на большее количество отрезков, в которые можно работу поработать.

И получается так, что вот такая вот вполне конкретная реальность рвет нафиг и в клочья весь софт со списками задач. Может быть дофига подходов с огромным количеством возможных костылей, но по-сути ни одного консистентного я не видел. Things - не исключение, а просто продвинутое и дорогое подтверждение правила. Допустим, у меня есть пул задач, допустим я выбрал из него три, которые хочу сделать сегодня, и допустим я таки в состоянии их сделать. Но "страничка", на которой будут нарисованы просто три задачи не представляет весь мой день,  рядом должен быть еще календарь с отмеченными митингами. И тут проблема: календарь нифига не знает про TODO: в него невозможно впихнуть задачу, без привязки ко времени, а списку задач пофигу на время, и если в него даже всунуть митинг - ничего полезного из этого не выйдет - это не просто "то что надо сделать", это "то что надо сделать именно в это время, или не делать вовсе". То есть вроде бы как планъ иметь можно, но только на двух разных кусках бумаги, в каждый из которых заворачивали свою особенную рыбу. Я не понимаю почему то что мне надо делать вообще, то что я хочу делать сегодня, то что я хочу делать следующим мне видеть положенно, и это мне помогает, а то что мне надо делать в два часа по полудни - иди нафиг в другое приложение.

Но даже если смириться с параллельным существованием календаря, проблема со временем все-равно не исчезает совсем. Допустим у нас есть те же таски, таски классифицируются и по проектам, и по тэгам. Таски делаются. Я радостно помечаю таск как сделанный и перехожу к следующему. Мастера GTD торжествуют, а я недоумеваю: почему программа, которая управляет тасками, не может мне выдать отчет: "за эту неделю, на "проект А" ты потратил 30 часов, а 10 тасков с тэгом #писец заняли еще 15". Обезьянке положенно отправлять сделанный таск в корзину и брать с полки банан, но не положенно анализировать результаты и продуктивность? Или разработчики этих приложений здают отчеты акционерам в виде скриншшотов из собственных версий программы, и не хотят палиться, когда вместо того чтобы пилить функционал, рубились в кваку?

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

В общем вроде и подход неплохой, и софт есть, но какое-то оно однобокое, и нацеленное куда-то в другую сторону. На Опенсорц надежды мало - Опенсорцу эта тема походу не интересна от слова "совсем",  в Опенцорце нынче принято мериться Х-серверами и реализациями init-демонов, тут не до 'productivity' быдлокодеров.

вторник, 10 сентября 2013 г.

Пара слов о наболевшем...

Пишу не так часто, как хотелось бы, поэтому сразу про несколько вещей :)

Не так давно вышел vim 7.4, в принципе без революций, изменения скорее "под капотом", хотя, возможно, кто-то найдет что-то для себя интересное. Новость на самом деле хорошая - редактор отличный, живет, развивается, ни его в systemd, ни в него systemd никто не тащит. Все было бы хорошо, если бы не одно "но", относящееся, скорее даже не к vim, а к *nix-образным вообще. Как ни странно "но" примыкает к контексту философской дискуссии "апстрим" vs. "все остальные" - за кем правда.

Дело собственно в чем: так исторически сложилось, что я активно использую старый добрый bash и иже с ним, для повседневных, в основном рабочих, задач. И когда выходят новые версии bash'a, CLI-утилит, или того же vim'а посещает странный набор чувств: сначала радуешься "ухты, сколько всего нового можно будет делать", а потом понимаешь: в своей системе ты это увидишь еще не скоро, а перед тем как можно будет использовать новые фичи пройдут годы.

Даже, если "своя система" - это какой-нить веселый Arch'ик, в который обновления весело и беззаботно могут прийти уже на следующий день:  ок, поиграться в песочнице и разжечь аппетит получится, но привыкать к новому не стоит - нигде его еще нет.  Собирать пакеты для других систем - так себе вариант, особенно если собирать пакеты нужно для зоопарка, и вообще не вариант, если зоопарк не твой, да и работа вообще не в администрировании заключается. Плюс к тому сборка пакетов автоматически означает переведение системы, в упрощенное пакетным менеджером, но все же ручное управление. Можно еще что-то собрать у себя в $HOME - тоже удовольствие ниже среднего. В общем получается апстрим разродился новинками, а ты можешь только пооблизываться. Поэтому, в пользовательском контексте, вопрос апстрим vs. "все остальные" вообще не стоит: мы жрём что "все остальные" нам дадут.

Между делом такое положение вещей еще и добавляет лишний сантиметр в "порог вхождения" новых разработчиков в разработку открыто-свободного софта. Традиционная, до боли знакомая по описаниям схема выглядит просто: пользуюсь системой, что-то нервирует/мешает/хочется немного по-другому, беру редактор с компилятором в зубы - и давай дорабатывать, потом отдаю сообществу плоды своего творчества. Чего дорабатывать: версию X.XX.XX/1.build123 из дистрибутива, или X.XY из апстрима? Дистрибутивная ближе к телу, она то вообще и раздражала, и для нее более-менее понятно как можно потом собрать себе пакет, но изменения в нее никому нафиг не надо. Апстримовую? - Там может оказаться совсем другое и с другими глюками и  порожденными хотелками, да и тогда, по-хорошему, нужно опять вспоминать как в этом проклятом дистрибутиве пакеты билдят, не хорошо же в /usr/local все складывать, если верить надписям на заборах в интернетах.

Хаотичность и беспорядочность открытого мира, как она есть.

Ну и раз vim'ом начали, vim'ом и закончим. Не смотря на то что vim, чисто в *nix-традициях, умеет делать одну вещь, но умеет делать ее хорошо, - это вообще достаточно большая и сурьезная махина. Просто с наскоку не разберешься и не настроишь, это скорее процесс: сначала учишься как из него выходить, потом узнаешь как добиться того чтобы он бибикал поменьше и не портил все подряд, а потом можно уже и итеративно что-то настраивать-подстраивать, да при случае запоминать новые комбинации клавиш, пополняя книгу рецептов свежими заклинаниями. Парочка заклинаний, которые мне кажутся полезными(не из самой новой версии, но версия поновее чем 7.0 для некоторых все же требуется):

1. AutoComplPop - не то чтобы сверхполезная штука, но достаточно интересная. По-сути: самовсплывающий попап с автодополнением, как в Visual Studio и прочих "взрослых" IDE,  то есть не требует нажатия дополнительных клавиш типа Ctrl + N, итп. Для некоторых языков использует omni completion.  Обещают возможность скрестить с популярным нынче snipMate и с perl-completion.

2. Иногда раздражают путающиеся под ногами vim'овские swp-файлы и иже с ними. Не то чтобы они совсем не нужны - очевидная польза от них бывает, но когда они валяются там же, рядом с нормальными файлами - бывает неудобно.  Никак не доходили руки посмотреть как их закинуть подальше, делается это на самом деле просто:

:set backupdir=~/.vim/backup.dir
:set directory=~/.vim/backup.dir

3. При редактировании кода, часто хочется чтобы история для команды 'undo' сохранялась и при выходе из редактора. Отредактировали файл, закрыли, вернулись, и все еще можно продолжать работу с undo, как будто никуда и не уходили. В vim 7.3, как оказывается, такая возможность появилась, включается она достаточно просто, директория нужна для хранения файлов с историей редактирования:

:set undofile
:set undodir=~/.vim/undo.dir

суббота, 17 августа 2013 г.

Имею скафандр - готов путешествовать.

Как известно, для того чтобы путешествовать по Галактике, нужно не так уж и много - полотенца хватит, а если, случится так, что в полотенце будет завернут  небезызвестный Путеводитель, - то вообще  шикарно.  Если же ограничиться планетой Земля, то все окажется несколько более сложным, особенно ежели вы IT'шник, и при этом необходимо оставаться в строю.  Вот, например инструкция по подготовке своего скарба к отъезду. Достаточно типичная, надежная, с ней можно идти в банк.  Но, как известно, TMTOWTDI :)

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

Если среди ночи, три амбала с пулеметами вытащат ортодоксального линуксоида с постели, увезут в лес, вручат ультрабук с Windows 8 и 3G-свистком и заставят настраивать Apache в далекой заокеанской губернии - это будет то еще развлечение. Лес и пулеметы сами по себе причиняют некоторый дискомфорт,  а тут еще и Windows 8 в придачу, которая аки vim в руках неофита - бибикает и в лучшем случае ничего полезного не делает. Есть, конечно, состояния психики и варианты перехода между разными рабочими окружениями, когда сохранять работоспособность на должном уровне не составляет особого труда, но это отдельная история.

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

Итак, идем  в магазин, покупаем ноутбук, разумные требования: батарейка держит подольше, диск - как придется, хотя лучше SSD, вес хорошо бы поменьше, а то таскаться с большой бандурой несколько неудобно. Если останется бабло - можно еще прикупить планшет, а если бабла в магазин взяли совсем много  - еще и смартфон. Пока бродим по магазину, вдалбливаем себе мантру: "на ноутбуке я буду работать, на планшете смотреть мультики, а смартом отстреливаться от пришельцев, не так удобно как дома, но хотя бы что-то". Последняя часть мантры должна стать первым звоночком, но звоночки - это очень красивые звуки, а колокольный звон - ваще божественен, этим нужно наслаждаться, и думать о вечном, а не о мирской повседневной глупости.

Вопщем девайс(ы) куплен(ы). Идем домой. Дома на десктопе стоит уютная "убунточка" или "семёрочка", но это как-то не интересно. Всегда хотелось попробовать Gentoo, или вот тут в рунетах рекламируют ROSA - буду еще мимоходом нести свет местного софтостроения в далекие заморские губернии. Короче устанавливаем "шо-нить-другое", выглядит вроде красиво, какие-то программки есть, с мыслью "потом разберусь", откладываем ноутбук в сторону, и садимся за привычный десктоп работу работать.  Пулемет заряжен, амбалы готовы к выезду, Windows 8 ждет  IT-шного великомученика под столетней березой.

Как быть и что делать? Перемещение в другие города и веси - ситуация сама по себе стрессовая, и сопряжена с большим количеством ожидаемых проблем.  И история здесь такая: в случайный момент времени, в случайном месте, необходимо иметь возможность, с помощью подручных средств, решить ... случайную стандартную проблему. Открыл ноутбук, словил WiFi, сделал дело, пошел кататься на паровозиках.  Так же как если бы это происходило в офисе, ну только без паровозиков. Для этого система должна быть рабочей, работающей и "обжитой", а не подготовленной за три часа до отъезда, по списку, с надеждой "вроде ничего не забыл" - скорее всего забыл, и по известному закону оно то таки и понадобится. При этом речь идет не о каких-то штуках типа "если все накроется медным тазом, - загружусь с флешки", а о банальных вещах.  Например, софт которым пользуешься лишь время от времени, легко может не попасть в список того что нужно установить, и конечно же понадобится в самый неподходящий момент, когда сидишь на публичном WiFi и каждый скачанный мегабайт дается с большим трудом.  Нет, конечно, если система имеет привычку накрываться каждые три дня, то чудо-флешка так же важна как воздух, в любом другом случае, стоит скорее задуматься о сохранении/воссоздании стандартной рабочей обстановки.

Идеальный вариант - это когда то на чем работаешь каждый день, легко помещается в рюкзак и летит с тобой в тридевятое царство, стопицотое государство. Менее идеальный - когда это работающий бэкап, которым пользуются время от времени. Фиговый, но лучше так, чем windows под березой - что-то специально купленное, с воссозданным стандартным рабочим окружением. Суть проста: внешние факторы будут меняться и они меняются, при этом, хорошо бы иметь что-то стабильное, в чем более-менее уверен.  Менять привычки или же специально собирать окружение под дальнюю дорогу не стоит, будет себе же дороже.

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

Ну и на последок немного про себя любимого. Содержимое "походного" рюкзака от обычного отличается наличием фотоаппарата. В целом все просто:
* MacBook Pro, по нынешним меркам уже достаточно старый - 2010-го года выпуска. Сейчас в нем несколько больше памяти и SSD-диск. Соответственно OS X 10.8. Плюс два блока питания - один короткий, один длинный. Работает от батареи где-то в районе 3-5 часов, зависит от того чем заниматься.
* iPhone 3GS, все еще со старой iOS 5.1.1, cо старыми гугловыми картами.  Старый, потрепанный, с треснувшим корпусом и отлетевшей кнопкой регулировки звука, но все еще, как ни странно, работающий :)
* мягко говоря древняя цифрозеркалка - Nikon D40, с прикрученным 35 мм. фиксом.
* собственно всё :)

Как это все готовилось к поездке? - да никак не готовилось. Закрыл крышку, запихнул в рюкзак и поехал. Приехал на место, открыл крышку, продолжил с того момента где остановился. Единственная проблема - я не смотрю на маке видео, поэтому никакого видео там не оказалось, пришлось довольствоваться ютубом.  Конечно проклятая проприетарщина, конечно анальное рабство, ну и конечно все отлично работает, в самых разных ситуациях. В качестве приятного бонуса - в случае отсутствия WiFi, но присутствия 3G, iPhone вполне способен устроить свой WiFi с блэкджеком и всем причитающимся, правда, батарейку садит сильно.

суббота, 27 июля 2013 г.

Еще про настройку пользовательского окружения.

На страницах FOSSBlog появилась достаточно интересная  заметка Сергея Голубева о том на кого должны быть ориентированы настройки по-умолчанию вообще, и в свободных операционных системах в частности.  Я много писал о рабочем окружении на страницах этого блога, поэтому позволю вставить свои пять копеек: просто несколько раздувшийся по размерам комментарий.

Классификация пользователей:
При определении конфигурации по умолчанию разработчик может ориентироваться на:
  • пользователей, которых больше остальных (группа А);
  • пользователей, которые выгодней остальных (группа Б);
  • пользователей, которым по каким-либо причинам затруднительно изменить настройки по умолчанию (группа В);
  • пользователей, которым проще всего выбрать другую систему, если эта им не понравилась с первого взгляда (группа Г).
и дальнейшее обсуждение каждой из групп, в принципе-то своем, строится из тех же кирпичей, из которых не так давно строились "священные войны" Linux vs. Windows vs. OS X, а теперь Android vs. iOS.  Если кратко, то дело все в противостоянии "пользователь" vs. "настройка": будет настраивать/не будет, желает настраивать/не желает, будет это делать сам или даст кому-то денег и так далее и тому подобное.  В спорах на таком фундаменте можно уехать достаточно далеко, вопрос подготовки участников спора. Реальность решительно проще:

Пользователи не настраивают рабочее окружение. Совсем. Никогда.


Это на самом деле важный момент, поэтому на нем нужно остановится.

"Если пользователь не настраивает рабочее окружение, то", - спросите вы, - "что же я делаю, когда меняю скучные обои, переношу иконки на панель быстрого запуска, или вписываю переменные в .bashrc? Может я не пользователь? Может быть меня не существует?"

Таки пользователь, и таки существуете. Но это не полноценная полновесная настройка - это, чаще всего подстройка уже готового, под свои собственные нужды.  Во-первых, стоит вспомнить, например, о том, что нам всем сложно переезжать из одного рабочего окружения в другое. Даже, если это одна и та же операционная система, только с нуля установленная. Причем сложно это и для суперпродвинутых пользователей, у которых каждая кнопочка на десктопе была собственноручно написана, и для тех у кого "интернет" - это "Internet Explorer",  и он, собака, в новой ОСи немного поменял значок и внешний вид.  Совсем не зря линуксоиды славят текстовые конфиги, а маководы TimeMachine: и то и другое позволяет быстро и достаточно точно восстановить "все как было", и сохранить кучу нервов(хотя какой-то дискомфорт первое время может все-равно проскакивать :) ).

Создается ли окружение, которое нам потом будет жаль терять, одномоментно? - Нет. Мы не устанавливаем <любимую операционную систему>, не вбиваем все настройки за два часа, для того чтобы потом забыть о них на год-два-три-пять. Это, на самом деле, не хронология создания, то есть настройки, а хронология восстановления.  Создается же это дело день за днем, годами. Например, что-то долго мешает нам жить, или наоборот, ощущается острая нехватка чего-то, что жить очень поможет: в какой-то момент: случайно или специально, проблема решается, и потом решение или остается работать на долго, или, ввиду, например, неудобства, забывается и остается висеть мертвым грузом. До следующего мини- или микро- вмешательства. То есть глобальная "настройка" - на самом деле - растянутый во времени процесс, который суть череда мелких подстроек, тесно сопряженная с изучением, исследованиями и открытиями.

Поэтому, например, курсы компьютерной грамоты, даже, при достаточной степени прилежности учеников, дают не очень большой эффект. Когда тебе на голову вываливают огромное количество всего на свете, "к рукам прилипает" совсем мизер.  Хорошо если расскажут как получить недостающие знания. Если не расскажут, а просто вслух и с  интонацией зачитают 10 способов создания файлов из "Секретов Windows",  то деньги и время просто вылетят в трубу. По той же причине, например, пишущие на perl'е боготворят Camel Book: в книге явно акцентируется внимание сначала на небольшом subset'е языка, знания которого необходимо и достаточно для того чтобы писать что-то полезное, и понимать очень многое написанное другими, а потом еще много-много страниц раскрываются вопросы черной  и белой магии. В итоге процесс "познания" происходит в типичном unix'овом ключе: "когда приходит время".

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

Например, Windows и Ubuntu для меня хоть как-то работают "из коробки", и там и там есть свои недостатки, поэтому могу считать что их стартовые позиции примерно равны. При этом в Ubuntu до "зоны комфорта" мне ближе, и я могу двигаться туда более размеренным темпом, поэтому при прочих равных из этих двух я выберу Ubuntu. Хотя если в гонку добавить еще несколько вариантов,  то, пожалуй, выбор будет другим.

С точки зрения пользователя важны:
1. стартовые позиции, зона в которой можно начинать делать что-то полезное.
2. расстояние от старта, до того момента, когда все устраивает.
3. возможность это расстояние пройти в принципе.

Итак: пользователи не настраивают систему: пользователи подстраивают систему время от времени, до достижения уровня комфорта, и предпочтут систему в которой изначально чувствуют себя лучше. Что делать производителям софта в связи с этим? - Ответ на поверхности: если пользователи не настраивают систему, нужно делать систему которую не нужно настраивать. Можно, но не нужно. Android стал весомым конкурентом iOS не тогда когда в нем появилось больше кнопочек, - в нем изначально этих кнопочек было больше. Android стал весомым конкурентом iOS, когда эти кнопочки выставили в правильное положение. Ubuntu пошла вверх, в тот же самый момент: когда "это в принципе возможно" сменилось на "это возможно из коробки".

И нет никакой разницы между А-Б-В в приведенной выше классификации: "домашним" пользователям интересней фейсбук и сериалы, корпоративным - их собственная работа и пасьянс, а те кто не может настроить по другим причинам - и так настраивать не собирались. Они все ломанутся в группу Г, где можно выбрать изначально более разумную систему, да и всё. Все просто: непривлекательная система с дурацкими умолчаниями и большим потенциалом так и останется у всех в памяти "нераскрывшимся цветком".  Если дать пользователю полуфабрикат, пользователь удивится и пройдет мимо.

"Но полуфабрикаты существуют, значить это кому-то нужно!" - да, полуфабрикаты существуют, они нужны: разработчикам, админам, желающим учится и просто для fun'а.  Те же Arch, Gentoo и всякие BSD не лезут в категорию систем для пользователей, а занимают свою вполне понятную нишу. Проблемы начинаются, когда оказывается что системой должен пользоваться кто-то окромя тех кто в теме и им "по приколу".

Ну и напоследок: настройка системы пользователем - это не только процесс, который может оказаться сложным в техническом плане, например, в силу необходимости наличия присутствия каких-то вуду-знаний. Настройка, особенно единомоментная, означает как минимум то, что настраивающий четко представляет что именно ему нужно.  В случае с рабочим окружением это значить "наблюдаю за собой - вижу проблему - проблему решаю".  Пользователи редко наблюдают за собой, и тем более редко идут дальше.  Даже среди IT-шников: разработчиков, админов, очень многие "сидят" в абсолютно дефолтной винде  или убунте.  Поэтому самостоятельные оригинальные настройки - большая редкость, еще большая редкость - это умение донести подобные идеи до других. Хотя как раз импортировать чужие идеи мы умеем гораздо лучше, но это уже другая история.