Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

пятница, 30 декабря 2011 г.

Java for fun: Утиная типизация в Java

На написание этого поста меня вдохновила статья "Утиная типизация в Java" (автор Yaroslav Pogrebnyak).
Но с первым абзацем мне стала ясна суть идеи и я решил не дочитывать до конца, а попробовать самому решить эту задачу. После последнего коммита, я прочитал всю статью и отметил те моменты, которые были для меня новыми.
Внимание! Дальше будет много кода, если интересно - кликни меня...

Мотивация: Как обрести видение? или Следуй за своими музами


Если есть видение, то никогда не возникнет вопроса "такс, а что бы мне еще поделать такого-сякого?" Видение - это картинка в голове, которая манит к себе. Новые таски рождаются из разницы между видением и настоящей действительностью.


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

Если в ходе обдумывания или через некоторое время после случилось озарение (любого рода волнение, связанное с предметом обдумывания сопровождающаяся мыслью "блин, я знаю!" и желанием все бросить и пойти записать идею), поздравляю.

Дальше стоит только идти по новым рельсам сравнивая каждый таск с видением: Помогает ли текущий таск сократить дистанцию между видением и дествительностью? Нет? Драйвит ли меня выполнение текущего таска? Снова нет? Почему я его собрался делать?

Ответ на первый вопрос "нет" а на второй "да" - намек на то, что видение не полное, а значит его стоит слегка пересмотреть, чтобы включало.

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

Если пойдешь за музами, то вскоре получишь все. И деньги и успех...

Работа может приносить удовольствие, если работа - это твое хобби. Работай на себя, совершенствуйся, а все остальное не заставит себя долго ждать.

Хороший вопрос на каждый день - "Что меня вдохновляет?" Этим и занимайся каждый день. Вначале по 10 минут ежедневно. Потом по пол часа. Потом по часу, потом по два...

Не заметишь, как вскоре окажешься в другом месте, где будешь заниматься своим хобби, получая от этого массу удовольствия.

А за деньги не волнуйся, и запомни простое правило $ = t☺²

P.S. Чуть позже от Друга получил на руки новый термин - "прокрастинация". Если то, что написано в статье про тебя - значит пора задуматься о том, а там ли я сейчас работаю? С теми ли людьми? Тем ли занимаюсь?

Time mamagement: Планируй свой сон

Общались с другом на тему: "что надо сделать, чтобы появилось время на реализацию задумок, которые откладывал". Ответ был - выспаться. И тут сразу у меня возник вопрос, а когда у меня получается самый классный сон? Контент сразу полился из глубин сознания (спасибо фрирайтингу)...


...лучший сон, когда я ложусь в 22:00 и просыпаюсь сам с чувством "все, выспался!" - супер. Я не должен кушать перед сном, лучше если я лягу спать слегка голодным. Можно выпить стакан сока или съесть яблочко. Еще лучше, если будет вечерняя прогулочка, еще лучше на велосипеде а потом душ - это сразу перед сном. Никаких раздражителей не должно мешать в комнате, а форточка должна быть открытая всю ночь (свежий воздух). Я должен знать, что на сегодня я все таски сделал на работе, а завтра у меня расслабленный день, в который я могу работать, или не работать (скорее всего чуть-чуть работать). У меня нет никаких планов на завтра с семьей - типа куда-то пойти, что-то сделать - требующих физического перемещения моего тела в пространстве-времени (особенно, если это "надо" а не "хочется"). Я знаю, что могу до обеда валяться в кровати (но я высплюсь, скорее, к 6 часам утра и с этого времени буду на ногах). Никто не позвонит в первой половине дня. Никто не позвонит в двери (доставка воды, доставка книг или чего-то там еще). Я в этом уверен тогда, когда ложусь спать вечером. Утром дома скорее всего будет спокойно (не шумно), потому как все будут отсыпаться :) Еще хорошо, если днем ранее я сдам какой-то проект. Вот тогда я высыпаюсь лучше всего и день после такого сна наиболее творческий и насыщенный...

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

