Friday, January 20, 2012

Enhancing Focus with Pomodoro

In my quest for increased productivity and focus I came across a time-boxing technique called  Pomodoro. A short free book describing the application of the practice in detail can be found on the Pomodoro web site, but for now I'm employing a simplified version to see what time-boxing feels like and how it affects my general productivity and focus. Perhaps I will return to the book and the system to begin applying more of the described methodology for managing time once I see how my initials trials with time-boxing go. The idea of time-boxing while I'm working on things within my sprint, seems like a good pairing and smells of agile spirit.

The Pomodoro Book

From the Pomodoro book, page 3, there are two interrelated aspects that seem to coexist with the reference to time:
  • Becoming. An abstract, dimensional aspect of time, which gives rise to the habit of measuring time (seconds, minutes, hours); the idea of representing time on an axis, as we would spatial dimensions; the concept of the duration of an event (the distance between two points on the temporal axis); the idea of being late (once again the distance between two points on the temporal axis).
  • The succession of events. A concrete aspect of temporal order: we wake up, we take a shower, we have breakfast, we study, we have lunch, we have a nap, we play, we eat, and we go to bed. Children come to have this notion of time before they develop the idea of abstract time which passes regardless of the events that take place (16).

Of these two aspects, it is becoming that generates anxiety – it is, by nature, elusive, indefinite, infinite: time passes, slips away, moves toward the future. If we try to measure ourselves against the passage of time, we feel inadequate, oppressed, enslaved, defeated, more and more with every second that goes by.
...
The succession of events, instead, seems to be the less anxiety-ridden aspect of time. At times it may even represent the regular succession of activity, a calm-inducing rhythm.

Here are the goals of the Pomodoro technique outlined in the book:
  • Alleviate anxiety linked to becoming
  • Enhance focus and concentration by cutting down on interruptions 
  • Increase awareness of your decisions 
  • Boost motivation and keep it constant 
  • Bolster the determination to achieve your goals 
  • Refine the estimation process, both in qualitative and quantitative terms  
  • Improve your work or study process 
  • Strengthen your determination to keep on applying yourself in the face of complex situation

Page 4 describes the three basic assumptions upon which technique is founded:
  • A different way of seeing time (no longer focused on the concept of becoming) alleviates anxiety and in doing so leads to enhanced personal effectiveness. 
  • Better use of the mind enables us to achieve greater clarity of thought, higher consciousness, and sharper focus, all the while facilitating learning. 
  • Employing easy-to-use, unobtrusive tools reduces the complexity of applying the Technique while favoring continuity, and allows you to concentrate your efforts on the activities you want to accomplish. Many time management techniques fail because they subject the people who use them to a higher level of added complexity with respect to the intrinsic complexity of the task at hand.

FYI - The technique is not suggested to be used during your free time!

Too much detail? No problem check out Greg Head's 5-minute Ignite talk on Pomodoro:



Here is how I setup my first Pomodoro. The screen shot below shows my desktop, with dual monitors, taskbar on the far left and vertical, The two right-most windows in Eclipse are on the right monitor and the other 4 windows on the left are on the left monitor. Notice how I'm using Eclipse internal web browser to display the Pomodoro countdown, which says "time expired".

Pomodoro Desktop

I tried out a few different ways of using a timer, kitchen timer, iPhone, etc..., but what I've found works best for me is to use the E.ggTimer web site and keep it open in a sliver of my screen space. I like the use of the Egg Timer, as it has an non-intrusive countdown and also makes an audible alert, which I can hear while I'm listening to Pandora. I thought my smartphone might make a good timer, but the screen kept shutting off and it really didn't appeal to me as much as having the Pomodoro on-screen. The E.ggTimer site also offers a pomodoro timer, which is setup for a 25 minute Pomodoro with a 5 minute break.

