I read The Daily Stoic book by Ryan Holiday around a year ago. It changed my perception of reality with the very first page:


Stoicism is an ancient philosophy that focuses on practical life instead of theoretical questions. It is concerned with everyday life and does not concern itself about the stars, heaven, hell, etc. That is what I found remarkable about this philosophy.

This was immediately apparent when my car broke down. I dropped my daughter to preschool and when I came back to the parking lot, the car wouldn’t start! Immediately, I was frustrated. This is the part where I would usually curse a lot and mutter “waste of time”, blah blah.

This time, I did something different. I quickly shut down that line of thinking. I thought “What’s the Stoic way?” – as the first page indicates, the principle is simple:

“If you cannot change something, move on.

If you can change something, decide what you want to do about it, and move on.

There is no reason for anger.”

So I calmed down quickly and asked myself “What is the next right action?”. “Duh, call AAA (roadside assistance).”

So I did that – they came in an hour (I listened to a podcast in the meanwhile), analyzed that the battery had died, they called for a flatbed truck, where they loaded the car onto it, and dropped us off at the nearby service center, and then I walked back home.

Things that I was actually happy about after this incident:

  • I’m glad the car broke down when I was driving, and not when my wife was driving. She would have panicked and I would have been 60 km away in San Francisco and won’t be able to arrive quickly enough to help.
  • I’m glad the car broke down when it was parked, not when I was driving.
  • My daughter and her friends were excited on seeing a flatbed truck and seeing how a car is loaded onto it. The truck driver honked at the kids and they ran around the playground to see the truck drive by. The kids talked about it for weeks!
  • I didn’t really miss anything at work. I had to attend one meeting, which I connected via phone and was listening in when I was walking home.

Other than spending money on a new battery (which would’ve been inevitable), I thought to myself – that this was not a bad situation!

This comes back to another Stoic principle:

Things are not good or bad. It’s our perception (impression) of things that make it good or bad!

Stoicism takes it one step further by turning the obstacle upside down:

If you can properly turn a problem upside down, every “bad” becomes a new source of good.

Suppose for a second that you are trying to help someone and they respond by being surly or unwilling to cooperate. Instead of making your life more difficult, the exercise says, they’re actually directing you towards new virtues; for example, patience or understanding. Or, the death of someone close to you; a chance to show fortitude.

Marcus Aurelius described it like this:

The impediment to action advances action. What stands in the way becomes the way.”

About philosophy

I had benefitted from the book so much (which explains many more principles and ideas than what I mentioned here), and was so thankful to the author, that when I read that Ryan Holiday was doing a book tour for his new book “Conspiracy”, I went to get his autograph:


Only those who make time for philosophy are truly alive. — Ryan Holiday

This reminded me of:


Where to go from here?

From Lessons on Leading by Jessica Steel :

Leaders recognize that we should feel 60% mastery and 40% stretch in our jobs at any given time. We draw our confidence from the 60% we know we’re nailing, and we grow from the challenge of the 40% that is new and uncomfortable for us. Leaders focus on this equation for all of their employees. And, for themselves. Confident, challenged and happy employees tend to stick around.

This struck a chord with me on one of the most under-focused roles of managers, because, of course, it’s hard to make it happen, but at the same time, this is what employees appreciate the most, besides salary raises (and sometimes in lieu of salary as well).

P.S. I also liked the “A leader’s job is to absorb anxiety and instill confidence among employees” part in the above linked article.

A HBR article titled Smartphones, Silly Users perfectly describes why I have moved my personal information management system away from apps that sync across desktop and mobile:

  1. “We don’t remember anything anymore.”
    • “We’re increasingly outsourcing our personal memory banks to Google and other search engines, effectively wiping our own brains of easily accessible information.” a.k.a. the Google effect
  2. “We waste time preserving optionality.”
    • “We’re refusing to finalize our plans until critical moments. The ability to make reservations, check opening hours, look up driving directions, and review ratings on our mobile devices means that we’re increasingly iterating our schedules and keeping our options open until the very last moment before that meeting, lunch, or coffee catchup is set to begin.”
  3. “We get stuck in the infinite notification loop.”
    • “As we endlessly loop between Facebook, Twitter, LinkedIn, and other app notifications, our attention fragments, and it becomes difficult to focus on larger, more important tasks.”

Till this month, I was obsessed with syncing everything across my desktop and mobile. The problem was that I became obsessed with the mobile phone unnecessarily and once you’re using the phone, Point no. 3 kicks in – the infinite notification loop swallows a lot of time and attention.

Once I shifted my system to laptop-only, I don’t have all my tasks and calendar at hand, I’m forced to remember things (see point 1 above), and strangely, I’m more likely to remember things to pick up from the grocery store now than I was likely to remember to check my mobile phone app for things to buy when I was near a grocery store!

The most important thing is that notes and todos are in the same place, for example, if I’m on a call, I can take notes and then I can keep referring back to those notes while creating todos and working on tasks. The tasks come out of notes, they’re not separate! It really helps to have one system that can handle and encourage the normal flow instead of being forced to use separate notes and tasks apps.

Today, I’m all OrgMode. Again.


Semi-regularly, I’ve been doing something I called “Paper Therapy.” The idea was simple: “Write on paper till your brain has nothing left in it.”

This stupidly simple idea has often been miraculous in helping me clear my mind and think of ideas or options that I was unable to just “think in my head.”

And I observed many others felt this way as well, for example:

Writing is a miraculous process. You find things you never knew were inside your own head.

— @littlecalculist


I write with my hands on paper as much as I can to get my eyes off of the monitor and my hands off the keyboard. Yes taking notes on something like evernote is more useful down the road, but for me there is something more free about jotting notes on paper. It gives me a mental break, a physical break, and if I come up with something really useful, I’ll type it in a note program. As an added bonus, the retyping of it usually lets me come up with something new to add.

— http://gorban.org/post/14162629940/thinking-time

When I was going through the PersonalMBA Reading List, I came across a book called Accidental Genius by Mark Levy, and I immediately wanted to read the book because it talked about a concept called freewriting which sounded eerily similar to what I used to call “paper therapy”. So I bought the book from the Kindle store and read the entire book on my iPhone with the Kindle app.

