I know you’re supposed to live in the present, but I get a lot of value from thinking about futures and what I can learn from the possibilities. Imagining different futures helps me see what I can do, choose to do some things instead of others, and keep track of how I’m doing along the way.
In the problem-solving model that Tim Hurson shares in Think Better (2008), you come up with potential Target Futures and prioritize a few based on three factors:
- Influence: Is it something you have influence over?
- Importance: Is it important enough to you that you’ll put in the work to get there?
- Imagination: Can you solve it with an off-the-shelf solution, or do you have to come up with something new?
A good future pulls you toward it. You want it, and so you act on it.
I periodically think about what the target futures for my interests look and feel like. Last year, I wrote about how I don’t need to get to “awesome” in everything. Sometimes it still helps to think about what that “awesome” might look like, though. I realized that I don’t have to use the same definition of “awesome” that other people use. Figuring out what “awesome” means to me can help me identify the differences between my current state and my future state, and that shows me what I can do or what I can learn to get there. I want to pick differences that are mostly under my control, that are important enough to call me to action, and that may even create something new in the world.
I figured out a little more about what tickles my programming brain. I’m not the kind of person who builds massively popular projects with elegant architecture. Someday I might do a good job at building bridges for other people so that they can do even better. What makes me really happy right now, though, is writing small, idiosyncratic pieces of code that are tailored to my particular needs (or that make things a little better for people I feel good about). On the surface, this doesn’t have widespread impact. but I guess it also creates a future-pull – showing other people that this sort of play and customization is possible. So, if I follow that vein, amazingness looks like:
- Seeing clear, simple ways to address challenges or take advantage of opportunities
- Pulling the pieces together (APIs, etc.)
- Making reasonable interfaces
- Writing decent code
- Being proficient with tools
- Getting good at that delivery and feedback cycle, whether it’s for other people or for myself
I’m getting a lot more practice in working with the APIs for services I frequently use. I’ve scripted quite a few small tools that interact with Flickr, and I’m looking forward to more experiments with Org Mode and Evernote. I’m also working on learning more about the tools I can use: debuggers, frameworks, even coding conventions.
Working out loud
What about working out loud? What would that look like if I could do it really, really well?
I’d keep detailed notes – probably in Org Mode, since that lets me mix everything together: snippets, links, research, TODOs, etc. My notes would help me get back on track after interruptions or delays. Whenever I finish a small chunk, I publish a post, since that’s easier to work with than waiting until I’ve finished everything. I’ll know if it’s working if I:
- don’t get as frustrated with dead ends, because I can just backtrack up the trail
- can look up my reasons for things I’ve forgotten
- can help other people find out about things they can do, take advantage of example code, or probe my understanding
- get the occasional suggestion from people on how to improve what I do
I’m focusing on getting more of my thinking out the door. One of the things I’m currently figuring out is how to balance logical order and chronological order when writing up what I’ve learned. On one hand, I want to save people time by pointing them straight to stuff that worked. On the other hand, it can be useful to see the thinking process. I’m experimenting with using signposts (like the “later in this post” part of one of my write-ups). I’m also experimenting with harvesting tips and putting them into occasional other-directed posts.
I don’t need to get to Pulitzer-prize-winning awesomeness. I want to get better at figuring things out and sharing them. I think this involves being able to:
- wrestle with vagueness and beat it into specificity
- share practical tips
- extract ideas from research, other people’s thoughts, and my own experiences so that I can help people save time
- and back up everything reliably!
If I can get better at seeing things, that’s a really useful bonus. Since the easiest way of doing that seems to be sheer accumulation of experience, I’m focusing instead on other things that I can get better at first. Research is one of those skills I want to build up again, as there can be lot of value in a good literature review.
I’m also working on building up and linking to different chunks so that people can read at the level of detail they want. By setting constraints on chunk size and getting better at managing an archive of linkable things, I hope to be able to organize thoughts more flexibly.
I imagine that as I get a sense of questions (other people’s and my own) and good sequences to answer those questions in, I’ll get better at putting together guides that lead people through those sequences. This helps because sometimes it takes a lot of knowledge to figure out what the next good question is or how to formulate it. For me, that’s what packaging is about: making sense of things, and then sharing that in a way that helps other people make sense of things too.
I’m still far from getting really good at this, but as I build up chunks and figure out what order to put them in, I’ll get better.
When it comes to the things that you’re learning, what are different ways “awesome” could look and feel like? Are those futures powerful enough to pull you toward them? What do you need to do to get a little closer to those futures?