I've been asked this question a few times now. I consider it strange, because up until recently I've really struggled with this. I am a serial starter. I am obstinate in my commitment and that produces a cadence that gets work done. The trouble is that I have so many ideas that the backlog grows faster than I can drain it.
But as I alluded to I've become better at getting things done. I try to explain how I work.
Know what slows you down
This is hard to do. You need to be mindful of your body, your personality and your behaviour. For me, when I can't see how to do something my work transmogrifies into an infinite muddy plain. No direction seems better than another, no progress is visible and I start to question whether I should be doing this in the first place. I become easily distracted, I procrastinate. I start and stop, unsure of myself.
When I realise I am doing this, I push the keyboard away. It's a signal I need to approach this through some other means. I'll draw it using sharpies and my A3 blank design pads. I'll relentlessly talk to friends about whether this is a good idea or not and how they would approach it. I try and reduce the amount of work I have to do. All of these come together and I end up with something that I understand, often because I've made it more simple.
I was a tragic at this. I had spent several years working on a project. I'd invested lots of my time and money. We weren't getting closer to the goal. I couldn't earn more to pour in and I was already destroying myself trying to get it over the line. I got together with the co-founder and we decided that we needed to work on a simpler game. And the cycle began again. Eventually I would learn how to quit.
Know when to quit
This is so hard to do. Quitting can feel like failure. One year ago I started the 365 photo challenge. I stopped about 100 days in. Before I quit, I plateaued: the prior 30 days were uninspiring. I needed to do something different in order to get better. Invest more time, take a training course. In the end I decided that I had achieved what I wanted: to get better at photography and that was enough for now. Completing the challenge would have been nice but it's secondary to the real objective.
If you're not going to quit, then do what you can to do less. This means splitting stories, aiming for less and pushing back anything and everything that isn't critical. I'm ruthless at it. With my current team I had two graduates to show how I build software. They had this compulsion, this desire to do that is difficult to overcome. For the first few weeks I was on at them as they unconsciously increased the scope of their task with good ideas and nice afterthoughts. They are nice, but they are nicer written down and added to the backlog. One finished feature is worth ten unfinished ones.
Why does it matter? My first goal is to build momentum. Small things are achievable and you get satisfaction from getting them done. The first few weeks on any project are the hardest for momentum as you try to get things done while laying out the infrastructure. Small things are easier to test and build. Lots of short, fast punches. Do just enough to stabilise the team and then a regular cadence can begin. After a few weeks the grads were ticking off a new story every day.
Small commits help too.
How you organise what you have 'to do' is a matter of personal preference. I change my systems to meet my ever-changing circumstances. Earlier in the year, I was in another city and the apartment had a high benchtop that doubled as a standing desk. The pillars on either side were the width of post it notes. The left column become 'to do', the right 'done'.
At home it's an A3 calendar for time-oriented things. Post it notes on walls for visual reminders. For TW related things it's a variety of trello boards. On client, it's index cards. But it changes and evolves over time. Whatever makes sense to me.
On this project, nothing. There are seven days left and it's all gone well. I took over from another ThoughtWorker who needed to support another team. I was the candidate on the beach and rapidly approaching some pre-planned leave.
IE8 and AngularJS as the default platform. Seriously. One issue I had to overcome was the very first ajax request IE8 made to a web service would fail. If, however, you refreshed the page then it would work perfectly. That nut took half a day to crack.
The other thing I would never wish on a project is people who pick AngularJS when IE8 is the default browser.
The environment. I was in a planning session and was asked how long it would take to complete the work. I thought it would be like the usual "when it's going to be done" sessions. One of the graduates I'm coaching offered up "two weeks unless something comes up". The response was "I expect things to come up" and four weeks was written down. I think it took five and we're in production now.
A daily coffee run is important to me. I find it a good way to switch off from the client, getting some much needed sun and socialising with the team. Equally important is a team of people who share my vigour for the work.
I've been told that I need to improve my softer skills. So I should probably work on that. But for things that I want to work on: marketing. And to market without being spammy or evil.
It isn't a role. I like the idea of roles and how they can be a useful framing device. I also don't like being told what I can't do. I do what is needed on the team. Most of this project is vanilla dev work. This is interspliced with lots of teaching, especially around how to test, why we test and what to test for. There is some UX, performance tuning and business analysis work thrown in for good measure and lots of coaching. I like teaching.
Retweeting. I kid. I donate weekly to GetUp!, monthly to Animals Australia and on an ad-hoc basis to the Greens, the EFF and Wikipedia
I try to eat humanely raised and sustainable food. Humanely raised because, while I am OK with eating animals I don't think we need to torture them first. This is especially the case for anyone eating pork. And sustainable because to do anything else is selfish.
If I can't eat 'sustainably caught' food, especially fish, then I'll eat unsustainable food in a sustainable fashion. Prawns are a good example here. Delicious, but there are limited sustainable options, so I eat prawns infrequently. A few times a year.
It's trivial for most people to change their eating habits. But most don't and that bothers me.
Sometimes I'm good at this. Othertimes, not so good. I adhere to sustainable pace as often as I can. To me this means eight hours a day and lunches are very important. I'd rather help the business reduce their scope than exhaust myself building something they can't prove they need.
When I leave for the day, I close all applications relating to the client and by the time I'm out the front door I'm not thinking about them at all.
Leaving ThoughtWorks at the door is a little harder. The Interview has always been done on my time and while I've had one day a week off to work on P2, I have still had to do work here and there to get it done. I'm usually on my phone archiving and muting email threads. I do this to limit what I have to read and respond to during work hours. I leave almost all email writing until I am at work.
I ask myself this everyday.
The team had an application that captured SOAP XMLs from a queue and stored them in a database. A JSP webapp would allow filtering over the dataset. It suffered performance problems.
We replaced it with an AngularJS client (the HTML construction is now on the client and not JSP), a restful service that dishes out JSON documents (with hypermedia controls). The queue reader was moved into it's own app so we can dedicate it to the queues that get more activity.
The final part was profiling the various components and the DB and making tweaks to get throughput up (on the queue reader) and the latency down (on the website). The thing has a hundred or so users and processes between 200,000 and 500,000 messages per day.
Karel needed an exit. I had a few weeks to spare before taking 2014 off on my leave of absence.
Photo Credit: Ryan Boucher