Friday, April 27, 2018

Working on Multiple Projects


One of the things I struggle with is working on multiple projects at the same time.

Fixating on one project and wanting to see it through until the end before moving on to the next one is something I tend to do. This may be a great approach for some, but for me, I need to share my time between multiple things.

As a long time developer I’ve managed to build up a back catalog of games and apps - and a number of these require maintenance to stay up to date.

As well as updating older games I’m always working on new stuff - be it prototypes or new games that I plan to ship.

And on top of that, I’ve been trying to blog more often than I have been. In fact, just writing this blog post was a challenge as I felt that I needed to focus my time on the programming tasks I have at hand.

So I did some research into techniques to help manage working on multiple projects at the same time and I thought I’d share these with you. As for the effectiveness of these techniques, well, we’ll have to wait and see. This might be the subject of a future blog post!

But first, here’s my current strategy for managing multiple projects, which admittedly, while not perfect is better than nothing.

What I Currently Do

Trello

I use Trello to keep track of all my projects. I have a board for each individual project with the following lists: Backlog, To Do, Doing and Done

When I have a new idea for a feature I place it in the Backlog list. I regularly evaluate this list and move what I should be working on next into the To do list. When I need a task to do I will move it from the To do list into the Doing list. When I complete a task I move it into the Done list. 

I find this really helpful when I have a half hour to spare and want to get something done. I  simply pull up my list and pick a task - I don’t have to think as I’ve already planned out the work.

Trello for Snappy Word

I use Trello on my computer and my iPhone.

Trello on mobile is invaluable for adding tasks to my backlog while I’m out and about.

Notes (on iOS)

I use Notes on iOS to quickly jot down ideas. These can be a single line to a few paragraphs. I sometimes do a quick sketch on a post it note and insert that into my note or use the drawing feature to add a quick sketch.

I have a Game Ideas and App Ideas folder that I throw stuff into. 

These aren’t related to any specific project I’m working on, but are reserved future distractions :-) If I have an idea for an existing project, I do this in Trello. Keeping the new ideas in notes helps separate (mentally and physically) the possibilities from the practicalities.

Every so often I review the ideas and sort them based on what I want to do next after my current project have been completed. 

It’s always a good sign if that "amazing game" you wanted to make is still an amazing idea six months later. More often then not I think to myself “That’s not such a great idea…” But still, I believe it’s really important to record these thoughts as there may be a germ of a great idea in there somewhere.

Example game idea note


Google Docs

As well as Trello I use Google Docs to track my day to day work. I have a Work Log document that I write down what task I’m working on, any notes about that task and other relevant information for the day. I prefix each task with the project name. These notes are useful as they record any extra information that the initial Trello To do item may not have had.


Here’s an example entry from when I updated Ultra Dash:

Sunday, 31st December 2017 
DASH: Update the background sizes for iPhoneX

I collate these notes and use them when I check in my project to source control (I use Sourcetree and BitBucket).

I’ll often go back over my notes to work out how much time I’ve spent on a particular project. The Trello tasks are what I planned to do and my Work Log is what I actually did with more details than the initial Trello task description. 

The Work Log also includes other notes such as when I submitted a build to the App Store or when I updated the latest version of Unity, etc. It’s essentially my timeline of all my projects.

It’s also great for those times when I feel like I’ve accomplished little, but on reading over my notes I can see reasons why (being sick, on holidays) or actually see that I did do a lot but it’s all behind the scenes and not reflective in the latest build (refactoring code, updating ad providers).

My Challenge

So I have a system that works for me in terms of organising and tracking my projects but my biggest issue is task switching. How can I effectively parcel out my time between projects and actually switch between them?

A solution

It seems obvious now as I write this, but the big takeaway from my research is that I need to create a meta to-do list with tasks from each project interweaved so that when I complete a task from Project A I can move on to the next task which could be from Project C.

One caveat is that task switching can take a toll when switching context - which often happens when switching between two very different projects. To minimise this it's suggested to try grouping similar tasks together.

From what I’ve read, it’s also beneficial to try and limit the tasks times to around 20-30 minutes each, which thankfully is something I already do. 

Obviously there are systems in games that can take weeks to complete, so the trick here is to be able to break these systems down into manageable small tasks. This fits well with what I do with my Trello board and the Backlog list.

Trying it out

I’m going to give this a go and see if it helps fix my problem of staying on one project for too long at the expense of others. I'll add a future task to write an blog post on the results :-)

So, what techniques do you use? 

Let me know as I would love to try them out and see if I can improve my productivity!

- Johnno

References