I've been a freelancer since 2007 and, for a big chunk of that time, I've built bespoke Rails systems for tiny businesses. Like fewer than ten employees small.
I love working with these types of businesses. They don't have much money, they generally have little technical know-how but I get to talk directly with the people who will be impacted by my work.
But during the pandemic, it got pretty tough. I got referred to another (small) company and did some freelancing for them; then they offered me a job as their CTO. They had a bit of money so the thought of a regular salary and working on one project for a long period of time sounded appealing.
That's how I became Technical Director at Collabor8Online. It's a full time job and we have a number of customers who rely on us with pretty high stakes.
So I went back to my tiny freelance clients and said "I probably won't have time to work with you much any more; I'll help you find someone else". And they all said "no, we don't mind waiting, we'd rather stay with you".
But they still had requirements that needed changing, bugs popped up, support was needed and juggling my time was difficult.
Then I had a lightbulb moment.
Four of my clients had four different systems. But underneath it all there is a whole set of shared concepts, shared ideas.
If I could extract those, put them into one base, configurable, code-base, I could unify those systems. The clients get to share new features and bug-fixes, my life is easier as I have less code to juggle. And my configurable, auditable, design should mean the clients can diagnose some of their own support requests and perform their own functionality changes.
I decided to call this new system "Standard Procedure".
The clients could define their "standard operating procedures" within the app. And I could work on client systems in a standard way.
I came up with this towards the end of 2022. I had plans to get it up and running my mid-2023.
But life gets in the way.
C8O started winning a load of new customers, hitting a real winning streak. And each one needed a few tweaks or new features adding. We then won our biggest ever client - a huge corporate - and more than six months later on, we're still working on their feature requests.
And with that focus on C8O, I kind of lost all my momentum on Standard Procedure.
Things got hard. So I needed to either walk away from the freelance work or get this built. The former is the easier thing to do, but I've always hated the idea of having all my eggs in one basket.
Instead, I'm committing to building this thing. And to hold myself accountable, I'm committing to building this thing in public.
That means at least one post per week describing the progress I've made, the problems I've hit, the good stuff I've built and the mistakes I've made. Plus a few rants when I'm under stress and pressure.
What's in it for you?
I've been writing ruby code since 2005. Pretty much full-time since 2007.
There have been many times when I've created things and thought "that is some of the best collection of code I've ever seen". And there have been just as many times when I've got it horribly wrong and ended up with a mess of shitty code that I don't even understand myself.
So you get to see it all; the good and the bad. I hope you push me to get this finished and it becomes another of my "fucking great" projects. And I hope you get to see how a real world project unfolds, how my 15-odd years of experience lead me to choose designs and make decisions, and maybe you'll learn a few things and get inspired.
Thanks for joining me.
PS: if you don't already, please subscribe to have these posts delivered to your inbox. I hate spam as much as you so I promise never to send you crap or sell your details on.