One of the revelations as I was reading the book was that freewriting has been used as a technique for ages, especially by prose writers.

So what is freewriting? As Mark Levy says:

As expansive and impressive as the mind is, it’s also lazy. Left to its own devices, it recycles tired thoughts, takes rutted paths, and steers clear of unfamiliar and  uncomfortable territory. You could say that one of its primary jobs is to shut off, even when there’s important thinking to be done.

Freewriting prevents that from happening. It pushes the brain to think longer, deeper, and more unconventionally than it normally would. By giving yourself a handful of liberating freewriting rules to follow, you back your mind into a corner where it can’t help but come up with new thoughts. You could call freewriting a form of forced creativity.

Freewriting is a fast method of thinking onto paper that enables you to reach a level of thinking that’s often difficult to attain during the course of a normal business day.


As I mentioned earlier, freewriting is nothing but writing profusely on paper. It doesn’t matter what grammar you use, it doesn’t matter what you write because nobody else is going to read it, it doesn’t even matter whether you even read what you wrote! What’s important is to get the thoughts flowing and externalizing it by doing the physical action of writing fast on paper. If you can’t think of what to write, write gibberish. If you get distracted by other thoughts, write down those thoughts! The idea is to not filter anything out, these are your real thoughts and you need to externalize them.

The point is to extrapolate to write continuously. If you wrote about a problem, what are the causes and possible solutions? If you wrote about a dream, write about how and whether you are following those dreams. If you had a nightmare, write about the possible subconscious meanings of the nightmare. If you suddenly remembered some random quote from a book you read ages ago and forgotten about it, then write about that and what it means to you. If you had an altercation, write about whether it occurs frequently or whether there is a pattern. Try to explore your mind and try to explore the facts as much as possible.

The result of this exercise can only be felt, it’s hard to explain. The liberation you feel and the sudden “lightness” you feel is amazing.

Accidental Genius book cover

Mark goes on to explain six secrets of freewriting:

1. Try Easy

Trying easy will help you in any area of your life. Conventional Wisdom tells us that we have to give no less than 110 percent to keep ahread. Yet conversely, I have found that giving 90 percent is usually more effective.

It’s like the first day of gym – they make you do so much exercise and you’re so sore the next day that you never go back. Don’t do that! Instead work till you reach the edge of your current capacity and then stop. Repeat it the next day, and so on. So, if you feel you can only write 500 words, do only that much, don’t push yourself beyond that. If someday, you feel you can write more, go right ahead.

2. Write Fast and Continuously

By writing fast, you invite your mind to operate at a pace that’s closer to its normal rate of thought, rather than the lethargic crawl you usually subject it to when you write sluggishly.

Imagine you’re attending a talk and the speaker talks very slowly. Your mind races ahead and you tune out eventually in a few minutes and either doze off or walk out. Same thing applies here, if you write slowly, your mind races ahead. Instead, write as fast as your brain thinks. Remember, nobody is going to read this but you. So it’s perfectly okay to WRITE SLOPPY. Use bad handwriting, use shortcuts, use phrases that only you understand, do whatever it takes to keep your writing at the pace of your thoughts. That’s when the magic happens.

By writing continuously, you force the edit-crazy part of your mind into a subordinate position, so the idea-producing part can keep spitting out words.

If you don’t write continuously, it’ll break your flow of thoughts as well as you start to “edit” what you wrote in your head. That’s not good. So write non-stop and keep the pen moving.

The plan is to move fast and don’t stop writing, with the understanding that the more words you pile onto the page, even if they’re lousy words, the better your chance at finding a usable idea. In the freewriting game, think quantity before quality.

3. Work Against a Limit

Use a time limit, say 10 min, to practice non-stop, fast and easy freewriting. And then take a break. The reasons for this are obvious if you have read my review of the Pomodoro Technique book.

4. Write the Way You Think

Freewriting isn’t writing, per se; it’s a means of watching yourself think. Since you’re writing for yourself, you don’t need to polish your raw thoughts to please others. All that matters is that you yourself understand your logic, references, word choices, and idiosyncratic ideas.

If you really do end up showing your freewriting to someone else (without polishing it), they probably can’t make sense of it! Because you are free to use your own idioms, your own phrases, your own language, basically, the way YOU think. That’s probably a sign of “good” freewriting.

5. Go with the Thought

The whole time I was scribbling, I would say to myself something like “Go with the thought. Agree with what you just wrote, and logically extend it… Be whimsical if you like, but make sure the whimsy naturally follows what preceded it… Based on this new thought that just appeared on the page, what might happen next?

This intoxicating game of “agreeing and extending,” during which I effortlessly fleshed out scenarios, took up pages of my writing until my hand grew tired, my timer went off, or even more important, I had discovered some provisional methods for tackling a problem.

The whole point of freewriting is to extend your thoughts beyond what your mind usually is used to. Even if you have a recurring thought in your mind, you usually stop thinking about it at the same logical point, either you give up, or your brain just shuts down and doesn’t want to think about something so uncomfortable. That’s exactly where freewriting helps you to keep flowing and “free”ly continue thinking about the same topic and externalize the thoughts, and hopefully have a breakthrough on that topic.

6. Redirect Your Attention

Whatever the situation, you’re on the freewriting bus, motoring along, when suddenly you hit the brakes. The road ahead is washed out, and you don’t know how to proceed.

Quickly, you consult your checklist of freewriting rules: Try easy, check. Writing fast and continuously, check. Inoffensive kitchen timer counting down ten-minute intervals, check. Now you’ve run out of ideas. You’ve reached the end of your thoughts, or so you believe.

Time to use a focus-changer.

Focus-changers are questions like:

  • What was I thinking there?
  • How else can I say that?