Какой твой идеальный сон?

среда, 28 декабря 2011 г.

Публикуемся: Как разукрасить презентацию или пост в блоге

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

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

И первое тут - найти ключевые слова в тексте, что не очень сложно, т.к. вокруг них как раз и строится абзац. Второе загуглить картинки по этим ключевым словам. Как я делаю?Допустим ключевые слова в последних двух абзацах - "ключевое слово" и "загуглить картинку". Согласен? Этих 2 словосочетания можно оставить в посте вместо всего того, что я написал - и по смыслу пост не сильно будет уступать. Ну разве не понятно, если пост был бы таким?

Как разукрасить презентацию или пост в блоге:
- ключевое слово
- загуглить картинку

Возможно не хватает еще одного ключевого слова:

 

Как разукрасить презентацию или пост в блоге:
- ключевое слово
-ассоциация
- загуглить картинку



Все! Первая часть поста закончена. Все остальное - вода.

Итак ключевые слова у нас "ключевое слово", "ассоциация", "загуглить картинку". Их и будем гуглить в разделе гугла - картинки.


После нажатия поиск, первое, что бросается в глаза и уже готово к употреблению  - это две картинки...


Далее я выбираю более красноречивую.

Идем дальше и гуглим слово "ассоциация"...

Бывает такое, что картинки сразу нет. Так у меня случилось со словом "ассоциация". Тут можно сделать две вещи: 1) полистать по страничкам дальше (обычно я листаю до 5 не дальше). 2) загуглить синонимы или близкие по смыслу к ключевым слова. Например не "ассоциация", а "связь".

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


 Например "ассоциация" я заменил на "запоминание" и получит вот что


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

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


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


Я могу ошибаться, но кажется эту фотку скопировали все кому не лень. Естественно, если я ошибаюсь, то рискую, а потому лучший и верный способ - бесплатные стоки с соблюдением требований, указанных на страничке с фоткой (часто там же есть поле до копирования HTML кода для вставки на сайт).

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



Еще один ресурс,позволяющий найти места, где используется фотка - http://www.tineye.com/. Кстати так можно посмотреть не только, как часто используется фотка, а еще и кто стянул твою фотку.  

вторник, 20 декабря 2011 г.

Time management: Как сделать так, чтобы тебя не отвлекали?

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

2 раза * 10 минут * 22 дня * 11 месяцев / 60 минут в часу = 80 часов / 8 рабочих часов в дне  = 10 рабочих дней. 

Если а если ты прерываешься 10 раз (что, думаю, намного реальнее в наше время). Это уже больше 2х рабочих месяцев году.


При зарплате в 500$ в месяц. Значит в год из ежедневных прерываний (по 10 раз) ты теряешь 1000$. Можно в следующий раз своему коллеге сразу сказать "эй чувак, твой этот вопрос мне стоит 1000$ в год!".

Но если копнуть глубже, то работы мы стремимся все же сделать столько сколько запланировали. А значит овертаймим. А значит не ты теряешь 1000$ а твой ребенок не видит папку этих самых 50 часов в году. Если посчитать что на общение с семьей у тебя 8 часов, то твоя семья недополучает внимания на тех же два месяца. Два месяца в году семья не видит своего кормильца из за банальных десяти: "...эй, а ты не знаешь случайно че там..." Тут уже в морду бить хочется.


Но погодь. Рано. Посчитай теперь сколько ты раз в день становишься интераптером для другого?  А если всех вместе собрать? Мысль только одна: Саня, себя бить надо! Сам виноват!

И что делать? Меняться.

Во-первых, себя дисциплинировать не интераптать окружающих людей ни под каким предлогом. Главный предлог, по которому можно кого-то интераптнуть - это пожар. Я конечно утрирую, но так надо! Если ты вдруг откажешься от этого инструмента то начнешь думать "а что жеж делать?".

Выход есть:

1) Ты мажешь потратить больше времени и прокачавшись самостоятельно научиться добывать информацию.

