9499059282_f73b7d6dba_w.jpg
logjam and Boston creek Park Ranger - North Cascades National Park (Flicker)

August 28, 2023

re: GTD, Coding

This Post is part of the Blog Chain: Write An App (2023) Blog-Chain.

The sentiment this past week has been : logjammed.

I ran in to many roadblocks in my progress in learning Rust and other personal endeavors. It seemed like nothing was moving. No forward movement, just stagnation. It felt like the harder I tried to push things along, the harder they were to do.

Finally I gave up. Or rather, disconnected with my desired objectives and path, and just let be what would be. It is all personal projects, not professional work ones, so I gave myself permission to change the scope and requirements of every log in the jam, and to not expect the best of myself, but just the "good-enough".

In Rust, I had created a simple text based arena combat "RPG", and was trying to implement an inventory system from scratch without using any outside insight or models. Every day for most of the week, I tried a different approach, and as I gradually learned, that unlike my experience in C#, Rust does not have objects that inherit data from parent objects. Finally, I suspected that the most over-kill solution that I had been avoiding, json objects and data serialization, was probably the only viable and proper implementation. So I took a peek at Herbert Wolverson's excellent Roguelike Tutorial - In Rust to see if and how the inventory system and data for objects was managed. Sure enough, json data.

There was equal parts relief that I now had a model for an answer, but disappointment that the last road I chose to travel was the proper (and only?) one. I not only wasted a bunch of time experimenting and failing, but then I didn't even get to find the proper solution on my own when I very much could have.

But this was only the first log in the jam:

In my personal life, I keep many projects, goals, and objectives going. Too many. I have a whole framework I refer to as my Hierarchy of Fulfillment in which I approximately apply David Allen's 5 Horizon's of GTD to each tier in Maslow's Hierarchy of Needs. I like to always feel like I'm making progress on something, and when one project slows down below a critical threshold, I tend to start or switch inter-day focus to something else. This often results in having too many open projects, and too much stress.

So as progress in learning the Rust programming language slowed and halted, I switched to focus on making progress on something else in other areas of my life. I have annual goals I set according to my Hierarchy of Fulfillment and they were all inhibited by progress for one reason or another.

Finally they all clustered together in a big cohesive mess that left me unable to figure out what to do. It is terrible to feel confined to accept the mediocrity of idleness. However, idleness is exactly what I needed to reset my own expectations and understand that the actual cost of not meeting these goals was lower than what it was inside my head.

Of course, there are a number of ways I could handle this better:

One common way is that I could just not start or switch projects, even if they are planned, and be comfortable with slack or downtime in my schedule. This feels icky to me, as I've drilled in to my head that I must also be efficient with my limited time to maximize my realized potential.

Another idea is to commit to doing less. This would sort of "force" the slack time by not having any (or very few) queued projects. This is also uncomfortable, as every project I put in my queue feels like a must-do, where the cost of not doing it feels nearly existential. Remember: these are personal commitments, not work-related.

Yet another idea, is to make slack-time itself a project. This, I simply won't do. It would feel like "mandatory fun". Sometimes I'm simply not in the mood for fun, and I just want to get something done. Plus, how fun can something mandatory be?

The laissez-faire idea is to just let my natural energy direct me, relying on a strategy of hope that my naturally directed energy and my desired outcomes are aligned (spoiler: they're not). Hope is not a Strategy.

As I progress through the back half of the year, I'll still strive to complete the annual goals I set out for myself, but when planning begins for next year, I think I'll just take it a quarter at a time. I think this approach will help me better understand both the time constraints but also the cost of not doing something. There will be fewer projects in the queue as well, and as each quarter comes up, I can have slightly better alignment between my energy and what actually needs to get done. In supply chain terms, I will reduce the batch size, and increase the batch frequency which should make for a more adaptable process, smaller and more fixable log jams. There is probably something analogous to Agile sprint planning in this as well, for whatever Agile is worth.