The benefits of mental clarity and organization on the quality of code can hardly be overstated. From the tools used to code to the mental processes employed to break a problem down, physical space and time, a clear idea of purpose and destination, it all factors into both the quality of the experience and the resulting code. Because coding itself can be so intellectually challenging, the lack of focus can be so disastrous as to make solving a problem impossible.
And like most things that are incredibly, powerfully useful and straightforward, it’s super difficult to actually do consistently. This blog post was supposed to be about mutual recursion…a tricky topic about two interacting recursive loops that turned out to be incredible useful in a code puzzle I was solving.
But instead, my life got busy with deadlines, parenting and a new employment opportunity and so the blog post got postponed. And then postponed again. And I totally lost all of my clarity. Of course I did.
Please, distract me?
Which got me thinking about mental discipline, fear, and the craft of coding. Trying to produce code while being scattered, overwhelmed, afraid, tired, distracted or otherwise mentally off your game is just excruciating. For me, this often manifests as a sort of whirlwind of useless activity — I start something and then leave it undone while I skip to the next thing and then interupt myself with yet another urgent thing I don’t finish. Lack of focus doesn’t even begin to describe that state.
Getting pleasure from being organized
Which brings me to mise en place, a term found in the kitchen rather than Silicon Valley, but something I use quite often to help me get over the “scattered and anxious” wall. Merriam-Webster defines mise en place as “A culinary process in which ingredients are prepared and organized (as in a restaurant kitchen) before cooking”. In french it means “setting in place”.
More concretely, it’s all those prep bowls you see when you watch cooking shows, filled with pre-measured and pre-chopped ingredients on immaculate counter tops. It’s the recipe available on the counter and the notebook with lists of stuff that need to go into the oven and when.
Just like those prep bowls in the kitchen, I don’t start coding until my notebook is full of notes, I have a mental map of the problem statement and all my tools are ready to go. If you can’t get those materials together or don’t know what materials you need, then that’s a clear diagnostic tool to tell you that you aren’t really to start solving the problem yet. Maybe the problem isn’t well-defined or you don’t have a deep enough grasp of the underlying technology. Knowing that you aren’t prepared is incredible useful information.
The magic in this occurs when you can focus on the problem instead of the platform. With cooking, you can focus on the color and the fragrance as you are sweating the onions rather than racing to get the garlic chopped. With coding, you can float all those delicate abstractions and relationships in your brain without worrying about how to make your text editor soft wrap or color code the syntax properly. It’s not an insignificant detail that when your tools and materials are in place, it is more satisfying and less stressful to work.
And then there is actual life
The whole point of this essay is, of course, real life rarely works that way. For me, the barrier is usually that I am in a big rush or over-committed so I start before I am ready. Or I’ve had a terrible night of sleep and can’t muster enough brain power or, more commonly, I’ve spent a day bouncing between emails and meetings and the administrative overload eviscerates my ability to go deep into a problem.
While it’s easy to dispense the advice “be organized”, it’s rather harder to actually implement. Additionally, it’s a more subtle problem than it appears on the surface. A decade ago I had a conversation with a friend where we commiserated over the word “discipline” and how unfair it was when it was applied to activities we loved. Pushing yourself super hard can absolutely kill the joy, but not pushing yourself leads to atrophy and stagnation. How do you know when to push? When is discipline appropriate and when do you rest and give yourself a break?
A decade later, I had my answer: judgment about when to push and when not to is entirely learned through experience and really making forward progress in any field requires both, applied intelligently. A prescription to “be organized” and “be mentally disciplined” is absolutely useless advice even if it’s correct.
Which brings me back to _mise en place_. Rather than prescription, it’s a concrete and systematic way to acknowledge that life is messy and building high-quality software a significant challenge. It’s precisely when I am the most tired and distracted that it is the most valuable, even if it’s not ideal circumstances. For me, the assembly of materials takes on an almost ritualistic quality: the notebook and black uniball pen, the laptop, the IDE, the “hello world” proof of architecture. It keeps me from being overwhelmed and provides a sense of organization and satisfaction I use to get me over whatever internal resistance I have to the work.
More importantly, it reminds me that software is a process not a destination. You do the work, you do your best and you recognize that your code is not you. Bringing order and discipline isn’t about proving something, it’s about making safe space for deep focus, play and learning.
The meta message
All of which is to say that I decided to make the post about the meta process of getting organized instead of the actual coding problem I was unraveling because it’s just as critical to the process and it goes largely unrecognized as a skill. Like any skill, the more I practice the more intuitive and beneficial the practice becomes.
The last benefit is more elusive but probably the most important: it allows me to be a beginner over and over again, consistently. My fragile ego shouting at me, telling me “I should already know how to do this” or “I am not making enough progress” or “I am clearly dumb as a box of broken hammers” gets dimmer and dimmer if I just focus on the basics. I know I’m going to need carrots, so cut the carrots, put them in a bowl and we’ll deal with the onions in a minute. One thing at a time, one prep at a time, one task over and over again IS the work.
Which means, ultimately, that the real practice is to stay curious, focused and relaxed which not only makes the process more pleasurable but produces wildly more successful problem solving ability.