Early guide for human centered software
As time pass, I feel more drawn to the principle that coding should be gracious toward humans.
When we code, and if we do that in a professional manner, we do it for others in the future. For our customers, for our colleagues, even for our future selves. Sometimes it feels like an isolated task in a corner of a room. But normally, in an active codebase, it will affect others. This has led me to think in a different way when I am working. It is not only about the problem, or the business case, or the algorithm. Is about the people.
Principles of a graceful codebase:
Treat others with respect: Keep a clean and documented codebase. Spaghetti code is great for discovery and ideation, but terrible for production code that will be updated later. The future will come to praise you or to hunt you.
Treat others with compassion: Write programs that handle failure as an expected state. Try for the worst outcome and provide an easy way to recover from it. Treat failure as a possible scenario, normally is more common than success. Our future will come back grateful or pissed off.
Treat others with humility: Code with a Junior developer in mind. They don’t need to learn twenty layers of abstraction and read a two hundred page manifesto before starting to feel productive. Keep your work simple, do not mistake it with simplistic. The future will come back as a partner not as an enemy.
Treat others with empathy: Code with a customer that is not sitting in a high speed internet loft in a megacity. Consider that even more, if you are coding a global product. Data is expensive, computational power is time consuming, we should value the time of others as much as we consider ours. The future will come back joyful or will replace us.
Computers are tools. We work for humans.