Motivation isn’t one of those things I’ve lacked in IT. I’ve always been the kind of bloke who arrives early, puts in a full days work before going home and turning the PC on to do a bit more. It’s just the way I am, I love writing code and I love working with PCs.
Until recently, anyway.
I wrote a prototype for a piece of software called Integrated Performance Measures (IPM) some 21 years ago. It was started using a black and white laptop, written under Windows 3.1 using VB 3. It was an instant hit with the people I was writing it for so they gave a me job to write the “real” thing. Fast forward 21 years and this is now a suite of programs in VB 6 and C++, outputting HTML/CSS and using some Java applets. The VB 6 variant was a direct port of the VB 3 variant that I worked on in evenings and weekends as there was no time to do the conversion in working hours.
For all that, the suite is pretty stable and does the job it was intended to do. It is being actively developed to streamline the ever changing uses it gets put to. I’m quite proud of it.
So, now we come to the point. It’s written in VB6 and is starting to show it’s age. It looks like a VB6 program and that’s apparently a problem in these modern times where a program is judged not by what it can do for you but by what it looks like. So I now have the task of reproducing this 21 year old program in .Net and making it “look modern”. And I’m struggling.
A lot of it is blank page syndrome. Just where do you start with a project of this size?
Well, there are some key components so I started there. We use a custom tree control which is quite complex so has to be user drawn. So that’s where I started.
And I’ve struggled. It is very complicated and every time I finished one facility I seemed to generate another two or three. I wrote plans for myself. I spent entire days refactoring the code to make it “more readable”. I tested over and over again. Anything to stop myself making proper progress. And I don’t understand why – it’s not me – I don’t need motivation.
Then the penny dropped and I realised that what I was doing was arriving at my desk with a “plan” for the day and then spending the day avoiding doing the plan. If I finish the plan, I have to move on to something else, possibly more complex, and I have probably got two years worth of this kind of thing to get through before I finish the re-write. So I procrastinated. Big time.
This isn’t me.
Finally, I decided that I have to do something about this. It can’t go on. I have no idea how self-motivation works as I’ve never needed to do any of that kind of thing. So I needed an alternative. If I was procrastinating because the problem felt overwhelming then I needed to park it for a while.
So I took a “no code” day. I spent the entire day at my desk with one rule – I must not write any code. I spent the morning going over an introduction to Swift programming and I spent the afternoon watching the EntreProgrammers pod cast. I had a play with some PHP. I had a scout round for a new BootStrap web site template. Anything except writing code. Importantly, I took the time to write out a long do-list of things I needed my application to do by the end of the week. That list included several things that I had mostly written and only needed finishing off. I did that list first thing and then put it aside for the rest of the “no code” day.
Today, I came in fresh, with a list of manageable tasks and blitzed them. I achieved more in the first half of the day than I have achieved in the last four weeks of floundering and pressuring myself to code for coding sake.
Sometimes the most productive thing you can do is to do nothing.