2) Ты можешь завести 10 TODO списков на 10 человек (которых ты чаще всего интераптаешь) и отложить эти вопросы до тех пор, пока у вас не наметится 1-to-1 митинг. Либо, до тех пор, пока не подвернется удобный (для коллеги) момент - он к тебе сам может обратиться.

3) Ты можешь подумать и понять, что на самом деле тебе вовсе не хотелось решить что-то важное, а хотелось всего лишь поболтать с кем-то или чтобы тебя похвалили, или чтобы подбодрили. Тут другой инструмент нужен. Если тебе не хватает внимания и общения - перестань интераптать и уходи домой раньше :) - там тебя послушают и похвалят. 

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

Выход есть. Отучивай. Так же как и приучил. Постепенно. Для начала очень хорошо работает правило "не отвечать на вопрос 15 минут" - этого времени вполне достаточно для того, чтобы мозг интераптора самостоятельно нашел ответ на только что написанный вопрос в скайпе. Все просто. Если напишешь вопрос в письменном виде или проговоришь его, то надо просто подождать до 15 минут, как появится ответ. Это время надо дать интераптору. Много больше пользы будет, если он поймет, что сам в состоянии решить 99% своих проблем.

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

 
Очень сложно это реализовать. У нас прочно внутри сидит привычка. Помагает но не сильно перевод скайпа в режим "не беспокоить". Это вовсе не значит что я "ой как занят" целый день. Занят так же как и все. Просто я пытаюсь сделать работу эффективнее, чем это делал раньше.

Но красный скайп (или закрытие почтового ящика, странички фейсбука, твиттера, перевод телефона в тихий (не вибро!) режим) - это игнорирование проблемы. Проблема в том, что ты ХОЧЕШЬ ответить, потому что там может быть что-то более интересное, чем то, сейчас ты делаешь. Или ты просто устал и хочешь переключиться, отдохнуть. Это поять же надо решать другими способами.

Лечение - поменяй статус на зеленый. Пусть виднеется в трее, а еще лучше на taskbar'е. Но не отрывай мессенджер так долго как сможешь. Продолжай работать и видя вот это мучительное желтое пятнышко на синем фоне.


Пусть мозолит тебе глаза. Запусти таймер и ставь рекорды. За новый рекорд - плюшка - прочти все что собралось :) Потом снова рекорд. Очень скоро ты перестанешь реагировать на "вам пришло новое сообщение".


Что дальше? Дальше жестче. Говорим нет всем, кто к нам приходит. Как правило первый вопрос, который тебе задают - "Саня, ты не сильно занят?" Ответ должен быть "Сильно". С последующим, "К тебе через 15 минут подойду, как закончу, прости".



Что есть "я сильно занят?" - это когда находишься в состоянии потока и у тебя идет сверхпродуктивность. И тут надо "Ппппррррррр, Ракель" и переключаться на другое, потом снова разгоняться. Это более чем повод сказать, прости я занят сейчас.

Но! Очень важно прийти через 15 минут и дать ответ на вопрос, как обещал. Иначе это уже неприлично.

Все! Закончил. В ходе написания статьи одному коллеге пришлось сказать "Нет", потратить 53 минуты времени (знаю потому, что веду хронометраж). Сейчас пойду со спокойной душей помогу коллеге с его вопросом.

вторник, 13 декабря 2011 г.

How to: Как выкачать SVN репозиторий с history через http?

Если нет доступа к серверу, а есть только url на Svn репозиторий и очень надо получить у себя на локали репозиторий со всей историей коммитов, то поможет git :)

Как его установить - вопрос сюда. Под windows довольно тривиальная установка. Я себе поставил


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

Открываем Git Bash (в меню Пуск можно найти :))


И в консоли набираем

git svn clone http://host/blablabla/blabla --no-metadata

где  http://host/blablabla/blabla путь к репозиторию.

Далее мы увидим, как ревизия за ревизией все подтянется на наш локальный репозиторий в GIT


Быть может тебя спросят пароль - это самое худшее, что со мной случилось...

