Sunday, 23 March 2014

A new leaf for Project Snowflake

I've been a bit disappointed with the current state of Project Snowflake. It was (and is) much harder problem than I thought it be but I think I had determined the key parts of the solution at least three years ago. Coding is nowhere near as far as I thought it would be.

Sometime in January my wife sent me a link to a video by Anthony Robbins - someone who I would generally describe as a life coach. After confessing that his 20 minute talk was actually intended to be five minute talk, he was somewhat more verbose than needed but he did have a good point: making a significant change in your life require a change of habit. This is not a new concept, famously written about by Stephen Covey (7 Effective Habits), but it does help to get a reminder every so often. Importantly, he stressed the fact that bad routines contributed to getting you where you are now. I wanted to make change with the way I was  So I decided to have an honest look at my work to date and see where things might be going wrong...

  • I planned to work on Snowflake regularly, but didn't schedule other parts of my life. I was finding that when I wanted to code, often other things came up which needed to be resolved or attended to. This could be tasks around the house, errands, shopping for a gift, fixing things around the house, social engagements, exercise, getting married (well worth it but the eight previous months were major stress!) the list goes on.
  • Not keeping a regular log of my work. I aimed to keep a weekly report for myself but often failed to do it regularly. As a result, I was less conscious of the time I was spending on a particular task particularly when solving problems.
  • Not taking enough regular time out. Obviously I wanted to see the project moving ahead as soon as possible but I wasn't taking time out to relax regularly which caused stress and made me less productive
  • Too much reading, not enough doing - I had to do a lot of reading as there were many firsts on this project. But I feel there were many times where putting thing into practice sooner, would have advanced my understanding quicker, rather than reading more about the topic
  • Imagining technical problems I would face in the mid to long term. Like too many programmers, I spent too much time think about scalability, the merits of different APIs, version control systems, etc. It worth considering these things, but these future problems only became real if you had an application built, which I didn't. The real issues were learning how to build an application fit for purpose in my spare time.

So this year I decided to make some significant change to get things done

  1. Make a realistic schedule - One that includes making time for a personal life and relaxation. This is the single most useful thing that I've done.
  2. Keep that weekly log going - keeping track of what I've done helps me see quicker when I'm coming off track
  3. Stick to tried and tested technologies unless there's a really good reason. It's hard enough getting tried and tested stuff to do what you want without introducing other complications
  4. Keep the goals small - Ambition is too often the enemy of progress. It's easier complete small goals instead trying to complete a big one. It's also better for morale.
Work has definitely been more productive since I made these change and I feel positive about where I'll be six months from now. I've also decided to devote more time to this blog which has been much neglected of late so expect updates soon.