So I just remembered I have enabled the “Ask Me Anything” feature over at my little tumbleblog. For some reason I have never really paid close attention to Tumblr notifications, so I was kinda surprised to see that a few questions queued up in there for some undefined amount of time. One of them especially struck a chord with me. Cptacek asked:
I was wondering if you had ever discussed how you keep your projects, bugs, enhancements, etc., organized and how you are able to keep your high priority things high priority. I have used sticky notes, spreadsheets, email, etc., and it all takes a lot of manual intervention. There should be a better way to do things! Have you found a better way?
This is a great question because organization is something I struggle with quite often. I guess we all do – some of us are more organized than others. I happen to be n outlier on spectrum, always teetering on the very edge of complete chaos. Half the time I’m completely unorganized, I forget things daily and I’m constantly chasing some new idea, only to forget it and move on to the next one. Writing things down, and trying to organize them is basically the only way for me to get things done once the momentary flight of fancy wears off. I have tried a number of tools to help me with this, but I have not found the silver bullet yet.
I guess it is important to mention that for me this question as three distinctive parts:
- Keeping track of bugs and feature requests/ideas in my programming projects
- Keeping track of ideas for the blog
- Organizing and prioritizing other projects, ideas and assignments
At least this is how it breaks down in my mind. I’m actually pretty good at the first two parts, and consistently horrible at the last one. So let me explain how I do things in each of these categories.
Bug Tracking / New Features
This is actually pretty easy – I use bug trackers. If it is a Github project, I use the built-in github one. If it’s not, I use something else like Lightouse. If you visit my public projects, you will see that 90% of the bugs and feature requests are submitted by me. Why? Well, that’s my way of tracking this stuff. When I find a bug in my own software and don’t have time to fix it on the spot, I put a brief note in the bug tracker for that project. This is more of a “note to self” kind of a thing – I usually don’t go to much detail, and don’t include stack traces or screenshots because I have the code, and I can reproduce the bug easily. It is more of a matter of me remembering that there is a bug that needs fixing out there. Same with feature ideas. Whenever I go “oh, this would be a cool thing for project XYZ”, I go and make a note of it in the bug tracker.
Why don’t I just write it down on my to-do list? Well, keep on reading. I find that keeping this stuff attached to the project and hosted on the cloud is the only way to prevent it from being lost and forgotten.
Why do I make this stuff public? Well, why not? It helps to show my projects are active and it gives me extra incentive to try and fix these bugs. I know it looks bad when I have a year old critical bug in there, which was submitted by me so I usually try not to let it get that way. It doesn’t always work, but it helps.
For the blog post ideas, I use a similar methodology. When the inspiration strikes, but I don’t have time to write I just log into WordPress and create a draft. Sometimes it is just a subject line. Other times it is a short outline. I think I mentioned this before but I consistently tend to have 90+ drafts in my WordPress queue. Only a small fraction survive to see the light of day. The entire thing is self-organizing too. The most recent stuff is on top, and when I go back and add to a previous draft (for example revise my outline) WordPress floats it to the top of the list.
This is by no means perfect, but it works for me. The ideas, templates and outlines live in the same place I work on “real” posts and unfinished ones so it is easy for me to scroll through the list when I’m out of ideas. It also helps that this blog has no real deadlines or topic restrictions. There is no real reason to prioritize my drafts because what I post is completely dependent on my mood and what I’m currently thinking about of working on.
Projects and Other Stuff
This is where it gets hairy. I’m not very good at organizing things in the big picture scope. Once I drill down to individual projects (like this blog, or my various programming adventures) I can keep them more or less organized. But daily tasks, assignments and projects… Let’s say that I’m less organized at this level.
I have tried a lot of different tools, but I have yet to find a silver bullet. And it is really not the tools at fault here, but me. Organization at this level is all about self discipline. If you are determined to do so, you can organize yourself using sticky notes glued to your monitor. As long as you make a commitment to it, and keep doing it you’ll be fine. My problem is that every time I make an attempt to organize my shit, it is not because I really want to do it, but because I found a neat tool that I want to test. Invariably, after a month or two I get bored with the tool and it all goes to hell. At least until a new tool comes around.
Actually, no they are not fine.
Ok, here is how it goes: most of these productivity / organization tools are “todo lists” of sorts. I find lists rather limiting. It is really hard to prioritize a lot of different projects and tasks on a singular list. Chances are that you have a lot of high priority tasks lined up that will dominate the top of your list even if (or especially if) you can’t actively do anything about them because you are waiting on someone eases input for example. So what do you do? Do you bump the priority down? What if it is a critical, “drop everything and do this but not until Bob signs off on it” item and Bob is taking a month and a half to review it?
Linear lists have problems – they tend to be very, very vertical:
Whenever I make lists on paper, I tend to annotate, or doodle in the wide right margin because what the fuck else am I going to put there. Virtual lists often won’t even let you do that. You get a skinny little single column, and every line item must be clicked and expanded to add notes, even if there is a river of white on the right.
Not so long ago, I have discovered a concept of Kanban which I found to be much better for organizing thoughts, projects and ideas. The way you make an old-school Kanban is to take a whiteboard (or cork board) and divide it into vertical sections kinda like this:
You can see that in this example the leftmost column is for random low priority ideas. The second one is for current assignments that you are working on right now. The two rightmost columns are for high priority tasks and revisions which will usually take priority over everything else. Most tasks start on the bottom left, and gravitate towards upper right corner. You work the other way. Or not. I mean, it is up to you – you can reverse the flow for example. Or organize your list in a different way. For example left side might be for finished projects, and right might be for upcoming ones with the middle reserved to current stuff. Or maybe has a “Bob Sucks” column for projects that are currently on hold because Bob is taking an eternity and a half to give you feedback. It is a flexible system, which acknowledges the fact that you might have a lot of stuff going on with a lot of different priorities. So you set up multiple parallel pipelines and manage them.
Oh, and you would usually use sticky notes, so that you can move the tasks around easily. The idea is that you should be able to walk into the room, and see your status at a glance. You know what you going to be working on today. You know what’s projects are in the pipeline. You see your high priority stuff.
If you want a virtual, free software Kanban to play with Trello has a really good implementation. It gives you a nice flexible board you can organize, an ability to share it with others and to assign people to your tasks, reminders and etc. I have used it extensively for a few months before I got bored with it and fell back into disorganized chaos as I usually do.
So I guess this is my advice: Kanbans are better than linear lists. Use Trello if you need a neat tool to play with. But above else, no tool can help you get organized. It is all on you. Whatever tool you choose, you have to commit yourself to it and keep doing it even after it becomes a chore.