Coding: Reflection vs Action mode
It recently struck me while preparing some ThoughtWorks University sessions that there appear to be two modes that I spend my time switching between while coding:
-
Action mode - we’re focused on getting things done, making things happen
-
Reflective mode - we’re a bit more detached and looking at things from a higher level
I spent the majority of 2008 and 2009 in reflective mode on the systems I was working on which can be seen by scanning through a lot of the blog posts that I wrote during that time.
I’m sure would have been times when I was action mode but I was far more interested in how something was being built and whether that could be done more successfully.
In 2010/2011 I became much more interested in building stuff and spent more time thinking about that rather than how to refactor code or design it in a more functional way for example.
I’m now coming to the conclusion that both of these mentalities are useful at different times and I need to be more aware of when I’ve been spending too long in one or the other.
Examples of the two modes
When pairing programming these modes describe the role of the driver/navigator reasonably well.
While driving we’re head down focusing on building the required functionality whereas the navigator focuses more on quality of what’s being written, whether we can do that better, whether we’re going to cause ourselves big problems down the line and so on.
When we’re learning something new we’ll mostly be in action mode to start with - we want to see something working so that we get some feedback that we’re getting somewhere.
After a while when we’re a bit more comfortable with the language/tool/technique we’ll probably step back and reflect on how it’s going.
I think you can be in these two mindsets in non coding situations too.
For example I’ve recently become much more vocal in trying to get teams to use approaches that I’ve seen work before whereas previously I was happier to sit back and watch how things panned out and learn from that.
Are the modes this clear cut?
While writing this post I’ve started to wonder whether the way we use these two modes are actually this clearcut and whether I’m only aware of the 'obvious' switches between the two when in fact there are many more switches.
I’ll keep observing…
About the author
I'm currently working on short form content at ClickHouse. I publish short 5 minute videos showing how to solve data problems on YouTube @LearnDataWithMark. I previously worked on graph analytics at Neo4j, where I also co-authored the O'Reilly Graph Algorithms Book with Amy Hodler.