Data driven time management insights

Graph bars snippet

I've recently gone full time on game development, but before that I was squeezing in effort where I could around a full time job. I've been doing that for a number of years now and gotten more serious about it over the last year by using an issue tracking system to plan, organise and record data on how I work. Over the past week I've written a bunch of Python code to extract some of the data and present it in a way that is actually useful. Analysing this data has really aided me in having an accurate view of the outcomes of my time management and will hopefully help me make more well informed decisions going forward.

The charts below show exactly where I've spent my time over the past 14 months (August 8th 2016 - Oct 15th 2017). The total is 767 hours at approximately 12.5 hours per week on average. This includes a month of leave I took from work which accounts for about 200 of those hours.

(see below the chart for further discussion of the numbers)

Time management assessment

The core numbers here were interesting to me as I hadn't realised just how much time I'd spent on areas that weren't related to the development of the game itself or that weren't related to the gameplay of the game. See below for some insights about the most time consuming areas.

Packaging was painful

About a third of my time was been spent on packaging. Making an installer, windows cross compile etc. Now I use my own custom written build system so time here is a little higher than typical most likely but doesn't explain all of the time bloat.

Windows Cross compile and Installer

Time in packaging includes time spent to get a windows cross compile up and running. First I had to set up an environment; install windows, Visual Studio etc (ended up making both a VM and bare metal) and this absorbed a bunch of time configuring and tinkering. Next I had to update my build system to output visual studio files and worked through replacing vendor packages or making sure they compiled on windows. Finally I built the installer using Wix and integrated support for it into the build system, this was a bit painful but overall not a huge issue to get working.

Continuous Delivery
I'd like to repeat for my own benefit; this was extremely annoying and time consuming

Setting up a CI/CD system took much longer than I anticipated even though I've dealt with them a lot before. I'd forgotten the cost of starting builds, waiting 5-10min getting an error and having to rerun again repeatedly. Now this wouldn't be such an issue but typically the 'slave' that a CI/CD system uses a different environment, user etc and there can (and was) a lot of idiosyncracies between a successful compile while logged in and getting the slave to do the same. I'd like to repeat for my own benefit; this was extremely annoying and time consuming.

What really capped this off though was that I had my system up and producing installers using GoCD but then I ran into a critical bug that there was no practical solution for 🙁 So I began the process again, but this time using Bamboo, which made sense as I already used JIRA for my issue tracking. Once again iterating on the setup was painful; git issues, environment variables, paths, service setup on linux, but in the end I like the system better and it's easier to use. Moving to Bamboo from GoCD took me about 20hrs...

User Interface

This was my single biggest development activity by a wide margin, but progress here was about as fast I expected it to be. I'm using Cocos2dx as a framework and most of the time here was understanding what was and wasn't possible with the UI components and then constructing elements (popovers, dialogs etc) that I could use in the game. For me this justifies the progress I've made on core gameplay and level generation being less than I would've preferred, I hadn't realised quite the ratio of where my time was actually spent.

Conclusion

I'll not dive into the rest of the numbers as it would get very verbose but my main takeaways from this process are. First, having a view of the raw numbers is very useful in knowing and being realistic about priorities and the opportunity cost of those priorities. Second, I need to prioritie advancing the core of the game going forward 🙂

Leave a Comment