Steps are a fundamental part of a programmer’s life. The whole basis of our professional existence is taking repeatable tasks, organizing and eventually making them efficient. If not that, it’s taking apart some big, nebulous task such as “build an API service” or “create a microsite” and breaking it down until we have actionable steps.

It never really occurred to me to apply this type of step based thinking to other areas of my life - I think it would be fair to say I can be notoriously small minded and blind to the larger picture.

One of the overarching themes in Ray Dalio’s Principles revolves around systemizing things in his company so that he can, in a sense, outsource part of his thinking to a reliable system. Personally, I really never saw how founders had taken a vision for something greater than just a program and turned it into a company. Simultaneously, I realized that when I am tired or mentally drained, I’m often doing dumb idle things instead of working on something more productive. And I think part of this is because I would have to not only take some action, I would have to first figure out what had to happen and turn it into the next steps.

In programming, it had been easy for me to find a couple of repetitive tasks that I wound up automating for my own sake. A lot of it revolved around steps I had to take to build and deploy our apps, either through the native app stores (yay Fastlane) or through our over the air Javascript process (yay shell scripts).

Applying this to non-programming tasks has been feeling like a bit of a game changer over the past few weeks. For years I have been doing some variation of the Getting Things Done process, but it never occurred to me that I was performing something algorithmic, precisely because my weekly review list was too large to for me to grasp holistically (it seems to range between 12 and 17 steps, disregarding sub-steps).

Things started to click when I read an article about doing a nightly review. I had seen mild success with planning out my day the night previous, but it seemed that getting started depended on how I felt at that time. After reading this article, I decided to write out my nightly review steps so that I didn’t have to think too hard - I could just do. With a list of about seven items, the programming parallels became more apparent. The system is designed by a past version of myself, all the present version has to do is execute.

The past few weeks have been pretty good. Even with a five day break for going out of town and totally skewing my routine, it’s easy to go back to the document and open it up before going to bed.

I think it’s every programmer’s dream to invent something game changing for non-programmers and programmers alike, but for the most part we work within our communities, teams and roles. I don’t know if taking this approach to the things I do repeatedly in my general life will yield a process or program that reach beyond my personal domain, but I’m finding that this interests me less as I apply it to other parts of my life.

A few months previous, I didn’t have an approach for learning new technologies, and was interested in Rust. After reading The Complete Software Developer’s Career Guide, I realized that I need a plan, and whipped up a Trello board with all the todos that I could muster. Of course it wasn’t too long before I took an interest in another technology, and used that board to create a living document that I could apply repeatedly and tweak as I learned more about what worked and didn’t work for me. So Ray Dalio’s advice is already paying dividends (or so it seems). Ask me in a year. Hopefully I will find more opportunities to grow this practice.