Getting Things Done, Kanban, Emacs and org-mode

strict warning: Non-static method view::load() should not be called statically in /homepages/42/d264661413/htdocs/davesnowdon.com/sites/all/modules/views/views.module on line 842.

strict warning: Declaration of views_handler_argument::init() should be compatible with views_handler::init(&$view, $options) in /homepages/42/d264661413/htdocs/davesnowdon.com/sites/all/modules/views/handlers/views_handler_argument.inc on line 745.

strict warning: Declaration of views_handler_filter::options_validate() should be compatible with views_handler::options_validate($form, &$form_state) in /homepages/42/d264661413/htdocs/davesnowdon.com/sites/all/modules/views/handlers/views_handler_filter.inc on line 589.

strict warning: Declaration of views_handler_filter::options_submit() should be compatible with views_handler::options_submit($form, &$form_state) in /homepages/42/d264661413/htdocs/davesnowdon.com/sites/all/modules/views/handlers/views_handler_filter.inc on line 589.

strict warning: Declaration of views_handler_filter_boolean_operator::value_validate() should be compatible with views_handler_filter::value_validate($form, &$form_state) in /homepages/42/d264661413/htdocs/davesnowdon.com/sites/all/modules/views/handlers/views_handler_filter_boolean_operator.inc on line 149.

Sun, 16/01/2011 - 16:16 — dave

I started using GNU Emacs when writing my PhD thesis in LaTeX and ironically that was probably the time, at least up until recently when I knew most about emacs and was capable of writing bits of elisp to customise my environment. After finishing my PhD I still used emacs but not exclusively and gradually forgot everything except the basic set of text editing commands.

All that changed in 2010 when I started attending the Clojure dojos organised by the London Java Community where emacs is the default development environment and learning a bit more about editing lisp code in emacs comes in useful. I also attended an emacs showcase in November 2010 where I learned about org-mode for emacs.

What is Emacs anyway?

Before I go any further I should probably say a bit about GNU emacs for any of you who've never used it. Emacs has been in existence for decades and was written to very extensible and customisable. It is based around an implementation of lisp referred to as emacs lisp (or more simply elisp) with some built-in functionality to support text editing. Emacs runs on just about every platform out there and has a huge number of extensions (or modes) that support almost every programming language I can think of as well as other tasks such as reading email, reading usenet news, interacting with version control systems (there are mods for CVS, Subversion, git, bzr and others). Emacs can manage multiple windows and can split each window into multiple views - this makes it easy to have parts of many files visible at once as well as different sections of the same file - I'm so used to how easy emacs makes this that I feel restricted using IDEs such as eclipse even though they have the ability to split the main editing window. Emacs has a reputation for being difficult due to the huge number of key commands that exist but it is an immensely powerful system if you're willing to spend the time to learn the basics.

org-mode

org-mode is "is for keeping notes, maintaining ToDo lists, doing project planning, and authoring with a fast and effective plain-text system." org-mode works by using a number of simple textual conventions in ordinary plain text files. For example asterisks (*) are used to indicate headings with the number of asterisks indicating the depth of the header (* for level 1, ** for level 2 etc). The tab keys allows you to fold/unfold headings making org-mode an easy to use outline editor (I've started using it for note taking based on this ability alone). However there is much more to org-mode than just an outlining editor: it can create sparse views showing you only the parts of a document that match your criteria; you can add tags to items; it can manage to-do items with arbitrary states (eg TODO, PLANNED, DOING, DONE, CANCELLED) and that's just getting started. org-mode also has an agenda view that can pick todo items out of a file and show them based on date and tags. This is powerful as it means you can mix to-do items in with notes on a subject and still have a view showing only to-do items with a selected state (ie show only the in-progress to-do items that are due before Monday). org-mode has excellent documentation and there are many tutorials out there (see references at end of this post) so I won't say any more about it's features - suffice it to say that org-mode has got rave reviews and is one of the things that convinced me that I need to improve my emacs-fu.

Getting Things Done

For several years I've been interested in ways of using my time more effectively. I've used various combinations of software, text files, paper etc but nothing has quite worked out for me as either the method seemed too heavyweight and I spent a disproportionate amount of time working the system or planning or the method itself was lightweight but not effective.

For a couple of months I've been trying the Getting Things Done (GTD) methodology by David Allen. I think the key concepts are to get everything written down in a way that both makes it clear what you need to do to resolve an item and in what context you can take that action. So that in a given context (eg at the office) you can easily see what are the actions it makes sense to do now and ignore everything else. This is effective because, if done well, the lists of items should make it clear what action needs to be taken (so you don't waste time working out what you need to do) and when you can do it (so you don't waste time looking at things you can't take any action on at the moment anyway). I first learned about GTD by reading David Allen's excellent book and using plain text files in emacs to make my lists of "stuff." Later on I wondered if org-mode would help manage the lists I was creating and, guess what, there are several excellent tutorials on exactly that (see references).

Kanban

This week I went to see John Stevenson talk about Personal Kanban at Skillsmatterin London. I've heard of Kanban before but never used it. John did an excellent job of explaining the basics of Kanban and gave plenty of examples of how he used. At the core Kanban seems to be a technique for allowing you to focus and limit the amount of work in progress at a given time.

GTD and Kanban have enough in common there should be some synergy in using the two together

GTD and Kanban

And so finally we come to the point of this post! It seems to me (as a neophyte of both GTD and Kanban) that both techniques are about focus: that is your view is limited to what it makes sense to do at any given time and avoiding the need to keep thinking about what to do next. GTD makes a greater emphasis on organising things by context and Kanban is a purely visual technique. It also occurred to me that maybe the org-mode agenda view could be made to behave like a kanban board and so it would be possible to have the graphical simplicity of Kanban and still take advantage of all org-mode's features and avoid being locked into using any proprietary software.

At this point I would like to conclude with a rousing story showing how I successfully fused concepts from GTD and Kanban to revolutionise the way I work. However, it's way too early for that so I'll write another post once I have anything more worth saying on the subject. In the meantime I would definitely encourage you to take a look at the links below and see if Emacs, GTD, Kanban or all three could be of use to you.

Comments

As a emacs user and (Lord help me) Scrummaster, combining Kanban and emacs has often struck me, but I never found any traction. I am about to starta new set of personal projects and one is proably kanban in orgmode. Have you made any progress that you might share ?

I've started using kanban at work within my small team of developers. This has certainly helped me get a better feel for kanban in practice and I'll probably post a follow up report in a couple of weeks with what I've learned so far.

Now I've got a better handle on using kanban in practice I'll probably have a go at putting something together with emacs but have not had much free time recently so it'll probably be slow going. If/when I have anything concrete I'll post a message here and release the code.