Далее у тебя на виртуальном диске, который создал GIT появится новая папка, а в ней проект и папочка .git, содержащая сам репозиторий. Контекстное меню откроет возможность работать с новоиспеченным локальным git-репозиторием


В принципе уже сейчас можно остановиться :) Но если хочется получить SVN репозиторий, тогда стоит потрудиться еще немного...

Может случиться так, что ты получишь сообщение об ошибке в процессе миграции.
Couldn't open a repository: Unable to open an ra_local session to URL: 
Unable to open repository 'file:///D:/BlaBLaBLa': Expected FS format '2'; 
found format '4' at C:\Program Files (x86)\Git/libexec/git-core\git-svn line 2139
Лечится. Устанавливаем VisualSVN, копируем в его папку repositories (при установке указывается путь) исходный svn репозиторий. А потом выполняем команду (где host - то, что предложит VisualSVN, а SourceRepo - имя исходного репозитория)
git svn clone https://host:8443/svn/SourceRepo/ --no-metadata
Быть может если и это не поможет - стоит обратиться к другому SVN серверу или же установить друугую версию git клиента. В общем, пошаманить с версиями прийдется...

Случается со временем даже так, что VisualSVN и другие svn сервера не устанавливаются (я перешел на Windows8 чтоб её). Тогда приходится выкручиться с помощью временного репозитория на google code.

Допустим репозиторий находится в папке file:///D:/BlaBLaBLa
Создадим проект bla-bla-temp на http://code.google.com
После откроем cmd и введем такие команды
D:\>svnsync init --allow-non-empty --username user@gmail.com https://bla-bla-temp.googlecode.com/svn file:///D:/BlaBLaBLa
svnsync: warning: W200007: Target server does not support atomic revision proper
ty edits; consider upgrading it to 1.7 or using an external locking program
Authentication realm:  Google Code
Subversion Repository
Password for 'user@gmail.com': ********************
Copied properties for revision 1.

D:\>svnsync sync --username user@gmail.com https://bla-bla-temp.googlecode.com/svn
svnsync: warning: W200007: Target server does not support atomic revision proper
ty edits; consider upgrading it to 1.7 or using an external locking program
Committed revision 2.
Copied properties for revision 2.
Committed revision 3.
Copied properties for revision 3.
Committed revision 4.
...
Ну а потом уже git svn clone http://bla-bla-temp.googlecode.com
И естественно удалить временный репозиторий, чтобы не захламлять интернет :)

Кстати, если интересует, как включить только часть истории исходного svn репозитория в новый git репозиторий - читаем тут.

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

Time management: Как проводить хронометраж? Что мне дает хронометраж?

Хронометраж - инструмент, который я впервые опробовал после прочтения книги Глеба Архангельского "Таймдрайв". Торкнуло так, что теперь постоянно веду его.


Хронометраж (в моей версии) состоит из двух частей:
- Ведение засечек времени при переключении с задачи на задачу. Причем "пошел в туалет", "вышел в офис пешком", "переустановил java" - это все таски. Все задачи, от минуты и больше - все должно быть записано. Записывается время старта, время завершения, категория задачи.
- Анализ утечек времени. Раз в неделю (или раз в день), в тихой спокойной обстановке, просматриваются все записи с одним единственным вопросом "а как это можно было сократить?"

Те, кто ведет домашнюю бухгалтерию - поймут, что дает этот инструмент. Только если деньги - ресурс восполняемый, то время вам никто никогда не вернет. Он позволяет понять, куда утекает ваше время. Важно это по одной простой причине - часов в жизни человека, дуй Бог, наберется 700 000. И каждый час это число становится меньше. Я, в своих 26 лет, уже ~230 000 часов израсходовал. Ребята, которым уже за 300 000 завалило, вплотную задумываются о том, а какого фига я достиг в этой жизни. Кризис среднего возраста называется. Это когда понимаешь, что то, о чем мечтал в юношестве и детстве - там, в мечтах и останется. Те мои знакомые, которым еще больше - частенько говорят об упущенных возможностях.

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

