I recently read two read two rather excellent posts on motivation and discipline: Screw motivation, what you need is discipline and Little known ways to think about discipline. I recommend reading both — my thoughts will be waiting for you when you’re done.
Reading these made me really sit down (I have a standing desk) and think through how I define these terms for myself and how I apply them to common work activities we as software engineers are faced with again and again.
When it comes to software work, on the Starter, Architect, Debugger and Finisher scale I would rate myself highly as a Starter and Architect, mid-level as a Debugger and not too well as a Finisher.
What makes “finishing” projects hard — especially an agile world, where the product is never really done and the customer just might add a few more requirements, is the inertia involved, the thought that there’s an unspecified amount of stuff left to do before you can wrap something up. Finishing school work and working as a junior engineer was always easy, because projects and products usually had their beginnings and ends defined by someone else.
When you take on the responsibilities of a senior engineer or strike out on your own, how do you finish a web service, a web application or a blog post? The answer, of course, is that you do not. How then do you beat the inherent inertia in these type of activities?
What I have found works for me is to break whatever activity I want to “finish” into the small enough goals that I know whether I am done with them or not, an idea I picked up from David Allen. Once you have gone through the act of breaking an activity down into it’s constituent parts, you are back to just executing and checking tasks off a list, which, let’s face it, feels really good.
Most of the time, you can just keep breaking down activities like this, but sometimes, especially when building something customers will use, the real lesson is to accept that you will still never be done, but at least you will ship.
Originally published at www.njern.co on February 2, 2015.