home/blogs+posts/software-engineering/think-on-paper
Think on Paper
Photo Credit: pxhere.com/
TL;DR - Writing things down helps clarify the thought process and gets you to your ‘Eureka’ moment quicker.
I’ve learned with experience that our ‘thought process’ can be improved by simply putting pen to paper and writing out such things as the facts, assumptions, outstanding unknowns, etc. about the domain or issue at hand. The act of writing or typing out these details seems to act like an assistant to problem solving in a similar way that peer code-review helps the author clarify their logic.
This lesson became really clear to me at one point in my career when I inherited responsibly for supporting and maintaining a product in the field that had large numbers of cases opened against it. I was the last line of support so the buck stopped with me and typically, by that stage a case could have had a long history, which made it difficult to extract the facts from conjecture. In order to cope with this sort of challenge, I adopted a habit of summarizing the case histories detailing known facts, assumptions and the theories as to the cause. Not only did it provide assurance to all stakeholders, but I found the process to be invaluable at getting to the crux of the issue and I regularly surprised myself in how I was able to arrive at a root-cause by the time I’d finishing my analysis.
Nowadays, I adopt much the same process when designing code solutions.
Furthermore, when working with languages like C++ and Java (but particularly with C++) there are often so many choices on how to achieve a solution that the mind can easily become boggled. The act of writing down what you what to achieve, why you want to do it - and listing influences on your thought-process - really helps clarify those choices, It also explains the design journey that the code, representing the end-stage, can’t quite ever reveal.
Donnacha Forde