Как-то фрирайтинг мой занес меня в дебри :) Что из этого всего можно понять? Да то, что у меня есть 70 000 часов до, того самого, кризиса среднего возраста. Это может показаться много - 8 лет! Но с момента, когда я был студентом прошло даже больше. Не прошло а пролетело. Так что это очень немного.

Хронометраж, один из инструментов, который позволяет мне вести учет этого, моего самого ценного, богатства.

Как я это делаю?

Раньше я вел это все дело на бумаге и подсчитывал вручную. Неудобно. По этой причине я сделал формочку в excel, и переделегировал ей часть левой работы. Признаюсь, из за отсутствия автоматизации я часто не делал (из за нехватки времени) делать еженедельный анализ результатов.

Вот так выглядит формочка:



Вот тут можно скачать эту xls доку (по мере улучшения и фикса багов я ее буду обновлять). Доке всего дня, но за это время я успел ее переделать три раза.

Как она работает?

В зеленые колонки - "Дата", "Что делал?", "Конец", "Категория" - ты вводишь соответствующие значения всякий раз, когда переключился с одной задачи на другую (даже, если это "быстро ответил соседу какую версию библиотеки использовать" продолжительностью 2 минуты).

Оранжевые колонки "Начало", "Разница", "Категория", "Сумма", "%", "Часов всего" ты не трогай, потому что они подсчитываются автоматически. Разве что самая первая ячейка колонки "Начало" - ее надо будет ввести вручную.

Что значит каждая колонка:
"Дата" - число, день недели, фаза луны - не важно. Введено для удобства отделения дневных (или лунных, ладно шучу) циклов.
"Что делал" - описание задачи (или того, на что отвлекся). Не скупись на слова - тут должно быть понятно чем ты занимался спустя год :) Никогда не знаешь, когда вернешься к этой доке с анализом (но желательно раз в неделю минимум).
"Начало" - значение времени берется из предыдущей записи в ячейке "Конец". Все же время непрерывно. А учитываем мы все - и сон тоже.  Заполняется автоматически.
"Конец" - сюда ты вводишь время, которое видишь на часах, в момент, когда переключился на другую задачу. 
"Разница" - дробное число часов в интервале между (начало и конец). Заполняется автоматически.
"Категория" - некоторые задачи группируются, и тут ты вводишь имя группы. быть может это имя проекта, быть может имя человека, быть может что-то еще... Можно вводить сразу, а можно и потом, когда будешь проводить анализ. Я делаю сразу.

Далее идет другая таблица, подводящая итог:
"Категории" - Заполняется автоматически из колонки "Категория". Выбираются все уникальные категории.
"Сумма" - Заполняется автоматически из колонки "Разница", для всех рядков заданной категории.
"%" -Дает ответ на вопрос, как много всего своего времени в % соотношении ты уделяешь этой категории. Заполняется автоматически
"Часов всего" - общее количество учтенных часов.

Траблшуттинг (или рекомендации по использованию таблиц в excel):
- не вставляй (не удаляй) никаких строк и столбцов в таблицу.
- не используй copy-past значений из одной ячейки в другую
- пиши текст только вручную
- не заполняй никаких значений в колонку F (она скрыта).
- не пиши ничего в колонках С, E, I, J, K, L - в них одни сплошные формулы.
- для тебя только зеленые колонки "Дата", "Что делал?", "Конец", "Категория"
- после каждого анализа начинай работу с нового листа (так проще)
- расширяй доку, только если понимаешь что делаешь. Хорошо бы при этом сравнить какие-то контрольные значения со значениями взятыми до правки.

А теперь не много рекомендаций при работе с хронометражом

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

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

Проводи анализ раз в день, неделю, месяц (это по началу не советую - очень отложенная обратная связь получается).

Представь, что числа эти - это не часы, а тысячи долларов, которые утекают с твоего счета. Ты есть целый завод по производству чего-то полезного. В тебе работают разные отделы. Каждый день работы стоит 240 000$. Тебе надо придумать, как эти деньги эффективнее расходовать. Ты директор!

