A Software Journey in StepsNovember 21st, 2022
A Software Journey in Steps
November 21st, 2022
"Well-being is realized by small steps, but is truly no small thing."
–
Zeno
I was taking a walk one day when I looked down at my feet and realized how important steps are in a journey. Specifically, how important a step is when it is followed by another and another on the way to a destination. Each step I take brings me further along the path, whether that's a walk to the corner market or a trip to the mountains of Thailand. A "Hello, World" program or a finished software product.
Why is this important to software development?
Ultimately we're talking about change. Journeying in travel is changing location. Journeying in software is changing bits (or changing how computers & users should change bits).
You can't effect change without taking steps. You must keep walking to get to the corner market. Likewise, you must continue coding software to build a product.
Step size
"The infinitely big is born of the infinitely small."
–
Philip Toshio Sudo
Leaps
It might seem like the best way to take a journey is to make the biggest change in the smallest amount of time. Try it on a trip to the corner market. Try taking only leaps. I would be surprised if I could make it a block...and my knees would be shot.
Leaps are exhausting. They are not sustainable.
The same limitation applies to software. Try coding the "next big thing" in as few sessions as possible. If you don't burn out you'll miss the mark.
Baby steps
Everyone starts out unable to walk. You have to first build the strength to lift your head. Then you learn to sit up. Then, finally, you're crawling. This works well for a while.
At some point, you decided to pull yourself up to your feet. You wobbled. You fell back down. You cried. But you stood up again. Then you took a step and fell again. Undeterred, you kept at it, through frustration and failure.
After some time, you gained enough skills and confidence to run and leap. Like a five-year-old with boundless energy, you ran everywhere. It felt good! You were having fun. Occasionally you ran into things and it hurt. But you didn't stop.
Eventually, though, you pushed yourself to the limit. You got frustrated by constantly tripping and running into things. You threw a tantrum and needed a nap.
What about software?
I bet a similar pattern happened when you started learning to build software. Maybe you found a "Hello, world" example and ran it. It probably took a while to even figure out the steps for that.
Oh, I need to compile it? What's that mean? How?
Goes and scours the Internet for an hour.
Then you downloaded the compiler, fiddled with opening a command-line interface, copy/pasted an example...voilà!
If you're lucky, your language maker was thoughtful enough to include
an online editor
to help you get started.
You solved a problem and it pressed a dopamine button in your brain. Then you spent hours at the keyboard, coding away, eyes bleeding, fingers numb. But you didn't stop.
You pushed the envelope of the human mind and body. You
burned out
. You took leaps, but remember: Leaps are not sustainable.
Build a cadence
Like the runner who just finished a race, a software developer with fatigue needs rest. A nice break resets perspective. It prepares the body and mind for the next journey. You can take time to consider which way to go.
Then start back with baby steps. Work your way up to a comfortable pace. Occasionally leap over puddles if necessary. But find your rhythm. Come back to baby steps when you're losing steam. Rest regularly. Keep that rhythm. Make it a habit.
How to take steps in software
1.
Decide a direction.
•
Build the ultimate to-do app?
•
Create the next social butterfly unicorn app?
2.
Define what a small step is:
•
Hello world in a new language?
•
Hard-coded list?
•
Login page username input?
3.
Make small changes.
4.
Get continuous feedback.
•
Deploy continuously.
•
Get feedback early and often.
5.
Rest and repeat steps 2-4.
6.
Enjoy the journey.
Occasionally you'll want to stop, rest, and review your progress. Are you still heading where you want to go? Is the corner market closed? Is there a pandemic preventing you from entering Thailand? Do your users like the feature?
The journey formula
Steps start with the decision to go somewhere, and they compound when you turn them into a habit. Now you're on a journey.
•
Step 0: Define a destination.
•
Step 1: Decide to go toward it.
•
Step 2: Start moving toward it.
•
Steps 3-n: Make it a habit.
[ ------ habit ------ ]
Journey = goal + step 1 + step 2 + [step 3 + ... + step n]
Summary
When the words fail, chart the course.