These last couple of years I’ve been reflecting every day on a Vision Wall that I keep in OneNote. It’s just a page with a bunch of images that remind me of things I’m working to build into my life.
One of the these pictures this year is around innovation.
Innovate. That word used to conjure up “Elon Musk-ish” level innovation. But no more. I now tell a different story about innovation.
My new innovation story is more about friction reduction. And automation.
Removing the Friction
Imagine if you could remove a small percentage of the friction you experience every day delivering software. How great would that feel? Annoying tasks gone forever.
The crazy thing is that automation - using robots to do our boring work - lets us actually do that, but often we put it off since we figure we’re just doing a “one off”. Or it would be too fiddly or time consuming to automate.
Interestingly I used to work with a guy who was completely the other way around. He wouldn’t even copy a file to a floppy without creating a batch file to do it (since he figured he’d be doing it again real soon now).
I think he was onto something.
So this year I’m leaning in to “automating the friction”. That will be my innovation. If a task is annoying (and maybe even difficult and annoying), I’m going to lean into automating it. For me, and for my clients.
I will automate the fiction and boredom right out of my life (ironically, through diving deep into the difficult and boring task of automating tricky tasks)!
Cue my next Vision Wall picture.
Starting with CI/CD
A key part of my startegy is working with the resource I have. In fact, I’ve joined one of my business mates in doing the Depth Year challenge - where I just work inside the resources I already know - but take them deeper.
I introduced GitLab to my current client (via a Docker install) and it’s been working a treat. We use it for bug tracking. We use it for revision control. We even use it for basic docs.
Gitlab has tons of CI/CD stuff in the box. You can:
- Hack up a YAML file;
- Build your app inside a clean Docker image;
- Pass in SSH keys via magic secret variables
- Rsync it to staging - or a canary build
- Deploy to production after QA
- And tons more. Tons.
But it’s all very fiddly to configure. And the docs need a polish. And it’s hard.
But since this year is about friction reduction, I dived in. And a day later I have all the cookbooks for automated build and deploy to remote hosts via rsync. It was hell, but the hell is over!
And now every time I merge to master, remote machines update and the birds sing. It’s really satisfying.
And onto the next win..
Now I’m diving into a messy refactor so I can finally get my test harnesses working smoothly.
Reducing friction AND deliving a higher quality product to the client.
You don’t need to choose.
Except automating the hard stuff. That is definitely the choice :-)