Those are two of my favorites. They push me to see again what I’ve done and think I already know. They also challenge me into generating fresh thought, even after I believe I’ve run out of road. But those aren’t the only focus-changers you can use.
Focus-challengers have endless numbers or forms. Here’s a partial list of some helpful ones:
  • How can I make this exciting?
  • How can I add value?
  • What else can I say about this subject?
  • Why am I stuck at this particular point?
  • How can I get unstuck?
  • What am I missing here?
  • What am I wrong about here?
  • Why?
  • How can I prove that?
  • How can I disprove that?
  • What do I think about that?
  • If I continue to think that way, what might happen?
  • What solutions can I borrow from past problems that can be applied to this current one?
  • What does this remind me of?
  • What’s the best-case scenario?
  • What’s the worst-case scenario?
  • What am I doing right?
  • What am I doing brilliantly?
  • How can I jump the track?
  • What strengths of mine (or my company’s) can I apply?
  • What weaknesses need to be compensated for?
  • What’s the proof that that statement is true?
  • How am I the wrong person for this project?
  • How am I the right person for this project?
  • How would an arbitrator judge that?
  • If I wanted to make a big mistake here, what would I do?
  • What data do I need that I don’t yet have?
  • How would I describe the situation to the CEO?
  • How would I describe it to my mother?
  • How would I describe it to my most supportive friend?
  • How would I describe it to a disinterested stranger?
Focus-changers are simple questions to ask yourself, in writing, that help you redirect your mind toward the unexplored parts of a situation.

A good sword for Freewriting

It’s because of my indulgence of freewriting why I was asking tweeps about a good pen to write with, I got suggestions for:

I’m grateful for the suggestions by my twitter followers, and quite surprised that I’m not the only one who’s holding on to pen and paper! I’m yet to go out to a store and buy any of them, but it’s great to know the recommendations so that I don’t have to do the trial and error :)

I finally bought the Pelikan cartridge ink pen and loving it! Having such a good pen makes me more indulgent in the freewriting process.

One of the tweeps, Fayad Fami, also pointed to this ad that I agree with – “The more you write, the better you remember”:

Final Thoughts

The book goes on to explain many different aspects of freewriting – why it is useful to write, how to prompt it, using facts, letting loose, substituting concepts from other areas to solve problems, importance of quantity in freewriting, importance of lying about a situation to widen your view of a situation, holding a paper conversation with yourself or someone else, concept of sometimes doing a marathon rather than a sprint of writing, importance of being honest, importance of detailing, how to extract usefulness from a business book (like I do with my blogging about what I learned from each book!), how to use freewriting to keep your focus on what you want to make of your life, how to use freewriting to write for a public audience (a colleague, a boss, a blog, a book, etc.), helping others to freewriting, noticing things around you, and so on. It is best to learn about these by reading the book.

To sum up, as Josh Kaufman says in his review of the book:

Daily externalization and self-elicitation are heavy-duty creativity tools that will do wonders for your productivity. Give it a try: the results will surprise you.

I was struggling with focus in the past week, and I needed a refresher of the basics. So I was looking for reading a new book that I haven’t read before, and luckily there was a free one – the Focus Manifesto by Leo Babauta of ZenHabits.com fame.

The whole book boils down to few things for me:

  • Shut down or shut out all distractions, including email, twitter, phones, internet access, noise from outside, etc.
  • Start with one thing that is important today and do only that, which is called the MIT (Most Important Task for today)
  • Follow the Pomodoro technique, at least in concept – focus in a mindful manner in intense periods with short breaks in between

Nice and simple. And very hard to do. But it was surprisingly easy to do today after I read the book last night and today morning and was strongly reminded about the basics. Sometimes, all you need is to step back and revise the basics.

In particular, I am intrigued by the “Disconnect and Connect Working Routine”:

Consider a routine such as the following:

  1. Disconnect for a day (or two). No Internet connection — perhaps no computer at all if using your computer is too much of a temptation to connect. Use an actual paper notepad and pen, writing and brainstorming and making pages of notes or sketches. Make phone calls instead of connecting via email or IM. Meet with people in real life, and get outside. Get a ton of important work done. No mobile devices except for actual phone calls.
  2. Then connect for a day (or two). Take all the notes and work you did during your disconnect, and type them up and email them and post them online and so forth. Answer emails and get other routine tasks done, and then prepare for your next day of disconnect.
  3. Repeat. You can vary the number of days you’re disconnected or connected, finding the balance that works for you.

While some may feel this will limit the work they can do, I think it’ll actually do the opposite: you’ll get more done, or at least more important tasks done, because you won’t be distracted.

You’ll also find it a calming change from the always-connected. It’s a peaceful routine.

What I find interesting is a “mostly offline” mindset as opposed to a “mostly online” mindset I had – I (mostly) used to switch off WiFi for the first two hours of the day. Come to think of it, maybe that’s why I was more productive in Goa where I had severe Internet connectivity issues. Hmmm.

At Barcamp Bangalore 10 on Saturday, I talked about GTD, Pomodoro and Productivity:

NOTE: If you have trouble viewing the web version, there is also a PDF version of my slides.

I was nervous when preparing for this talk because it is not a concrete topic, it’s something abstract and perhaps even illusive for many people, so when I started off my session, I asked people to set aside their cynicism for half an hour, I then established some source credibility, explained my view of how I look at productivity, success and happiness, and how GTD and Pomodoro tie into all this. The presentation above is quite self-explanatory, so I’ll not repeat that again, except for the demo-on-whiteboard part where I did a live session about how to do Pomodoro.

(photo by @the100rabh)

The session went surprisingly well, and most people grokked what I was explaining, which I’m still very surprised about. I guess part of it is because (1) the audience was so interactive and asked questions and (2) most people in the audience have already tried experimenting with todo lists and GTD, so it is a problem they were already facing, so they assimilated what I was saying very quickly.

(photo by @anenth)

The best part about Barcamp is that I got to talk about a personal obsession of mine and I would have otherwise probably never gotten a chance to discuss such a topic in-person with other people who are interested in this topic.

Some of the feedback on my session:

It was even more fun to hear from people when days after the conference, they were actually trying out the Pomodoro technique:

There were many other good sessions in Barcamp that I liked, I especially loved the sessions about the Namma Cycle project and about ShreeKumar’s adventures and how to survive while doing a yatra across the country, talking the locals, etc.

