16
Aug
2019

Agile Planning for Side Projects

Am I the only one who is considering sprint planning "sessions" for personal side projects? Also, am I the only one who is considering divvying up work for side projects into sprints? Am I crazy? Wouldn't this take the fun out of side projects? Wouldn't agile planning side projects make them into "work" stuff? Isn't the whole point behind side projects to let loose one's inner creative spirit and not let "rules" and "planning" kill the fun and turn a hobby into work?

Let me take a step back and explain how I arrived at the insane notion that a bit of planning could help make the chaos among my innumerable (mostly unfinished) side projects a bit more manageable. First, I'm a geek — I know, surprise! — with a curiosity level for shiny new technology thingamabobs that is well off the charts. Second, I always overestimate the amount of time I have available for various endeavors, and, of course, consistently underestimate the effort it takes to finish something. In short: I'm an engineer!

I should point out that my day-job no longer involves my writing code, but ... I love coding! I love trying to figure how to make some system work or make it talk to some other system or make do things by itself and so on. In other words: if I want to work on this stuff, it has to be in various side projects ... and that's ok.

My day-job is in the "technology-adjacent space" in that I manage technology projects. But I am — apparently — not to be trusted with heavy machinery or sharp objects! Let me translate: I get to sit in endless meetings and conference calls and plow through a never-ending stream of emails and IM messages about this or that or something else. But my heart is with the things that go "beep boop beep." I want blinking lights! You know, so we can see that the computer is "thinking"!

Oh, and I travel a lot. A lot! Which means there isn't much opportunity for escaping into the proverbial garage to tinker with computers and robots and drones and machines and other cool stuff.

(At this point author is zoning out and wistfully daydreaming about a fully furnished and professionally outfitted machine workshop in his garage where he can build just about anything ... oh well)

Anyway, a month or so ago, I decided to start a crazy side project. It's really a crazy collection of crazy side projects. The main (read "noble") goal of this insane endeavor is to continuously learn new skills and technologies while also playing with cool toys. I know, it's all so very grown-up ... not! But hear me out: it's also (self-prescribed) therapy, or "self-care" as the kids call it today.

These side projects allow me to escape into my zone for a little bit each day regardless of where I am. Did I mention I travel a lot? I used to daydream about projects and long for the weekends, but that only made for really long weeks and packed weekends which didn't work either. The solution was to come up with projects that I could tinker with any time and anywhere. Sure, not every project is fully mobile. But I have quite a few that I can switch between, and some of them are so mobile that I can work on them on my phone while waiting in line to board a flight. Now that's some next-level mobile geekery!

Ok, let's get back to the crazy list of crazy side projects. With all these projects in constant flux, I realized that I wasn't making much progress on any of them. For example, I have a pile of Raspberry PIs and a pile of electronics and sensors and LCD screens lying around, waiting for my attention. I have a few websites that I started on. I have domains. I have tools. Books. Stuff. Piles of more stuff and good intentions.

Madness! And frustration. Because now I have everything I need to launch a minor Mars expedition, but I'm drowning, and I can't decide what project to work on and which one to set aside. How can I get on top of this? How can I rein this in?

Agile planning to the rescue! I can already hear the collective groan from all my imaginary readers. And there may be a few confused stares as well. The funny part is that I find Agile, as implemented (and often butchered) in large enterprise projects, introduces layers of unnecessary bureaucracy. But that's a topic for another post.

Focus! Ok, as I was sitting in yet another hotel bar reading up on some new cool thing and thought that I should add that as well, I realized that I'd probably never get around to finish any of my projects if I don't organize them. I was already using Trello to list some of the tasks, but there was no plan. No order. Nothing.

Most importantly, there was no discipline to at least finish the tasks that I started. So I decided to borrow from Agile and plan out project work in 1-week sprints. And, each Sunday morning, over several cups of delicious coffee and possibly a pastry or two, I'd have a mini-sprint planning session with me, myself, and I. And the three of us — remember, this is Agile, and you always need a team for everything! — would decide on the theme for the week and also pick a few tasks from the ever-growing list in Trello.

Of course, this is not supposed to be a professional level work project, but rather a slightly less chaotic side project. So I decide on a "theme" for the week rather than selecting "features" and "user stories" and so on. And no, there's no PI-planning. After all, we don't want to take away all the fun of "running with scissors" 😀

I'm also maintaining an overall list of projects. And I have (in a crazy moment of over-confidence) published this madness, not so much to brag, as much as to keep myself accountable. This list also includes a brief description of each project, how it relates to other projects in the list, and links to any posts, source code repos, or related websites. The purpose of maintaining this list is to force myself to think through why I want to tackle a given project. I also update this list as I finish things or come up with new ideas. In short: the project list is there to provide a bit of structure. And since it's published, I always risk the embarrassment of showcasing my inability to finish things ... and we definitely don't want that!

So, to summarize:

  1. weekly sprint planning sessions to define the theme for the week and to select a few core tasks — this helps me focus, and I waste less of my precious spare time
  2. use tools like Trello to manage tasks and track progress — and it feels good to move completed items to the "Done!" column
  3. create and maintain a (public) project list to gain a better overview of everything that's in play — as a bonus, the risk of potential public humiliation keeps me from adding too many things to the list
  4. document projects and progress and include both successes and failures — I like writing in general, and writing about my projects allows me to share my experience with others

Finally, adding a bit of Agile to my crazy side projects is helping me stray less and finish more. That in turn makes it more fun to work on these projects. And yes, there's also a sense of accomplishment — and just possibly a bit of pride 😉 — when viewing the "completed" items.

OK, now back to some serious tinkering. After all, I'm on a mission to build ... uhm ... a million things!