Journal Articles

CVu Journal Vol 28, #2 - May 2016 + Process Topics
Browse in : All > Journals > CVu > 282 (9)
All > Topics > Process (83)
Any of these categories - All of these categories

Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.

Title: Organised Chaos

Author: Martin Moene

Date: 05 May 2016 09:38:14 +01:00 or Thu, 05 May 2016 09:38:14 +01:00

Summary: Pete Goodliffe explains why organisation is so important.

Body: 

The secret of all victory lies in the organisation of the non-obvious.
~ Marcus Aurelius

Good software is like crime; it’s more effective when it’s organised.

I joke with my team that we need to maintain the ‘illusion of progress’. Every day as we work together to craft awesome software, we all need to see that we are progressing. It’s important, and motivational, to understand that we’re achieving what we intend. Both so we know we’ll deliver on schedule, and so we can feel proud of the new value we’re adding.

We feel better about our work, and more motivated to continue when we see that we are making progress. In order to genuinely gauge that we are progressing, we must have a series of achievable, measurable tasks that can be ‘ticked off’ when done.

This is why the Pomodoro technique [1] works, a simple micro-level system which time boxes your effort. It helps you to focus on small steps with clear goals and clearly measured results. When each 25 minute pomodoro finishes you know whether you’ve achieved your goal or not. On a grander scale this is also why processes like Scrum and XP work so well.

These stepwise approaches fulfil a basic human need – to achieve, to move forward, to make useful progress, and to be rewarded for doing so. (Usually sufficient reward is just the joy of seeing that you have achieved your goal! Any more ‘serious’ rewards may actually be detrimental to the development process.)

We do these stepwise software shuffles at the grand ceremonial, macro, level. We need to organise our large scale development plans. And we do it daily at the micro level. We need to organise our minuscule day-to-day tasks, focusing our effort in the right direction.

How do you keep yourself organised each day?

Organisation is key

The most effective programmers are not just technical geniuses, but are also well organised. They can reason about complex technical problems, and can also reason about the complexities of organising how to construct the solution.

To be an effective programmer you must be able to organise yourself well.

I can trust you to build me a great software system if I can hand you a list of requirements and I know that you will turn that into a reliable set of software construction tasks, and then arrange to execute them all to a schedule that we agree.

Honestly, That’s all there is to software development!

So why do we make it so hard? Because breaking things up into achievable, manageable chunks is part science and part art. It relies on taste and experience. And because being organised enough to arrange those into a realistic schedule is a real skill, and one that most boffins seriously lack. (Along with common sense.) Daily we are distracted by a plethora of other tasks that need to be done, with other projects and interests vying for our attention.

Good managers can help mitigate this, and will empower their team to organise well. As do good development processes. We can set ourselves up to succeed by fostering an environment and a set of working practices that naturally lead to good organisation and naturally help to track progress, like the ones already discussed.

This is true in the macro level when we look at the concert of tasks we need to coordinate to deliver a software project, and also at the micro level when I consider how I, as a programmer, will deliver the right value today.

This is something I am increasingly finding myself doing: working out better ways to stay organised so that I can fulfil the myriad demands placed upon me each day.

As increasing numbers of things crop up that I have to do, I find myself more and more often writing lists to keep track of those things and help to prioritise them. Yes, I’ve discovered to-do lists! Once you start seeing them, you realise that most everything you do is on a list in some form or other.

So let’s look at this most simple, and effective, technique to remain organised: the humble to do list.

TODO: Write a list

t might seem obvious (even trivial) how to use such a list. But let’s look at these things in detail to gain mastery over them.

What is it?

A list. Of things to do. Simple as that.

In this context, a list of things you intend to do. Usually a single list holds one category of things, for example ‘things to do today’. If technology permits, it may be arranged in priority order.

Why?

To stay organised. To make sure you keep on top of what you need to do, and don’t forget anything.

To help you become a better programmer.

How do you do it?

Whichever way causes you the least friction and hassle. There are plenty of 21st century digital mechanisms, but often the simplest and most effective is still to use good old fashioned pen and paper. An advantage of paper is that it’s always there and doesn’t need to be switched on. It never runs out of batteries (although occasionally a pen will run out of ink! (And I admit that I lose my pen more often than I lose my computer.) Also, there’s a lot to be said for the tangible experience of writing things down; it helps you remember and consider each item a little more.

However, there are plenty of apps and tools that you may find more convenient. Digital versions offer a number of advantages – you can maintain a history of all your lists, make it easier to keep multiple lists (perhaps separated by topic, date, priority, frequency, etc), sync your lists between multiple devices, and more.

Popular Apps include: Apple’s Reminders (and Notes), Google Keep, and a plethora of third party apps like Evernote and Wunderlist. This is a popular category so there’s plenty to choose from. Find something that works for you. I’d recommend avoiding too many gimmicks, and selecting an app that is not distracting but offers goods functionality.

Personally, I use more than one medium. I use simple pen and paper when I want to make notes quickly and consume them as quickly (often when in meetings), and Apple Notes for longer lived tasks that are useful to keep synced between my phone and computer. As my daily to do list is digital, then things I failed to achieve (heaven forfend!) can easily roll over to the next day.

When?

I refer to my lists frequently throughout the day to determine what to do next. I keep lists of short-term goals as well as list for my longer-running missions.

At the start of each day I compile a todo list for the day: starting with the tasks I want to get done and the code I want to write. Then I read my email, and adjust it with any new work items that occur. Then I check my calendar and see if I’ve forgotten any appointments. If so, I’ll add those in too. (Oh, the curse of meetings!)

Since I compile this in Apple Notes (other list-making apps are available) I can now prioritise the things that have to be done first. I take a realistic look at what this should perhaps be considered ‘stretch goals’ and set my expectations accordingly. I move items up and down in the list to reflect these priorities.

By now I have built myself a thoughtful plan for my day’s activities.

Throughout the day as I work through these items, I tick them off on the list. The tick-off ceremony creates a feedback loop, rewarding me for making progress. Dopamine release!

I’ll know if I’ve achieved my goals at the end of the day by looking at my list. If most of my list is ticked, I can go home feeling rewarded that I did what I set out to that day. (Of course, if other things side-tracked me and I achieve few of my planned tasks, I save to soul-search whether this was my fault for being easily distracted, or just a Day From Hell.)

You can use to do lists for many other organisational reasons.

They are particularly useful when you’re working on something and want to capture a thought before it distracts you. The poster child for this is during TDD: to jot down ideas you can’t focus on now, but you don’t want to forget (e.g. new tests to write). I usually write a todo list of tests as comments at the bottom of my test file, rather than in a separate note taking application.

How to do it most effectively

Keep disciplined making (and reading) lists. Remember to do it.

Craft achievable, granular tasks. Set realistic expectations for what you can achieve.

Is it a panacea?

No, a to do list is clearly not the perfect planning tool. But as such a simple, low ceremony way of organising plans and thoughts it really is something worth considering picking up into your daily routine.

There are plenty of other (more complex) organisational techniques that might help you keep on top of tasks, for example: Personal Kanban [2] and GTD [3].

Conclusion

Effective developers are organised developers. You won’t achieve anything worthwhile without a well-conceived plan. Making a plan doesn’t have to be super-complicated. Your should employ every simple planning technique available to ensure you work as well as you can.

Now if only I could use the same techniques to get organised enough to wrote my column on time... Chance would be a fine thing.

References

[1] The Pomodoro Technique http://pomodorotechnique.com

[2] Personal Kanban http://personalkanban.com

[3] Getting Things Done http://gettingthingsdone.com

Notes: 

More fields may be available via dynamicdata ..