And I really do hope that the Namma Cycle project takes off – Murali who effused passion when talking about it has shown a lot of progress already – got sponsorship, got government buy-in, and is starting off at Bangalore University and has big dreams about turning Bangalore into a cycling city. That seems to be already under way, with the new cycle stand near M G Road.

Overall, even my non-techie wife thoroughly enjoyed the day and was inspired by the people she met at Barcamp. And that really says it all for me on how much I enjoyed going to Barcamp again.

Special thanks to SAP Labs India for hosting the Barcamp in their beautiful campus and the great lunch as well. And not to forget, all the organizers of BCB10, kudos to you guys for making it happen!

P.S. Regarding the Quantified Self phenomenon, I highly recommend reading the New York Times article by Gary Wolf on The Data Driven Life.

Update: Just remembered a related old article of mine – Creativity and Organization is Impact”.

Every once in a while I get an email like this:

Sir, I am a beginner to python and programming. I started with the C++
and found it hard so one day via google I found your perfect tutorial
“A byte of Python”. I read the whole tutorial in one day because it is
so interesting and helpful. Sir, I have created the script to backup
files from directory as you mentioned. Please see the script once and
tell me if I have chances in programming career. Sir I am final B.tech
student and I love programming. But I was rejected by every company
during campus placement because of my poor communication skills and
due to this my confidence level is very low. Sir I have also created a
web based application using PHP, MySQL and Kannel on Debian based
server for intra-college communication. Sir, I am regular reader of
your blog and I respect what you are doing to help freshers like me.
Sir I would like to know if you have any advice for me.

And like this:

I want to thank you about this great book ;-). I am a 20-years-old
student in computer science from Bulgaria and i found this book very
interesting and helpful. I’ve been programming in python for half a
month. I had little experience in C from the university and I wanted
to learn a high level language with simple syntax like Python and then
learn C++ and start writing useful programs. I send you a solution of
the problem in the end of the book that is just a demo version. Can
you give me a hint what i got to improve to make the address book
program better and give me the source code of your solution? I really
want to become a programmer so any advices especially from a man with
your knowledge would be highly appreciated! Thanks.

For a long time, I used to scratch my head for every such email because I really didn’t know what advice I have to offer. I did end up writing How Fresh Graduates Can Grow which a lot of students have liked.

In the past couple of years, I have started replying with just one line – I ask them to read The Passionate Programmer: Creating a Remarkable Career in Software Development by Chad Fowler. I happily  recommend this book knowing that if they actually do read and apply the principles in this book, they can’t go wrong.

I had read this book in its first edition when it was called My Job Went to India and I read it again when the renamed second edition came out.

The title of the book is self-explanatory but what makes the book special from other regular career books is that it is geared specifically to the art of software programming as well as explaining networking and many soft concepts/human aspects in a for-geeks “53 recipes” style.

Some of my favorite recipes/lessons are:

4. Be the worst

Legendary jazz guitarist Pat Metheny has a stock piece of advice for
young musicians, which is “Always be the worst guy in every band
you’re in.” Being the worst guy in the band means always playing with
people who are better than you.

Being the worst guy/gal on the team has the same effect as being the
worst guy in the band. You find that you’re unexplainably smarter.
You even speak and write more intelligently. Your code and designs get
more elegant, and you find that you’re able to solve hard problems
with increasingly creative solutions.

6. Don’t listen to your parents

I remember talking to a friend about potentially moving out of this
company, and he said, “Is it your destiny to work at $bigcompany for
the rest of your life?”
Hell no it wasn’t!_ So, I quickly found
another job and left.

This movement marked the clear beginning of a nonlinear jump in my
success in the software industry. I saw new domains, I worked on
harder problems, and I was rewarded more heavily than ever before. It
was scary at times, but when I decided to be less fear-driven and
conservative in my career choice, the shape and tone of my career – my
life – changed for the better.

15. Practice, practice, practice

When you practice music, it shouldn’t sound good. If you always
sound good during practice sessions, it means you’re not stretching
your limits. That’s what practice is for. The same is true in sports.
Athletes push themselves to the limit during workouts so they can
expand those limits for real performances. They let the ugliness
happen behind closed doors – not when they’re actually working.

Our industry tends to practice on the job. Can you imagine a
professional musician getting onstage and replicating the gibberish
from my university’s practice rooms? It wouldn’t be tolerated.
Musicians are paid to perform in public – not to practice. As an
industry, we need to make time for practice.

Practicing may include learning more about your programming
environment (APIs, libraries, methodologies, etc.), sight reading
(reading new pieces of open source code to improve your ability to
read and understand code), improvisation (introduce new constraints in
small projects to improve your thinking abilities) and so on.

32. Say it, Do it, Show it

You should start communicating your plans to your management. The best
time to start communicating the plans is after you have executed at
least one cycle of the plan. And – this is an important point – start
doing it before they ask you to do it. No manager in his or her right
mind would be unhappy to receive a succinct weekly e-mail from an
employee stating what was accomplished in the past week and what they
plan to do in the next. Receiving this kind of regular message
unsolicited is a manager’s dream.

Start by communicating week by week. When you’ve gotten comfortable
with this process, start working in your thirty, sixty, and
ninety-day plans. On the longer views, stick to high-level, impactful
progress you plan to make on projects or systems you maintain. Always
state these long-term plans as proposals to your manager, and ask for

The most critical factor to keep in mind with everything that goes
onto a plan is that it should always be accounted for later. Every
item must be either visibly completed, delayed, removed, or replaced.
No items should go unaccounted for. If items show up on a plan and are
never mentioned again, people will stop trusting your plans, and the
plans and you will counteract the effectiveness of planning. Even if
the outcome is bad, you should communicate it as such. We all make
mistakes. The way to differentiate yourself is to address your
mistakes or inabilities publicly and ask for help resolving them.
Consistently tracing tasks on a plan will create the deserved
impression that no important work is getting lost in the mix.

43. Making the Hang

Speaking for myself (and extrapolating from there), the most serious
barrier between us mortals and the people we admire is our own fear.
Associating with smart, well-connected people who can teach you things
or help you find work is possibly the best way to improve yourself,
but a lot of us are afraid to try. Being part of a tight-knit
professional community is how musicians, artists, and other
craftspeople have stayed strong and evolved their respective artforms
for years. The gurus are the supernodes in the social and professional
network. All it takes to make the connection is a little less

