Breaking the Cycle

One of the recurring themes in my quest to be organized is that of todo list staleness. Inevitably, the cycle looks like this: I sit down, and in a burst of creative energy I create a beautifully crafted, perfectly organized todo list. It’s a thing to behold. Everything is broken down into nice orderly projects, each with a clearly identified next action. There are contexts assigned to everything: this one is an errand, this one needs to be done online, this one needs to be done in the kitchen. It is, without a doubt, the epitome of organization. And this time, it’s going to stick. I’m going to review it daily, weekly, monthly to make sure that everything is current. This todo list will give me productivity superpowers.

This generally lasts less than a week.

Fairly quickly, I stop reviewing the todo list. For reasons unknown, I’ve never been able to develop the habit of reviewing my lists on a daily basis. Once I stop reviewing the list, I stop putting things into it consistently. Often, I will write them down on paper (or in a text file, or perhaps in Evernote), and then do them without ever entering them into whatever tool I’m using. Once this happens, I end up using the simpler tool as my whole todo list. I stop organizing things in projects, I just write things down, and then do them.

The next stop on this train is that I stop reviewing things weekly. This inevitably creates a bit of anxiety. I know that there are things in there that I should be doing, but I’m not. I’m focused on the things on my little todo list. It’s a paradox, because on the one hand I feel productive checking things off of my little list. On the other hand, I know that this means I’m not making the best use of my time. It means that my todo list is skewed towards the most recent things that I’ve put on it, rather than things on the larger list that might have more strategic value. To borrow a phrase from Stephen Covey, it’s the urgent, not the important.

In the end, the list atrophies. It’s not updated anymore, and starts to resemble a decaying building that’s been left to sit for decades. It’s a mix of things that have already been completed but never checked off, projects that are long-past relavant but still sitting on the list, and poorly worded tasks, the context of which have long been forgotten. It’s Exhibit A in the argument for the Broken Windows Theory. I could go through and get everything up to date again, but I don’t. Mostly, I suspect, it’s just too overwhelming. There’s lots of stuff there and my eyes just glaze over when I look at it.

Inevitably, in a fit of productive frustration, the cycle begins again. Sometimes it’s a restart with the same tool, purging the old and busted, and replacing it with the new hotness. Quite frequently, however, it’s with a new tool altogether (I think I’m on my sixth or seventh system by now).

In the most recent cycle, I switched tools again. This time from Evernote (which is an awesome notetaking tool, but a very poor todo list manager, at least for people with more than a handful of things going on) to Omnifocus. I’ve watched Omnifocus for years and always viewed it with quite a bit of interest. I’m a GTD advocate (even if I frequently fall off the wagon) and it was designed from the ground up to work well with GTD. It’s got great mobile apps, and a top notch desktop experience as well. The reason I hadn’t used it before now is that I spend a good portion of my day using Windows. Not by choice, mind you, but it pays the bills. Without a solid cross platform experience, I didn’t really think I could be productive. But now that I work from home, and have easy and constant access to not only my iOS devices, but my Mac as well, it becomes a little more practical. So I plunked down my cash on the counter and bought into the entire ecosystem.

So far, Omnifocus has been great. But predictably, there are signs of the cycle repeating. I’ve gone days or weeks without even looking at it. I’ve got a small, hand-written list on an index card (the amazing Frictionless Capture Cards). There are things in Omnifocus that are certainly out of date, and there are projects that I’m working on that aren’t in there at all. The first window is shattered.

There’s hope though. Omnifocus has one thing that I have yet to see anywhere else, which is a review mode. It exists in the desktop app, but it really shines in the iPad application. It works like this: you tap Review, and Omnifocus takes you through every single project in your list, and presents it to you one at a time. You can look it over, check things off that have been completed, and add things that might be needed. Then you mark it as reviewed, and Omnifocus gives you the next item. It’s brilliant. You only see one project at a time, so it’s much less overwhelming (at least to me). Once I’m done with the review, everything is current and I feel much more relaxed. It doesn’t matter how long it’s been since the last review, in less than an hour I can be completely current.

So after decades of using tools that never stuck for long, I feel like I’ve finally found the one that works the way my brain does. And while it’s not perfect, it suits me well.

The cycle is broken (for now).

How to Make the Best Cup of Coffee at Home

I am a huge fan of coffee and over the years I have tried a lot of different means of preparing it. I currently own a french press, a drip maker, and a stovetop espresso pot. All of these make good coffee, with each having its own set of pros and cons. Last year, however, I discovered the best method for brewing coffee: Aeropress. It makes delicious coffee, takes up almost no space in your kitchen, and cleanup is easy.

The Aeropress works kind of like an espresso maker, though at a much lower pressure. The coffee it produces is espresso strength. This means you can drink it like an espresso or use it to create espresso-based drinks like Cafe Au Lait or Capuccino. I add hot water to mine to make an Americano.

Since getting the Aeropress, it’s been the only method I’ve used to brew coffee. It’s replaced the drip machine in our kitchen. It takes up almost no space, travels well, and produces consistently great coffee. Perhaps the greatest feature is the one I haven’t mentioned yet: price. It will set you back a little more than \$20, much lower than a decent home espresso machine or even a drip coffee maker. It’s great for traveling or camping. Any place you can make hot water, you can make coffee with the Aeropress.

