## Prompt > [!QUOTE] [Leopard-Free Programming](http://ratfactor.com/cards/leopard-free) > \[From\] [Leopards in the Source Code](https://jackrusher.com/journal/leopards-in-the-source-code.html) > Jack: > >> "…​quite often developers follow an approach where they modify the code until all tests pass and then back slowly away from the keyboard before anything breaks…​" > > He then quotes Franz Kafka’s incredibly short parable titled _Leopards in the Temple_: > >> "Leopards break into the temple and drink to the dregs what is in the sacrificial pitchers; this is repeated over and over again; finally it can be calculated in advance, and it becomes a part of the ceremony." > > I have certainly seen this pattern many times: we add special leopard-handling code to our programs and it accretes until the leopard stuff is as big as the original problem being solved. > > After a couple years, the source is so leopard-shaped that no one can even remember what the original intention was! > > By contrast, it takes a very clear understanding of the problem to find a route that avoids leopards entirely. There often _is_ such a solution, but it takes time and concentration. ## Thought In solving problems, our initial understanding is only a partial understanding. As we build out the system and work through the problem, our understanding improves and we start to uncover finer details that we didn’t know about to begin (often the proverbial *unknown unknowns*). Accordingly, a lot of systems are built by hacking them together, slowly (*organically* is the term-of-art, I believe), with all the edge cases and warts from the initial partial understanding of the problem. Sometimes, if we take a step back and think through the problem space before writing code, we can explore some of these edge cases and not constrain our thinking and solution to the edge cases that we’d uncover later on. ## References - [Leopard-Free Programming](http://ratfactor.com/cards/leopard-free) - [Leopards in the Source Code](https://jackrusher.com/journal/leopards-in-the-source-code.html) ## Tags %% Daily link: [[daily/2024-02-07]] MoC: [[zk/index]] %%