David Sparks and Jason Snell started a new podcast about going indie in general called Free Agents. The first episode, The Temptation of Yes, is so packed with good stuff that I recommend you listen to these guys for 35 minutes.
There was one thing in particular that stuck with me: the framework for making decisions and taking on new stuff. Jason put it this way:
- There are things I want to do,
- there are things I have to do, and
- there are the things I do.
At first the enumeration sounded familiar: “Eisenhower, got you.” But it ended weirdly and the 3rd option didn’t make sense until they explained: I take on this new project because it fits the things I already do. It’s a conservative mindset. One that doesn’t incorporate change or growth or deliberation or anything you’d call making a conscious decision.
It’s the category of things that stop you from making long overdue adjustments to your schedule. It’s the stuff which attracts more of its kind: work you can do but not enjoy, for example. Or work below your skill level. Easy work.
As an indie, you want to go out there and do amazing things. Especially us programmers don’t want to stop once we roll: work projects, side projects, research, everything revolves around new technology. Imagine being a freelancer when node.js was so new it wasn’t even hyped. Imagine you were still only taking freelance jobs for HTML and CSS front-end web development. The Future was just around the corner. But you’re a front-end web person, so why bother? There’s time to do that later. Always later.
So the three Snell Categories of Work translate to this:
- My vision or mission; things that make me grow.
- Supporting work to keep everything else moving. Chores, errands, taxes, invoicing. Basis-of-existence level maintenance. Greasing the wheels.
- My circle of comfort. Easy stuff. Stuff that keeps me where I am right now. Security.
Nobody particularly likes leaving her comfort zone.
There are open source projects that interest me but which I cannot really grasp at the moment. Because I have to learn something new first. For example:
- xi editor, a Cocoa front-end app that delegates all the real editing work to an RPC backend service. I have no clue about the language Rust and what the background service does.
- ReactiveCocoa or RxSwift to finally get to know reactive programming.
Then there are challenges within the Cocoa sphere: I am not fluent with CoreAnimation, video and image editing, or working with CoreText. All these are excellent candidates for a “learning” list to keep track of where I want to go.
Being honest and transparent with yourself is important to make good decisions. A list of things you want to learn can help staying sharp.
In a similar vein, David has “No” list: a reminder what kind of projects he turned down. He can compare incoming requests to projects he declined in the past. Nobody likes to say no. But this list helps him gauge if declining a request should really make him uncomfortable: didn’t he turn down even cooler projects for valid reasons in the past? Magically, this realization discounts the severity of declining.