I am realizing that I have been a very slow programmer recently. Slow in terms of amount of output that one would normally expect from a given slot of programming. There are many reasons for this but a strong one is that I have been considering most programming sessions as exploratory and acts of escapism.
Consider a recent example. While working on compose-language-server I had to figure out a way to connect C++ language model backend with a JS runtime. Instead of solving that problem, I went dallying around with C++ addons documentations. Sadly, without much of an intention of actually making a native addon. In the end, I ended up just writing a stdio based executable and got things working.
In most of my recent programming works I have done direct jumps without setting expectations. These jumps are leaking beyond programming and are making my general approach to problem solving very unstructured and in-my-head kind. Specially in the managerial aspects of my work where there are tasks whose executions don't involve me. These usually don't end well since my assumption about me being able to improvise, if needed, is invalidated.
I feel the missing piece in all these has been my lack of discipline in naming problems. Naming a problem before working on it helps externalize the inner thoughts in a form which is more communicable and has structured expectations both in terms of effort and approaches.
And a surprisingly powerful way of naming problems is to just make lists, todos and tickets.