Of course, you don’t want to just randomly start babbling at these
people. You’ll obviously want to seek out the ones with which you have
something in common. Perhaps you read an article that someone wrote
that was influential. You could show them work you’ve done as a result
and get their input. Or, maybe you’ve created a software interface to
a system that someone created. That’s a great and legitimate way to
make the connection with someone.

44. Already Obsolete

You have to start by realizing that even if you’re on the bleeding
edge of today’s wave, you’re already probably behind on the next one.
Timing being everything, start thinking ahead with your study. What
will be possible in two years that isn’t possible now? What if disk
space were so cheap it was practically free? What if processors were
two times faster? What would we not have to worry about optimizing
for? How might these advances change what’s going to hit?

Yes, it’s a bit of a gamble. But, it’s a game that you will
definitely lose if you don’t play. The worst case is that you’ve
learned something enriching that isn’t directly applicable to your job
in two years. So, you’re still better off looking ahead and taking a
gamble like this. The best case is that you remain ahead of the curve
and can continue to be an expert in leading-edge technologies.

Looking ahead and being explicit about your skill development can mean
the difference between being blind or visionary.

P.S. This lesson was the reason why I started admiring DHH even more after seeing he is not afraid to include CoffeeScript and SCSS in Rails 3.1

51. Avoid Waterfall Career Planning

The important thing to realize is that change is not only possible in
your career but necessary. As a software developer, you would never
want to pour yourself into developing something your client doesn’t
want. Agile methodologies help prevent you from doing so. The same is
true of your career. Set big goals, but make constant corrections
along the way. Learn from the experience, and change the goals as you
go. Ultimately, a happy customer is what we all want (especially when,
as we plan our careers, we are our own customers) – not a completed

I probably put more excerpts from the book here than I should, but I wanted to drive home the point on some of the non-obvious-but-critical points that the book raises that every software developer should ponder about.

Go buy the book / ebook now!

Update: Also see Top 5 Developer Skills That Will Get You Hired or Promoted

  1. Have a list of things to do.
  2. Pick one thing to work on. Start clock.
  3. When tired, stop clock. Take a break.

It worked because of two reasons:

  1. Observing yourself led to the Hawthorne Effect
  2. Time spent per day was a quantifiable measure of productivity.


It worked quite well for more than six months, but it just fizzled out for me. I couldn’t explain why at that time.

In retrospect, I think it was because of a few problems:

  1. It did not solve procrastination. When I knew it was a big task, I would just delay getting started because I had put pressure on myself to not pause the clock early once it was started.
  2. It did not help me stay focused for long. I would lose enthusiasm every few days because I would feel drained.
  3. It was easy to lose track that I was doing time tracking! For example, I would be focusing on an action item, and when something urgent came up, I would just switch to that and would have forgotten about the running clock.
  4. After a few months, it was not satisfactory enough to just look at a number at the end of the day and say “I’ve been productive today.” It just wasn’t doing the trick any more.
  5. If a task was big and could not get completed that day, I would often feel demotivated and frustrated rather than happy about having put effort on the task.

Many people had commented on that article suggesting that I try out the Pomodoro technique. After six months, I did visit that website, but reading “Work in units of 25 minutes, with 5 minutes break in-between” did not stir up my enthusiasm. Same goes for reading the official book.

Then I happened to notice on the Pragmatic Programmers website that they had a book out on the same topic called “Pomodoro Technique Illustrated” by Staffan Nöteberg.

Pomodoro Technique Illustrated book

I have a high degree of trust in the quality of the PragProg books, so I blindly bought the ebook, downloaded and read it. It turned out to be one of the best books I have ever read.

There are plenty of reasons why I loved the book, and having written a couple of books myself, I wish I could write a book like this one – it has a fabulous approach of one page per topic which forced the author to be concise yet insightful, it is backed by extensive research as indicated by the references to other books in the footnotes, it has an engaging experience via the usage of sketches which presents the topic at hand in a fun spunky manner, and generally speaking, I really liked it’s whole “no fluff, just stuff” approach to topics.

And I have not even mentioned the content of the book itself. The second chapter “Context” alone is worth reading this book for. It explains a lot of the psychology on why the Pomodoro technique is designed the way it is. It was a powerful motivator for me to try out the technique and consequently experience the benefits.

First, let’s explain the name “Pomodoro”, it’s the Italian word for “tomato.” This name was used because Francesco Cirillo, the creator of this technique, used his kitchen timer which was in the shape of a tomato.

Now back to the book… let’s take what’s wrong with the simple ‘time tracking’ approach mentioned at the start of this article and add a few extra steps that the Pomodoro technique has and show how it provides benefits.

The first problem with simple time tracking is fizzling out of energy because of pressure on oneself to work for long uninterrupted hours. Our lizard brain just cannot keep doing that for long, so you split time into units of 25 minutes with breaks:

  1. Have list of things to do (the “Activity Inventory” sheet).
  2. Pick one to work on. Start clock.
  3. Stop after 25 minutes (one pomodoro). Relax your body and mind, for 5 minutes (break).
  4. After 4 pomodori, take a longer break of 15-30 minutes.

As Staffan notes in the book (Page 56):

During your breaks, you’re not allowed to think about the previous Pomodoro or about the next Pomodoro. Don’t make important phone calls or start writing important emails. Your brain needs to absorb the last 25 minutes of challenging thinking.

If your stress system is never neutralized by mental recreation, you’ll notice a number of symptoms. The thinking system in the brain stem is affected, as well as the senses of the limbic system and in the end your biological rhythms. For example, your sleep might be affected.

At chronic stress levels, the capacity of your working memory and your ability to concentrate will fall. The joy of working will be transformed into anxiety – inspiration is altered to irritation.

This rhythm of 25 minute units leads to a sustainable pace (Page 74):

Sustainable Pace

Overview and control are the opposite of flow and deep creative-thinking processes. You can’t see the big picture and focus on details at the same time. Your focus will benefit from a process where you minimize the points where you have to sort and allocate priorities. But you need to do both. And you also need recreation time on a regular basis in order to absorb and recharge. So, you have three mental states to switch between. You alternate between them, but what triggers the mental state change?