I've not had much practice with the technique yet, but there is something different about working and seeing the countdown of the Pomodoro timer, that gave me a heightened sense of focus. I was definitely more aware of the many distractions I have, even though I thought I was doing well with minimizing distractions and avoiding task switching. This technique really puts anything that distracts you in your face, you should make quick note of it, if it is important and continue with the work at hand. It will be interesting to see the effects of this practice over a few weeks and whether I make the determination to  stick with it.

Monday, January 16, 2012

Take an Hour to Inspire Your Work

Every now and again I need something to renew how I feel about my day to day job and liven things up. I found three videos, which give raise my spirits about work, encourage positive thinking and gave me something to chew on as I was looking for some perspective.

These video go well together and just might have you thinking differently and get you revved up about what you are doing, what you want to do, and figuring out what you were meant to do.

First a thought provoking TED video by Daniel Pink on the surprising science of motivation in which he discusses autonomy, mastery and purpose being key motivators for today's knowledge worker and how the carrot and stick method no longer applies to the current paradigm.

Get AMP'ed!

Up second is a video that shows how important play, creativity and having fun is. Tim Brown the CEO and president of IDEO talks about creativity and play in another TED video.

And finally three stories from Steve Jobs life that really put it all into perspective. Check out Steve's 2005 Stanford commencement address, "How to Live Before you Die".

Sunday, January 15, 2012

Agile Training with Mike DePaoli from VersionOne

Last week I attended a two day workshop with Michael DePaoli on agile processes. It was very enlightening and we were lucky to have such a great speaker.

Here is my partially organized brain dump of the concepts that stuck with me from my notes. It will be interesting to see how some of the concepts might be incorporated in my current work environment and what the effects will be. Thumbs up to continuous improvement and re-factoring!

Process Overview
Typical daily scrum questions:

  • What did I learn?
  • What am I going to learn?
  • What are the impediments?

The goal is to remove impediments and keep forward momentum going.

Agile Lifecycle
Key agile points:

  • individuals and interaction over processes & tools
  • working software over comprehensive docs
  • customer collaboration over contract negotiation
  • responding to change over following a plan

While there is value to the items on the right, put higher value to the underlined items on the left.

Management and Leadership
Agile leadership must learn to manage teams and coach individuals.

The kaizen process ("good change") from Toyota, shows how many small changes amount to big change without evoking a fear response.

Don't be fooled by a waterfall process within an iteration. (A "scrumfall" or "wateration".)

Expose problems as soon as possible to give product owners the maximum number of choices for how to react.

Reactionary behavior is a handicap of corporate America.

Learn what it means to be a "servant leader".

Facilitative management role is not done by review, rather by actively observing teams and helping remove impediments.

Task Estimation
An estimate involves a range. A single value/date is a commitment.

Agile estimation drives down cost.

Important to have team agree on the reference example during the sprint planning process to start the relative estimation process of other tasks. It is much like a keystone, which should not be updated since other tasks will be estimated in relation to this entity.

Identify assumptions and boundaries for which task estimates are based on.

Estimates should not be in days. Use T-shirt sizes or fibonacci numbers for your estimates, to reinforce that these numbers are estimates.

Problem-solving
The marshmallow challenge taught us to prove key assumptions as soon as possible. Check out Tom Wujec's TED talk about the challenge.
  • remember the objective
  • become familiar with the materials
Think about the challenge as it relates to gathering requirements.

Learn the power of the intuitive mind for problem solving and estimation.

Team
As soon as you assign blame you stop learning.

Team cadence should be kept regular, but not set in stone. The general rule is to work to get the cadence smaller and always keep it consistent.

A self-organizing team does their own resource leveling. The highest definition of this is that the team can overcome obstacles and reach agreement through conflict. This is a high performing "team smell". Take tasks based on importance and priority.

The team has to honor the process throughout. If it is not working analyze, change, modify, but don't give up what you've started.

Meetings
The daily stand-up is about re-planning based in what is known TODAY. Stand-up meetings are not for problem solving, but rather problem identifying. The daily stand-up meeting is the way to implement active issue management.