Для версии, где час стоит 1000$ предлагаю другой шаблон, более мотивирующий :)

Вот пример.


Всего лишь надо выбрать в колонке "ЗП, $ в месяц" сколько денег ты "получаешь" в месяц (я выбрал 100 000$ :) чтобы цифры в колонке "Разница" были ощутимее).

Теперь про то, что я получил от хронометража и что можешь получить ты:
- ты понимаешь, что то, что ты думал займет 5 минут, вовсе 5 минут не занимает. Позже ты поймешь, что задач на 5 минут практически никогда не бывает - все они растягиваются на  в разы и являются главным пожирателем твоего времени.
- ты понимаешь что сделал совсем не то, что хотел сделать сутра
- ты понимаешь, что на самом деле кроется за "нет времени" - эту фразу более приятнее говорить как "не те приоритеты".
- ты отказываешься от чего-то, потому что понимаешь - времени заберет огого, а пользы не так.
- ты стремишься делегировать
- ты оптимизируешь, автоматизируешь- придумываешь что угодно, чтобы сделать то же но дешевле
- ты работаешь сутра, а после обеда спишь или гуляешь
- ты делаешь частые перерывы, потому что это эффективный способ борьбы от суеты
- ты стараешься не отвлекаться на скайпы, почты, потому как все ты воспринимаешь как задачи
- каждый вечер (или раз в неделю) ты делаешь новые открытия в ходе анализа
- тебе легко заполнять всякого рода рипорты
- тебе легко сказать сколько точно времени займетта или иная задача, потому что ты знаешь насколько в среднем ты обманываешь себя, на планировании, когда говоришь "я сделаю это за X часов"
- ты управляешь своим временем, а не плывешь по течению.
- ты доволен тем, что у тебя в дне больше на пару (а может и пять-семь-30-1000!) часов времени чем у остальных.
- еще (из последних нововведений) ты легко можешь подсчитать в процентном соотношении, как и на что утекает твое время. Так же можно придумать любые другие метрики - покуда есть статистическая информация. К примеру на вкладке "Балланс" можно сгруппировать категории и увидеть в процентном соотношении на что тратится время. Очень полезно, если хочешь начать уделять семье столько же времени сколько работе.

Тут в 1й колонке вводишь те категории, которые вводил в табличке "Хронометраж". Во второй обобщаешь их в т.н. "области". В третьей видишь сумму по категориям (подсчитывается автоматически). В четвертой приведен список тех же "областей" (вводишь вручную). В пятой - сумма часов но уже по "областям". В шестой - процентное соотношение.

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



Еще одно замечание. В дне у тебя может быть больше 24 часов. Как? Ты можешь делегировать часть своей работы. Человеку либо компьютеру. В первом случае правильнее будет говорить о том, что у тебя в сутках есть некоторое число человекочасов большее, чем 24.

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

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

А сколько еще методов оптимизации ты откроешь, когда начнешь во время анализа задавать к каждой записи в табличке один единственный вопрос "а как это можно было сделать дешевле?"


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


В общем Enjoy!

Java for fun: Кодревьюшки #1

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

Сегодня рабочее утро у меня началось с этих ревьюшек.



Это первая серия, дальше будет...

четверг, 8 декабря 2011 г.

26-27 декабря: Киев, Тренинг "Test Driven development in Java"

Привет!

В этом году мы еще разок дадим жару на нашем двухдневном тренинге "Test Driven development in Java", который пройдет при поддержке Scrumguides.

Сережа и я сейчас интенсивно apply'им все фидбеки, которые получили из прошлых наших тренингов на эту тему. Работы много. Новый тренинг будет не таким, каким его видели участники прошлых наших тренингов. Спасибо, Ребята, за ваши полезные замечания.

Вот что пишут про TDD некоторые из участников:

 I am planning introduce this knowledge at my work. I will have to think about how I can apply this for the mobile java development. But I think  TDD can give me a lot of benefits for the next project.
