Find your stable ground
Take your time, but time’s a-wasting.
One of the guiding principles I learned during my undergraduate is to always try to find your stable ground. To this day, this concept helps me deal with decisions, manage tradeoffs and tame distractions within software engineering — but honestly, it can be applied to anywhere in life.
A quick preface
While stable ground helps me handle my work, I still struggle with ADHD, anxiety and perfectionism like a lot of you might. I like to think of it as a tool in my toolset for managing these parts of my life. During the COVID-19 pandemic, with each day seeming to have no difference from the next, I found this helped me feel a sense of productivity and progress.
What is stable ground?
The idea of stable ground is to always find a way to reach a strong checkpoint in your work, whether it’s personal or professional. That checkpoint is your stable ground. As the name implies, the opposite would be unstable or volatile ground, and that sounds… problematic.
How stable is the ground right now?
Think about that project you’ve been working on… is it ready to share with the world right now? If you said yes, you might already have a good way to get stable ground without even realizing it. If you’re like me and said no, it just means that you see opportunity to improve anything you work on. I internalize this as kaizen, or continuous improvement (more on this in a future post). That said, you’re probably in a stable place, but could use some tips on how to get comfortable with finding it. We have to face the simple truth: there is always more to be done on any project.
Visualize the ground you’re on
If you’re new to the concept, it might help to visualize it. For me, I picture a river with stepping stones spanned across it. Getting across the river is my end goal, but as long as I’m standing on a stone and my feet aren’t soaked, I’m in a pretty good place. There’s a lot around me that could distract or tempt me, but being on a stone means I’ve made it pretty far.
Mark your stable ground
Marking your stable ground serves two purposes. First, if you continue along and find yourself on unstable ground, you can go back to a stable place. Second, you can use it as a way to measure hard-earned progress. In software, you can think of making a Git commit or creating a release as a way of marking stable ground. But even in a more analog sense, having a task list with checkboxes marked when you complete a task can serve the same purpose. Whatever your method, it’s important to take a moment to recognize when you’re at stable ground before it becomes unstable again (and it will!). After all, you deserve a bit of recognition.
Find quick wins
A way to incrementally get to stable ground is by finding quick wins. When you can’t figure out why your program is crashing under a certain condition, or can’t figure out how to implement a new function, find a quick win. Honestly, even just improving documentation in your code is a quick win. Maybe refactor a few lines of code into a helper function. Quick wins depend on the type of project you’re working on, but help avoid being totally stuck at a roadblock. In the river analogy, it could be a repeatable task like tying your shoelaces or drinking some water before going on to the next stepping stone.
Tame the squirrels
So you’re crossing the river, you’re on a stone, and you’re doing the necessary preparations to get to the next stone. But you see a squirrel that distracts you and you’ve slipped a little off the stone. Squirrels are analogous to distractions, and happen to me a lot — especially when I’m facing a hard problem and the squirrel is an easier or more exciting thing to work on. But if the squirrel doesn’t get me to my next stable point, is it worth it?
Create a system of tracking debt
Squirrels aren’t always simply distractions, but could be worthwhile tasks. The trick is figuring out how to track these squirrels so that you’re not bogged down thinking about the “what if?” potential. I personally use TODO comments all over my code. I even used them while writing this post. It’s an easy, searchable way to trace down things you wanted to work on but didn’t have the right moment to elaborate on it. If you want to try the TODO method, make a ritual out of grooming your list of them (i.e. are they still relevant? do you have new information? etc.) It can even be one of your post-stable ground tasks. If you’re working on a personal project, these probably can be managed by you. If it’s a larger project, use a ticket tracking system and file the TODOs at the end of your work.
Take a break
All the other parts of this post are about active things you’d do to find stable ground. But if you’re at a loss for finding stable ground, take a break! The break can act like a mini checkpoint. Pretty much every time I take a break, I find myself able to come back to my work and within minutes get to stable ground again. The break let me free up some cognitive load, so that I could find the last few missing pieces I needed to get to a stable place.
Just ship it
In software engineering, there’s a popular phrase: ship it. The idea is that if you hold off on publishing your work because you think there’s more to do, or that things are unstable, that in and of itself might distance you from the stable ground. This doesn’t mean you have to ship things little by little. But if the stable ground is feeling good, and the next step might cause a little instability, try to ship it before continuing. This means push to production, publish your work, etc. The sense of relief of shipping early and often is worth it.
Conclusion
I hope that this helped you realize that you may already have found your stable ground, but gave you some ideas to fall back on when you’re in a tough spot and can’t see the light. Let me know: what are ways that you find stable ground?