Humans work best when they can concentrate on one task at a time. But very often, in order to accomplish your task, there are a number of subtasks that need to be done first. These necessary subtasks are often seen as annoying and distracting, because they’re not your main focus of attention. Consequently, they often also end up being badly performed, because you just want to get them over with, so you can get back to your real goal.
When you’re hungry, for example, you want to eat. But in order to eat, you have to cook. And before you can cook, you’ll have to go shopping and do the dishes from yesterday. But you just wanted to eat, not to shop or do dishes.
What do we do? We outsource all of the annoying tasks to McDonald’s. The trick is, that people have different interests. The thing that you find boring and tedious, will be seen as interesting and challenging by someone else.
Enter The Task Board
The same thing happens all the time in companies. I’ll be happily hacking on my program, when I realize that I could really use this utility procedure that just isn’t there yet. I can decide to spend a few days to write it myself, the right way. But most often I’ll just end up hacking something up quickly that works for me, but isn’t pretty or reusable, and get on with what I’m doing.
What if I could instead post a request for the utility proc on a task board. All the other programmers in my company would get instant email notification, and perhaps there’d one of them out there that would see that utility proc as an interesting task, and devote a few days to do it right. Or someone might tell me that he’s already made something almost like what I’m looking for. If nobody responds, I’d end up in the original situation, having lost nothing for trying.
This need not be used only for stuff that you need badly. The idea is also to have a place to put all the tasks that would be nice to get done, but they’re not critical. This way, you can put them in, thus sharing them with everybody. The software will remember them for you, and probably one day, someone will find it an interesting thing to spend a day taking care of.
A nice side effect of this is the transparency in being able to see what needs people have. Maybe you’ll take the consequence and hire a few people dedicated to filling some gaps.
A Little Software Design
Users can post a proposal and categorize it. By using categories, users can sign up for alerts only in categories that they’re interested in. Users can say they’re interested in doing the task. The system should have a mechanism of coordinating who actually ends up doing it, so we don’t duplicate efforts. Users should also be able to register interest in the outcome, in case there are others that could use the work. Every posting should of course be commentable, so the interested users can discuss the details of how the task is accomplished.
The Wider Perspective
Although I’m from a programming background myself, this need by no means be limited to programming tasks. All kinds of tasks are candidates for outsourcing.
In fact, a Danish company, Oticon, introduced a so-called “spaghetti” company structure, where people didn’t have fixed job descriptions. Rather, all sorts of tasks were performed by putting them up on a board and letting people bid on what tasks they liked. So a guy who used to do book-keeping but wanted a feel for graphic design could apply for a task in graphic design, and try it out. That way, you encourage employees to grow by enabling them to learn and experiment with different tasks. (Note: The above description may not be accurate. I read about it some years ago. It doesn’t matter what exactly Oticon did or did not do. It’s the ideas that are important.)
By the way: any open source community should have one of these.