I have remembered pieces of JUnit. Coaches gave an answers for my principal questions and they gave a main direction for movements.
It was very useful event. I hope similar events will be appear more frequently then now. I would be say that 2-3 day events is effective than one-day event. Many thanks to coaches and organizators.   
Bogdan Strelets

After the training I have started using TDD methodology in my personal software project (Bible reader application for Android) in oder to gain some initial TDD experience. Planning to use TDD while working with the C trainee in my current work project, so that the expected future developement activities on my project will benefit from the TDD appoach.
Plan to learn and practice on how to think of the software in terms of tests and how to design well testable modules. Also plan to read more about the TDD and how it applies to C-based projects.
The trainers had a strong positive impact on me. They had me convinced that the TDD approach is beneficial, and not only for the final quality of the software product but also for the developer's everyday and overall confidence in the software he/she is developing.  The latter is highly valuable to me as a developer.
During the sessions the trainers have well used their obvious knowledge, experience, confidence, and sense of humor. The good presentations and practice sessions with the audience were very effective. I recommend this TDD training for teams and individual developers which need encouragement and guidance regarding improvement of the software quality. Also recommend for developers who simply need to learn that with TDD even complex software systems can be built in such a way that their future extension will be a feasible, predictable, and not risky task.
Denys Dolganenko

Тренінг по TDD підійде всім, як новачкам так і досвідченим TDD розробникам. Ті хто ніколи не працювали з TDD можуть здобути цінні знання і розуміння TDD, зразу відпадуть питання: «Для чого мені писати юніт тести?», «Звідки впевненість що мої тести працюють правильно?», «Хто напише тести для моїх тестів?» .  Ті хто вже працював з TDD зможуть систематизувати свої знання.
Пройшовши тренінг по TDD ви отримаєте все необхідне для програмування по TDD, в результаті ви зекономите багато часу  час , оскільки не прийдеться читати товсті книжки. Про  «Гру в пінг-понг», яка скорочує час і екфективність розробки, навряд чи можна ще десь дізнатися окрім тренінгу.
Мені тренінг допоміг систематизувати свої знання, і я отримав відповіді на запитання відповіді на які  я би міг знайти, рившись в товстих книжках, витрачаючи багато часу. Також треніг допоміг мені при захисті презентаці по TDD в університеті, я зміг відповісти на достатньо не прості питання викладача який провів в ІТ багато років.
І на кінець TDD - це всього лише інструмент, а те, як цей інструмент використовується, залежить від людини, яка цей інструмент тримає в руках. У чиїхось руках він може приносити багато користі, а в інших - багато шкоди. Якщо ви вирішили програмувати по TDD, то будьте готові до жертв: це і втрата швидкості розробки на початку, і жорстка дисципліна і самоконтроль,  інтенсивне навчання і т.д. Всі ці жертви потім окупляться. Багато хто не витримує і повертається до колишнього стилю роботи.  Але, на мою думку, а також на думку деяких знайомих мені TDD-практиків, як тільки розробник відчув залежність від «зеленої смуги», дізнався, що таке повний контроль за кодом, тобто став інфікованим тестами (test-infected), він уже ніколи не відмовиться від тестування. Поки що ніхто з моїх знайомих не шкодує часу, витраченого на вивчення і експерименти з TDD.
Yaroslav Balytskyy

Впринципі даний тренінг призначений для програмістів які ніколи не використовували TDD, проте ішовши на тренінг я вже мав рік досвіду роботи по TDD&XP і незважаючи на це я все одно знайшов для себе цікаві теми.
Якщо ви маєте досвід роботи по TDD то ви просто мусите послухати про TDD Anti-patterns, Unit vs Integration testing. Під час моєї роботи, в мене постійно виникало питання "Коли писати тести? Який код варто тестувати?",  тепер в мене не виникає таких питаннь. Найбільший фан я отримав коли розпочалась практична частина тренінгу і ми почали грати в TDD Ping Pong. В цілому TDD тренінг був дуже цікавим і насиченим. І я з повною впевненістю можу сказати, що не дарма витратив свій вихідний день.  
Igor Gordiichuk