During the sprint retrospective inspect the process, not the people.

Agile Tips
Velocity defined: Stabilized number of estimation units a team can accomplish with a high value, that can be marked as being done. Velocity should be averaged based on the team over a number of sprints and also takes into account capacity.

Velocity is observed. Team capacity changes and is flushed out during sprint planning, which then affects the velocity.
  • size (complexity) is estimated
  • velocity is measured
  • duration is forecast
Then enemy of predictability is variability. Add buffers to remain predictable.

Burndown - how much work do we have left?
Cumulative flow - how much value have we delivered?

A burn-down chart can be analyzed for trends:
  • how many hours remain on tasks
  • what has changed
  • who needs help
The easiest lowest cost way of dealing with defects is to fix them when found, in the current sprint and take out a similar sized lower priority task. This reduced technical debt.

Focus of the agile process isn't starting new work, it is about finishing what was begun.

Mnemonic for writing good stories:
  • Specific
  • Measurable - can we mark it as done
  • Achievable - task needs to be do-able
  • Relevant - needs to contribute to the story's bottom line
  • Time boxed - limited to a specific duration

Task switching overhead
Time yourself for this exercise, it has two parts. Write the phrase "Multitasking is worse than a lie" and after writing a single letter write the index number of the letter below of the letter itself. Now repeat the exercise by writing the sentence to completion first and then labeling the numbers below the letters from 1 to 27. The resulting output is the same, but the exercise highlights the high cost of task switching in the completion time difference.

Work in process limits: A single piece of flow results in highest quality and will surface bottlenecks.

Good Thoughts
Software development professionals understand the whole system.

Focusing on learning will create energy and fight lethargy.

If you take an action without direct add value you have to think carefully about the transaction cost and coordination cost.

Monday, January 2, 2012

Use You a Spaced Repetition System for Great Good!

In 2008 I came upon an article in Wired (Want to Remember Everything You'll Ever Learn? Surrender to This Algorithm) about the SuperMemo spaced repetition memory system application. SuperMemo was developed by Piotr Woźniak who wrote his 1995 Ph.D. dissertation paper, Economics of Learning on the topic.

Here is the definition of an SRS system, from wikipedia:
"Spaced repetition is a learning technique that incorporates increasing intervals of time between subsequent review of previously learned material; this exploits the psychological spacing effect.
[...]
the spacing effect refers to the fact that humans and animals more easily remember or learn items in a list when they are studied a few times over a long period of time (spaced presentation), rather than studied repeatedly in a short period time (massed presentation)."
Image Copyright Wired: "Want to Remember Everything You'll Ever Learn? Surrender to This Algorithm"

When I came across the section in chapter 5 in the Practical Clojure book, that described the Clojure sequence API, I knew this knowledge would be perfect for an SRS system and right now I'm sufficiently motivated to try it out.

I choose to use Anki to help me learn Clojure, which is an easy to use, free, multi-platform, SRS system. Anki also allows you to sync/share your flashcards and offers a free basic web interface to your synced decks through your Anki web account. Anki uses the SM-2 algorithm developed by Piotr Woźniak, father of SuperMemo.

Regardless of which SRS system you use, I highly recommend reading these Woźniak articles before you begin training. Although these articles are written specifically for SuperMemo users, the knowledge they contain are universal and will be invaluable for your practice:

Also of interest is Jack Kinsella's great article, "Janki Method," which discusses using Anki to learn and retain techincal knowedge, shortening the time needed to learn programming.

If you decide to use Anki, you can download this shared deck of flash cards for the Clojure sequence API, based on Chapter 5 in Apress' Practical Clojure book.

To install the Anki deck, open up Anki and select Download from the File menu:

Download Shared Deck in Anki


In the Download Shared Deck window filter on "clojure" and you will see the latest Clojure Sequence API deck:

Anki Shared Deck Browser