What is coding? The practice of breaking down big problems into very small problems. Turning everything into logic : recipes and decisions. Taking the fuzziness and ambiguity of the world and human language and turning it into something definitive and concrete, something that can be reasoned about.
And then you start to notice things about human behaviour and the processes they generate. With the exception of a few professions, human processes are hard to reason about. They’re designed with ambiguity built in because it’s not human nature to dive deep into every problem.
Have a principle, not a process “we need to be more secure than that dating site”, “users need to be able to manage their privacy settings easily”. Every process you bake into the code will support the principles, if you have the right conversations. But how does it deal with the outliers, the user with 1 name, the one organisation with 1 million staff, the one day the stock market price changes by 60% rather than 0.6%?
For Software to be repeatable and reliable, we have to remove flexibility. How do you delegate to humans?
I’ll come back to that in a later post.