I use three hats: the recreation hat, which is a jester’s hat; the working hat, which transforms me into the lion who is 100 percent focused on hunting the antelope; and the strategy hat, which makes me feel like a king when I’m sorting and deciding what to do during the next work iteration.

I come to work wearing the recreation hat. I put on the strategy hat and choose what activity to focus on. Then I put on the work hat, wind up the clock, and begin to focus. The clock rings after 25 minutes, which reminds me to put on the recreation hat. After a short break, I put on the strategy hat, and so on.

This timebox schedule that interleaves to focus, to prioritize, and to rest gives me a sustainable pace.

The second problem is that this a bit too lax in that there is no race to finish something, there is no goals. So let’s start every day with a subset of the todo list and make a commitment to oneself to finish that subset on that day with the caveat that it is okay if we don’t accomplish it:

  1. Have list of things to do (the “Activity Inventory” sheet).
  2. Consult your priorities and make a list on what to work on today (the “To Do Today” sheet)
  3. Pick an activity from the To Do Today sheet to work on. Start clock.
  4. Stop after 25 minutes (one pomodoro). Relax your body and mind for 5 minutes (break).
  5. After 4 pomodori, take a longer break of 15-30 minutes.

As Staffan says in the book (Page 51):

Pomodoro to do today sheet

Distinguishing between the Activity Inventory (a traditional to-do list) and the To Do Today (an extracted commitment) is a compulsory strategy for doing the right thing, getting started now, and putting optimum effort into your work. It gives you clear goals and personal control.

The third problem is that there is frustration when a task is not finished on a given day because the task is so big. So we break down how long the task will take and focus on that as well as finishing the task:

  1. Have list of things to do (the “Activity Inventory” sheet) plus number of pomodori you estimate for each task.
  2. Consult your priorities and make a list on what to work on today (the “To Do Today” sheet)
  3. Pick an activity from the To Do Today sheet to work on. Start clock.
  4. Stop after 25 minutes (one pomodoro). Mark one pomodoro completed for the task on the To Do Today sheet. Relax your body and mind for 5 minutes (break).
  5. After 4 pomodori, take a longer break of 15-30 minutes.

This gives the physical pleasure of marking a X on successful completion of a pomodoro. This also means it can help measure our progress on whether we are on track to finish the task in the estimated number of pomodori.

As Staffan says (Page 95):

Planning based on estimates makes your commitment for the day more realistic, and as a result, your motivation will improve. Recording the number of completed Pomodoro every day gives you a good understanding of your Pomodoro velocity.

So far so good, but how do I know whether I’m improving myself day over day? Now we shall add tracking to the technique:

  1. Have list of things to do (the “Activity Inventory” sheet) plus number of pomodori you estimate for each task.
  2. Consult your priorities and make a list on what to work on today (the “To Do Today” sheet)
  3. Pick an activity from the To Do Today sheet to work on. Start clock. Mark every internal interruption with an apostrophe next to the task name and mark every external interruption with a dash.
  4. Stop after 25 minutes (one pomodoro). Mark one pomodoro completed for the task on the To Do Today sheet. Relax your body and mind for 5 minutes (break).
  5. After 4 pomodori, take a longer break of 15-30 minutes.
  6. At the end of each day, note down statistics that you are interested in w.r.t. your performance for today in the Records sheet.

Of course, this tracking only works if you make sure that each pomodoro is atomic (Page 61):

Never switch activities in the middle of a Pomodoro. If you finish an activity halfway through a Pomodoro, spend the rest of the time over-learning. For example, if I finish early, I review what I have done, I repeat what I have learned, I see whether I can enhance my work, or I note new conclusions on paper—until the kitchen timer rings.

So, you’re not allowed to impulsively switch activities in the middle of a Pomodoro. In fact, just having the option to switch in the middle is a recurring disturbance. You can’t just stop in the middle of a Pomodoro and take a break either. Then you will lose the rhythm. And since the stopped Pomodoro was shorter, it will not be compatible – in terms of tracking – with other Pomodori.

Examples of statistics include basic things like number of pomodori you committed to at the start of day versus the actual number of pomodori spent.

It can go as comprehensive as you wish, for example take interruptions we tracked during each pomodoro – we can track the average number of internal interruptions (your mind wanders) per pomodoro, the average number of external interruptions (somebody at work asks you something or you get a call) per pomodoro, what time of the day you get most interruptions, how long into each pomodoro you get your first distraction, and so on.

Pomodoro interruptions tracking

The point is to keep it simple and measurable. And something that motivates you to be productive each day. You should have a little ceremony but not too much otherwise it becomes self-defeating.

There is a LOT more to this than meets the eye and this is where Staffan’s book makes a difference. I would highly recommend reading this book. I’m making a mental note to myself to make this book one of the most important books that I will make my kids read and practice when they are in school. It is a valuable life survival tool that I feel they must learn at an early age (the next generation is going to be even more competitive!).

The best part is that I can fit GTD and Pomodoro techniques together. I remember reading a comment somewhere which said “GTD helps you answer what to do. Pomodoro helps you answer how to do it.”

Last, but not the least, the important thing to keep in mind is that Pomodoro technique forces you to adopt good habits. In more technical terms, “conditioned reflexes are key.” The act of marking X against an action, the act of crossing an action item when it is done, the act of making your brain instantly focused at the start of a Pomodoro (as well as the ticking sound of the clock, if you’re inclined), etc. they all help you adopt good habits. And I personally believe that good habits are the secret behind most successful people.

As Staffan says in the book (Page 48):

First prioritizing and then focusing on the most important activity will make you feel safe and sound. Otherwise, your focus will constantly be disturbed by questions like “Am I really doing the most important thing now?” At the start of my day, for instance, I first look at the whole backlog and pick the most important activity. Then I stick to it for a short timebox, before I reevaluate whether it’s still the most important one. In my mind I replace “I must finish” with “Where can I start?” and I replace “This project is so big and important” with “I can take one small step.”

