The problem with giraffes
And what they can teach us about building software
Read time: 4 minutes
So as it turns out, a weekly newsletter while finishing off Think it, Build it is out of the question.
Alas, I do have something prepared this week.
Tidbit of the week
Stripe are so awesome. Did you know that every time you charge your user, they create a receipt?
It’s saved at a special URL, which unfortunately isn’t returned in the native Stripe plugin’s charge action.
However, if you simply save the charge ID, and pass it along in a GET call to their charges endpoint, you can save it in your DB and link you users to it (like in a table of their payments)!
The problem with giraffes
The giraffe is a marvel at the power and elegance of natural selection. Nature basically did a bunch of A/B tests on different neck heights, over and over again, for millions of years, and poof, Giraffe.
And yet, the Giraffe is also a terrifying example of technical debt.
If you cut open a Giraffe’s neck, you would find the laryngeal never. It’s job is to carry signals from the brain to the larynx, to coordinate things like making sounds and breathing. The distance, from brain to larynx, is a matter of inches. A simple, short wiring job should do. And yet, in Giraffe’s, the nerve leaves the brain, goes all the way down the neck, loops around the heart, and double’s back on itself before connecting up to the larynx; a distance of metres, not inches.
The ridiculous detour is a product of the fact that evolution can not go backwards. Giraffes, like all mammals, evolved from fish-like creatures, where, owing to their lack of neck, the nerve could easily hop from brain to larynx. But it happened to do so behind another nerve connected to the heart. And so as evolution produced mammals, some with necks longer than others, this nerve stretched, as it were, to accommodate the advantages longer necks gave.
The laryngeal nerve exposes one of the downsides of evolution - it can’t go backwards.
It’s tempting to think of our development process like evolution. We’re discovering the right product for the market by making small adjustments to what we already have and then putting that new version in front of users.
From a business perspective, this is a no-brainer, especially with no-code in our back pocket.
However, as the laryngeal nerve tells us, as any system evolves, it’s foundations, the early decisions, lock us in to certain design decisions down the track, lest we embark on a complicated restructuring exercise later on (otherwise known as refactoring).
This is where, as engineers, we have a distinct advantage over natural selection: we can predict how things might evolve.
This doesn’t mean spending hours projecting multiple scenarios. It’s more a matter of asking ourselves simple questions while we set things up to give ourselves maximum flexibility later on. Things like?
Are there likely to be more user roles than just admin? Consider making them a list of roles (stored as an option set), rather than a number of individual yes/no fields
Are we going to use the same design for this informational popup in several places? Consider making the alert element a reusable element and populate it’s text fields using a custom event.
Is the commission our app charges on each transaction likely to change? Then don’t hard code the value in your charge actions, but pull it from an option set
Does this mean we should get the whiteboard out and brainstorm all the possible ways our app should evolve?
Of course not. As with any strategy, planning has it’s limited. You are always dealing with incomplete information, which makes striving for the perfect scalable solution impossible, and likely to waste your time.
But, it does mean making a habit of asking at the outset of each new project or feature, “how could this evolve in future“? Likely there are some low hanging fruits, some particular ways of setting things up, that will make your life much easier in future, but require no, or little extra work now.
If you want to get more Bubble related content from me:
Check me out on Youtube, where I frequently publish free Bubble tutorials.
If you’re a non-technical founder looking for a step-by-step guide to building your app on Bubble, my course Think it, Build it is for you.
Enrolment is currently closed until October, but sign up to this newsletter, and I’ll be sure to give you a bell when it opens!