One caveat: you will need a coffee grinder, or a place to buy beans that will grind them for you. Coffee ground for a drip coffee maker won’t work (which rules out pretty much all pre-ground coffee you would get at the store). You need grounds that are somewhere between espresso and drip. You’re really going to want a conical burr grinder, similar to this one: I suspect if you’ve read this far than you either have one or are willing to buy one.

In summary: If you enjoy great coffee, you need an Aeropress.

To get an even better idea of how it works, check out this short video:

Steve Jobs

Like Marco Arment I’m not qualified to eulogize Steve Jobs, but I owe a lot to him so I need to say something.

My first computer was an Apple //c. 1985. I spent a lot of time on that computer. A lot. Probably an unhealthy amount.

I was a nerdy kid to begin with, and I instantly fell in love with it. I spent endless hours on that computer. Playing games, writing programs in BASIC, and generally just exploring the new world that it opened up for me. Those hours spent in front of the computer paid off. I went on, years later, to write code professionally. It’s not an exaggeration to say that owning that Apple //c shaped who I became.

I’ve admired Steve Jobs since I was old enough to know who he was. When he founded NEXT, I desperately wanted one of those beautiful (and expensive) systems. I’ve seen every movie Pixar has put out. I’ve been inspired by his business sense, his design savvy, and his drive. He’s accomplished more in his abbreviated lifetime than most people could accomplish in ten. His Stanford commencement speech stands as one of the most inspiring things I’ve heard.

My latest computer is a MacBook Air. I spend a lot of time on that computer. A lot. Probably an unhealthy amount.

Godspeed, Steve Jobs.

Training Your Technical Staff When You Don't Have a Budget

When budgets get tight, it can be difficult to provide adequate training for your staff. Over the last couple of years, I’ve found some ways to provide some training even in the face of a shrinking (or non-existent) budget.

Regional conferences

If you still have some budget, but maybe just not as much as you are accustomed to, look to smaller regional conferences as an alternative to the larger national ones that are in major cities. If you’re fortunate enough to live in a city where a conference is being held, you might get out of having to pay for travel at all. This past year, the excellent No Fluff Just Stuff conference made a stop in our town, and I was able to send two developers plus myself to it for a fraction of what it would have cost to send them away somewhere and pay airfare and hotel on top of the conference cost. I personally attended the Windy City Rails conference this year which was a single day for only \$150. While the smaller conferences may not have all the speakers you would get at a larger one, I’ve been really surprised at the quality of the speakers that these conferences draw.

Books

My team has done this for the past year or so. I buy a copy of a book for each person, and we meet once a week to discuss a chapter at a time. Have people take turns leading the discussion. My experience has been that these are most productive if you tackle a topic that your team agrees is currently a pain point, as they can take the information they learn and apply it to their current project. We’ve read through The Pragmatic Programmer, Pragmatic Unit Testingin Java, and are going to move on to Don’t Make Me Think next.

Hashrocket has actually taken this a step further and broadcast these live.

Videos

It’s become commonplace for conferences to record their talks and make them available online for free. Additionally, a number of larger user groups do the same. There are a nearly endless number of videos on a wide variety of topics that are available online. Pick a video (maybe two if they’re short), watch it as a group, and then discuss it afterwards.

Here are a few sources I like:

Peer to Peer

We’ve done this even before our training budget shrank. Have people take turns presenting on a relevant topic that they are passionate about. This works well on a few levels: those listening get to expand their knowledge, and those presenting will often develop a deeper understanding of their topic. If a presentation is used, post it somewhere so that people who join the company later can benefit.

So what have I missed? What do you do to keep your skills current when you can’t get money for training?

The Two Kinds of Programmers

In my time as a developer, and now managing a team of developers, I have come to realize that there are two kinds of programmers: the Journeyman and the Craftsman. These terms aren’t mine - I’ve seen them used other places - but they describe the developers I’ve worked with pretty well.

The Journeyman

…knows one programming language.

…knows one operating system.

…can’t be bothered to learn something on their own.

…doesn’t know anything about the operating system or hardware their applications run on: “Someone else takes care of that”.

…never masters his tools. “I know my way around my IDE, that’s good enough”

…doesn’t refactor: “It’s ugly, but it works. Leave it alone!”

…only learns about the part of the system they are working on. No need to learn the rest of the system: “That’s not my job”.

…doesn’t want to take on an unfamiliar technology: “I haven’t had any training on x”.

The Craftsman

…knows a handful of programming languages, and is always on the lookout for the next one he should learn. He knows that learning any new language will stretch his mind and make him a better programmer in the language he uses day to day.

…devotes time to learning about new technologies, and helps to make others aware of them.

…understands the platform and operating system his applications run on, because he knows that’s the only way to diagnose many problems.

…masters his tools. He can perform magic in his chosen editor, and is always looking for ways to make himself more efficient.

…rarely passes up an opportunity to broaden his knowledge of the system he is working on.

…is always willing to take on something he’s unfamiliar with. He can pick up most things pretty easily, and enjoys the challenge of learning something new.

One craftsman is worth three or four journeymen. Easily.

It’s the journeymen whose jobs often end up moving overseas (and rightfully so, they add little, if any, value).

The longer I manage development projects, the more I value the craftsmen I have around me.