Without the Pomodoro technique, figuring out how to start each workday can be hard. You might feel like you have a billion things and you can’t possibly do everything simultaneously. So, you never really start, and suddenly it’s lunch time.

Pomodoro itinerary

On a related note, there are variants to this technique, they can be called Kanban or they can be called GTCD but I hope you get the gist of why this technique works.

If you’re looking for tools, I would suggest these two:

  • For Linux and Windows – Focus Booster app
  • For Mac – The Pomodoro tray item – I like this one because it uses the Mac’s built-in voice feature to make announcements of the start and end of a Pomodoro.

Just in case you were curious, I revised the book this time in 5 pomodori, and wrote this blog post in 5 pomodori :-)

So what are you waiting for, go read the book now! And do write in about how the Pomodoro technique has helped you.

Update : “We believe what we want to believe, so it’s better to get data” — B J Fogg in an interview with Ramit Sethi – I guess this is the most succinct answer to when people ask me why use the Pomodoro technique :-)

I find it surprising on how little time coders spend on their development environment (the “dev env”). And especially, I find it amusing that I can find, refactor and test code way faster than the Netbeans IDE users in my office, with just a shell and Vim setup.

So why is a good dev env necessary? Because we do searching, refactoring, editing and updating of code much more than appending fresh code, and this also applies to code that you wrote half an hour ago, because you will want to quickly refactor it when a new constraint, a new requirement, a new design or a new idea comes to your mind.

I learned this lesson while I was writing my Vim book. Since then, I have been investing quite a bit of time on my vimrc file, heavily customized to my liking.

To give one very quick example – I like the cursor to always be at the middle of the window (as opposed to at the bottom of the screen when you’re scrolling down), so that I can see the lines of code before and after the current line. To achieve this, you simply set scrolloff=999 and you’re done. A one-line setting, but it makes a world of difference in usage.

Extrapolate this to dozens of customizations and you have just optimized your environment for lesser time at the keyboard, lesser time fighting the editor, and more time on the actual code. You do not want to break your flow of thought because you’re unable to quickly switch between the right files (say, between the controller and the view files), and so on. [1]

These customizations are stored in .vim and .bashrc files, collectively referred to as “dotfiles”. I have been asked quite a few times by readers of my book to share my dotfiles, but I was not comfortable to share it because I felt it was too hacked up and did not have a good “base”.

So when I came across bash-it and vim-addon-manager, I knew they were good foundations and a good excuse for me to overhaul my bash and vim setups.

And lo, behold, my dotbash and dotvim repos (on GitHub).

These are my actual working environments at office and on my personal laptop, so if you don’t agree with some of my defaults, fork away.

Now, on to what is interesting about my setup…

What bash-it provides

bash-it provides great defaults and aliases, right from .. as a shortcut for cd .. and ... for cd ../.. to bash completion setups for git, rake, etc., and of course, a gorgeous theme to use:

Bash prompt

The best part though is it’s neat organization into aliases, completion, custom, lib, plugins, themes and template folders. That makes a big difference in the long run, for the same reasons why a cleanly modularized codebase is better than one giant script.

And it will get various new features over time contributed by the community, example, completion of server names for ssh.

What vim-addon-manager provides

vim-addon-manager provides a super-simple way to install plugins into separate folders and then use them all, instead of lumping all of them together into a .vim folder. Just add the name of a new Vim plugin to the list of plugins you want to load, and it will automatically fetch the plugin and install it for you! This makes it easy to play around with new plugins as well as a simple way of having the latest version of the Vim plugins.

I use vim-addon-manager, but there are alternatives – others prefer pathogen.vim and there is also Vimana which gives you an apt-get-like command to search for Vim plugins. Choose your weapon.

There are caveats to vim-addon-manager, mainly that all plugins don’t seamlessly work with it. For example, I couldn’t get pyflakes.vim to work with it, so I had to unzip pyflakes into my regular .vim directory to use it.

My Bash customizations

Ever since I saw gemedit, I wanted something like that for Python eggs, and I realized that it was easy because Python modules have a __file__ attribute that I can use, and I created my own egg_edit command to do the same trick. Similarly, I have my own sync command with the settings that I prefer, etc.

tmux setup

tmux is a modern alternative to GNU Screen which is a common arsenal in any Unix coder’s war-chest. I prefer to use tmux because it makes it easy to script sessions which makes it super-easy to start a new session working on a project. For example:

Put this as flask-boilerplate-tmux.bash into the custom folder of your bash-it/dotbash folder, and then you can run flask-boilerplate-tmux any time to start a new session to work on the flask-boilerplate codebase! ( Update : Check out Teamocil which will allow you to do the same with a simple yaml config file )

I have a highly customized tmux configuration which sets many good default settings, especially starting the numbering of the windows from 1 (switching between 0 and 1 is painfully because they are at the opposite ends of the keyboard).


A good Bash plugin to use is autojump which monitors which directories you spend most of your time in, and then makes it easy to jump to your most favorite directories using a simple j command.

Don’t forget to use jumpstat to see which are those directories. Also, bash-it/dotbash provides a command called rh that does something similar.

Note that I have started using autojump only recently, so I don’t have as much experience using it as the other tools.

My Vim customizations

I have a fairly customized vimrc, right from changing the status line to providing shortcuts like :A to copy the full buffer to the clipboard and :B for vice-versa, which I find it very useful in situations such as I am writing this article in Vim and can quickly copy/paste into WordPress when I am done with the draft. I also have a o shortcut to open a URL that the cursor is on, and many other goodies.

Vim plugins I use

There are three Vim plugins which are must-have for me:

First is command-t.vim which is a “fuzzy finder” to quickly jump to another file under the current directory.


Second is ack.vim which allows you to intelligently grep your source code for patterns and then jump to each occurrence in a split-window fashion.

My favorite feature is that I can search my code with :Ack --python or :Ack --ruby and it will ignore all the JavaScript libraries which can have the same variable or function names.


Third is conque shell which allows you to to create a split window which can be any interpreter prompt.