Всем кто еще думает идит или нет. Отвечу: Идти!  Замечательная тема, замечательные ребята, потрясающий результат.
Ребята не просто показывают "Привет мир" из TDD, ребята показывают почему это стоит использовать, как правильно использовать,  какой профит вы с этого получите в результате. Честно сказать мне не удалось еще применить это на практике, но многие вещи не касающиеся  TDD которые были услышаны на встрече мне уже помогают в работе.
Финансовавя сторона вопроса: Едиственная причина которая может заставит вас отказаться от  такой возможности это отсутствие финансов или их крайнее наличие. Хотя меня последнее не сдержало, и я не жалею. Даже если  просто прикинуть то стоимость хорошей книги сейчас не меньше 200 грв + время на ее прочтение +односторонняя связь с книгой.
Итого выходит немало трудозатрат. А если верить идее что каждая книга рано или поздно добавить +50 к уверненности,  +50 к знаниям и +100 к твоей стоимости как специалиста, то уверен, что на этой встрече я прокачался на все +200 по всем параметрам,  кроме ЗП - пока )).
Синяя пилюля это не пойти и остаться в мире без TDD, красная же откроет тебе ту правду которую ты скрывал от себя все это время.
Так что руки в ноги и вперед на встречу солнечному будущему без дебага))
Oleksandr Sientsov

First I have to say that when I heard about TDD I was a little bit sceptical about this methodology. Write test before real implementation? Are you kidding me? Well, it was before training.
On the beginning of the training, coaches helped me to tune the environment. After that training started.  First off all we listened some theory, which by the way was supported with some funny picture( they really helped me to wake up after rought friday night:)). Trainers was nice and gladly answered our questions.
After this we had some practice. Practice was in pairs. Only one pc for two developers.  At the first it was unusual, but after a little while I got used to it.  And I have to say this methodology could be very effective.  Like they said  - "One head is good, but two better".
One thing that I did not like in the practice it is a emulation of elevator. IMHO it is too abstract task, I would rather write some "Snake" or "Tetris", maybe something simplier, but definitely  something more specific. One more thing I would like to propose it is to organise some sort of little competion between students. E.g some little task and who will do it better and faster.
So, my conclusion is - training was nice. It helped me understood that TDD can be very usefull  in some cases. Once again  a little more practice and independent work and everything will be perfect.  
Teodor Moroz

Це насправді був мій перший тренінг такого рівня. Дивлячись на те що я Automation QA, думав що буду почувати себе повним чайником на даному дійстві, адже маю більше досвіду у написанні тестових скриптів ніж у безпосередній розробці, проте як виявилось, хлопці підготували матеріал у дуже доступній формі.
Насамперед хочеться сказати, що відкрив для себе новий підхід у написанні коду, так сказати задом наперед до поставленого завдання). Тренінг цікавий, слухався на одному диханні, викладений дуже професійно та доступно, незважачи на рівень знань слухачів, що і засвідчує моє повне розуміння матеіралу після тренінгу, аже сам ше джунік).
Думаю важливу роль відіграло те, що хлопці зробили великий акцент на практичній реалізації, адже легко вчитись не коли просто слухаєш і читаєш, а коли реалізовуєш руками). Практично кожен присутній вніс якусь свою деталь у розробці контроллера ліфта(який ми практично реалізовували на тренінгу за принцибом TDD).
Побільше б таких тренінгів).
Taras Lytvyn

Раньше я слышал о TDD, но никогда не вникал в его суть. Тренинг дал понять насколько интересную и полезную технологию я упускал, а главное, быстро вникнуть в ее принцип.
Понравилось то, что Алексанр и Сергей на простых вещах из комнаты объясняли принцип работы чего-то абстрактного. А для закрепления материала мы разрабатывали проект прямо на тренинге.
Честно говоря, ребята очень хорошо разбираются в теме. С удовольствием схожу на другой их тренинг.
Dmitry Shilov