On my way into work this morning I waited for the transition between traffic signals just before the sun rose in the distance. Anxiety over a large project delivery was wrestling for my attention with anticipation of my usual pre-work stroll on this perfect spring morning.
As I patiently waited, the bright warmth of the sun filled my truck's cabin and lit up my face. No tinted windshield or visor could hold back the power of this brilliant behemoth. In a moment any work anxiety I harbored was banished. I wondered why can't developing and leveraging software feel like the uncompromising embrace of the morning sun? What are the aspects of sunrise that lead to the emotional response I experienced?
What does it take to develop sunrise like software
In the remainder of the post, I'll describe key aspects of sunrise that I believe developers can emulate in their work.
- Trust and Reliability
Rain or shine we know the sun remains with us. Even in the darkest of nights or amidst horrific tempests we can count on the sun to rise again.
Non-critical software doesn't require perfection or zero outages. It is of human making and inherits both our brilliance and beautiful flaws. Your work flow likely includes clever hacks around software instabilities or limitations, but for the most part it works as advertised. Exceptions include software forced on users (damned corporate policy) and parasitic fly by night or malware operations.
In order to craft reliable software developers strive for internal and interface consistency whenever possible. This is achieved by far more elements than I can squeeze into a single list. A few best practices include avoiding replication of source, regularly reviewing or refactoring existing code, and extensive testing whether automated or by expert review. Social coding on company teams or in open source projects has its own set of customs and best practices
- The Sun's Power is Awe Inspiring
Ancient cultures worshiped the sun for compelling reasons. It's energy empowers the vast majority of life on our world.
So too can software be potent. It can render life saving or breath taking visualizations and sift through incomprehensible data. Libraries enable developers to rapidly construct new powerful tools while building on existing infrastructure. If the software you're crafting isn't striving to achieve or help make possible the above, why are you building or maintaining it?
- The brightest stars aren't much without us
There are billions and billions of stars, yet without planets capable of and actively supporting life, they're not very interesting. So too must software have active users, maintainers, and developers else they lay dormant.
Art may be crafted without an audience, but when nourished and enriched by adoring fans it grows into and becomes the foundation for culture. It is under the lens of repeated and diverse attention that good projects become great, and great projects become legend.