The best part is that you can use a shortcut e (assuming the default mapleader) to send the visually selected text to the interpreter prompt as if it was copy-pasted and it will execute it! This is incredibly helpful when you want to iterate the development of a multi-line function or fragment of code and you find extracting that code to a separate file and editing that file to be a pain (The interpreter prompts are designed for playing around with one-liners, they are simply not built for multi-line code).


I have the following lines in my vimrc to quickly create ConqueShell sessions:

command Shell :set nolist | ConqueTermSplit bash
command PythonShell :set nolist | ConqueTermSplit python

So, I quickly run PythonShell to create a new session.

Setups by others

For other Vim setups, see the Janus repo on GitHub which is used by Yehuda Katz himself. You’ll find many more on the dotfiles website.


I’m hoping this article will help Vimmers and Bash users to broaden their usage and help them be more productive, the same intention behind my Vim book:

“I used to play with vim for years. I think this book would have to save me much time if it was written 10 years ago! Anyways, thank you for this amazing work you are doing.”

— turky_samy (at) hotmail (dot) fr

If you like what you have read so far, then go ahead and install dotbash and install dotvim.

Bottom line:

“Give me six hours to chop down a tree and I will spend the first four sharpening the axe.”

— Abraham Lincoln

[1] The flip side though is that I have been told “You’re the most mysterious guy in this office. No one understands what you’re doing when we see you coding.” Heh. Hopefully, it is not as mysterious after this article.

I recently read the book The Checklist Manifesto by Atul Gawande – a respected surgeon, noted author, MacArthur fellow, New Yorker staff writer, and a professor at Harvard Medical School.

The premise of the entire book is the author’s dive into the concept of a checklist and how they have dramatically improved the efficiency and reliability of professionals in the medical profession, the aeronautical industry, the architecture industry and even the venture capital industry.

So what is a checklist? It is the minimum set of critical steps for any task to be achieved.

Why are they useful? Because checklists protect against many kinds of dangers. For example:

  1. “Faulty memory and distraction are a particular danger in what engineers call all-or-none processes – if you miss just one key thing, you might as well not have made the effort at all (whether it is buying ingredients for a cake or preparing an airplane for takeoff).”
  2. “People can lull themselves into skipping steps even when they remember them. Especially in busy and stressed workplaces (such as hospitals). In complex processes, certain steps don’t always matter, may be it affects only 1 out of 50 times. But when it does, it can be catastrophic.”

One of my favorite passages in the book is as follows (it’s a longer excerpt than I would have liked, but all the parts were really important, so please read the whole passage to understand what’s going on):

Checklists remind us of the minimum necessary steps and make them explicit. They not only offer the possibility of verification but also instill a kind of discipline of higher performance. Which is precisely what happened with vital signs – thought it was not doctors who deserved the credit.

The routine recording of the four vital signs did not become the norm in Western hospitals until the 1960s, when nurses embraced the idea. They designed their patient charts and forms to include the signs, especially creating a checklist for themselves.

With all the things nurses had to do for their patients over the course of a day or night – dispense their medications, dress their wounds, troubleshoot problems – the “vitals chart” provided a way of ensuring that every six hours, or more often when nurses judged necessary, they didn’t forget to check their patient’s pulse, blood pressure, temperature and respiration and assess exactly how the patient was doing.

In most hospitals, nurses have since added a fifth vital sign: pain, as rated by patients on a scale of one to ten. And nurses have developed yet further such bedside innovations – for example, medication timing charts and brief written care plans for every patient. No one calls these checklists but, really, that’s what they are. They have been welcomed by nursing but haven’t quite carried over into doctoring.

Charts and checlists, that’s nursing stuff — boring stuff. They are nothing that we doctors, withour extra years of training and specialization, would ever need or use.

In 2001, though, a critical care specialist at Johns Hopkins Hospital named Peter Pronovost decided to give a doctor checklist a try. He didn’t attempt to make the checklist encompass everything ICU teams might need to do in a day. He designed it to tackle just one of their hundreds of potential tasks, the one that nearly killed Anthony DeFilippo: central line infections.

On a sheet of plain paper, he plotted out the steps to take in order to avoid infections when putting in a central line. Doctors are supposed to (1) wash their hands with soap, (2) clean the patient’s skin with chlorhexidine antiseptic, (3) put sterile drapes over the entire patient, (4) wear a mask, hat, sterile gown, and gloves, and (5) put a sterile dressing over the insertion site once the line is in. Check, check, check, check, check. These steps are no-brainers; they have been known and taught for years. So it seemed silly to make a checklist for something so obvious. Still, Pronovost asked the nurses in his ICU to observe the doctors for a month as they put lines into patients and record how often they carried out each step. In more than a third of patients, they skipped at least one.

The next month, he and his team persuaded the Johns Hopkins Hospital administration to authorize nurses to stop doctors if they saw them skipping a step on the checklist; nurses were also to ask the doctors each day whether any lines ought to be removed, so as not to leave them in longer than necessary. This was revolutionary. Nurses have always had their ways of nudging a doctor into doing the right thing, ranging from the gentle reminder (“Um, did you forget to put on your mask, doctor?”) to more forceful methods (I’ve had a nurse bodycheck me when she thought I hadn’t put enough drapes on a patient). But many nurses aren’t sure whether this is their place or whether a given measure is worth a confrontation. (Does it really matter whether a patient’s legs are draped for a line going into the chest?”) The new rule made it clear: if doctors didn’t follow every step, the nurses would have backup from the administration to intervene.

For a year afterward, Pronovost and his colleagues monitored what happened. The results were so dramatic that they weren’t sure whether to believe them: the ten-day line-infection rate went from 11 percent to zero. So they followed patients for fifteen more months. Only two line infections occurred during the entire period. They calculated that, in this one hospital, the checklist had prevented forty-three infections and eight deaths and saved two million dollars in costs.

If that, my friends, does not explain the power of a simple checklist, I don’t know what can.

And yet, despite these results, people were reluctant to adopt checklists. In fact, I know you are dismissing the idea right now. Try writing down 5 reasons why checklists are stupid and won’t work for you. Now write 5 reasons why it will work. Think over it. I bet most people find the 5 reasons against checklists, easier to write, but will be convinced about it after writing the 5 reasons for it.