Table of Contents
Software is everywhere. It powers our phones, our cars, our banks, our hospitals, our entertainment, and our communication. It is one of the most important and influential inventions of human history. It has enabled us to create amazing things, solve complex problems, and connect with each other across the globe.
But software is also broken. It is slow, buggy, insecure, and unreliable. It is often frustrating, confusing, and disappointing. It is constantly changing, but not always for the better. It is becoming more and more complex, but not more and more elegant.
Why is this happening? Why is software quality declining in the age of abundance and innovation? Why are we settling for mediocre software when we have the potential to create something great?
In this article, I will argue that the decline of software quality is a symptom of a deeper problem: the decline of human quality. I will use the quote “Hard times create strong men, strong men create good times, good times create weak men, and weak men create hard times” 1 as a framework to explain how software reflects the cycle of prosperity and regression in society. I will also suggest some ways to break this cycle and create better software and better humans.
How Hard Times Create Strong Software
The quote “Hard times create strong men” implies that adversity and challenge are necessary for human growth and development. When people face hardship, they have to adapt, learn, overcome, and survive. They have to be resourceful, creative, disciplined, and courageous. They have to be strong.
The same applies to software. When software is created in hard times, it has to be efficient, effective, robust, and secure. It has to solve real problems, meet real needs, and deliver real value. It has to be simple, elegant, and beautiful.
Some examples of software created in hard times are:
- Unix: A family of operating systems developed in the 1970s by researchers at Bell Labs who wanted a portable, reliable, and flexible system for their work 2.
- C: A programming language designed in the 1970s by Dennis Ritchie as a successor to B, which was itself a simplified version of BCPL 3. C was created to implement Unix and other low-level applications that required direct access to hardware 4.
- TCP/IP: A set of protocols developed in the 1970s by researchers at DARPA who wanted a robust and scalable network that could survive partial failures and support multiple types of communication 5.
- LaTeX: A document preparation system created in the 1980s by Leslie Lamport as an extension of TeX 6, which was itself developed by Donald Knuth in the 1970s as a response to the poor quality of typesetting in his books 7. LaTeX was designed to produce high-quality scientific and technical documents with minimal effort 8.
These examples show that software created in hard times tends to be:
- Focused on solving real problems rather than creating artificial ones.
- Driven by curiosity and passion rather than hype and profit.
- Based on solid foundations rather than shaky trends.
- Optimized for performance rather than appearance.
- Tested for reliability rather than popularity.
- Documented for clarity rather than obscurity.
- Maintained for longevity rather than novelty.
In other words, software created in hard times tends to be strong.
How Strong Software Creates Good Times
The quote “Strong men create good times” implies that strength leads to success and prosperity. When people are strong, they can achieve their goals, overcome their obstacles, and improve their conditions. They can create wealth, happiness, and peace. They can create good times.
The same applies to software. When software is strong, it can enable its users to do amazing things, solve complex problems, and improve their lives. It can create value, satisfaction, and joy. It can create good times.
Some examples of software creating good times are:
- The World Wide Web: A system of interlinked hypertext documents that allows users to access information from anywhere on the Internet . The Web was invented in 1989 by Tim Berners-Lee as a way to share his research with his colleagues at CERN . The Web revolutionized communication, education, entertainment, commerce, and social interaction .
- Google: A search engine that allows users to find relevant information from billions of web pages . Google was founded in 1998 by Larry Page and Sergey Brin as a research project at Stanford University . Google transformed the way people access information.
- Linux: An open-source operating system kernel that powers everything from servers, desktops, smartphones to embedded devices. Initiated by Linus Torvalds in 1991 as a hobby project, Linux fostered a movement towards collaborative development and today stands as a testament to the power of community-driven innovation.
- Facebook & Social Media: Platforms that have reshaped human interaction. Founded in 2004 by Mark Zuckerberg and his college roommates, Facebook paved the way for the era of social media where sharing personal stories, news, and forming global communities became the norm. Social media has redefined how people connect, communicate, and even initiate social change.
These examples demonstrate how strong software can foster good times by:
- Enabling seamless communication and connectivity across the globe.
- Democratizing access to information and resources.
- Facilitating business innovations and opening new market opportunities.
- Amplifying personal and collective voices for positive change.
- Streamlining processes and improving efficiencies in various sectors.
In essence, strong software not only simplifies complex tasks but also plays a crucial role in advancing society, driving economic growth, and fostering global collaborations.
How Good Times Might Foster Weaker Software
“Good times create weak men” suggests that in times of prosperity and comfort, there’s a possibility of becoming complacent. As challenges diminish, there’s less urgency to innovate or maintain the same rigor that led to the initial success.
Translating this to software, the good times may lead to:
- Development based on trends rather than real-world needs.
- Over-reliance on frameworks without understanding their underlying principles.
- Prioritizing aesthetics over functionality.
- Neglecting security and reliability for rapid deployment.
- Focusing more on marketing gimmicks rather than genuine product improvement.
For instance, the app market is flooded with countless applications with overlapping functionalities, leading to redundancy. Moreover, with the rise of “move fast and break things” culture, some companies prioritize speed over stability, resulting in buggy software releases.
How We Can Foster Strong Software in Good Times
To ensure continuous quality software in prosperous times:
- Emphasize education and skill development, ensuring that software engineers are well-versed in the fundamentals.
- Promote a culture of continuous learning and innovation.
- Reward software that addresses genuine user needs and challenges rather than just following trends.
- Prioritize security, reliability, and user experience in every phase of software development.
- Encourage collaboration and open-source development to benefit from diverse perspectives and collective intelligence.
The quality of software, like the cycles of society, may have its ebbs and flows. However, understanding the influence of societal prosperity on software quality can offer insights into mitigating potential pitfalls. By valuing genuine innovation, emphasizing education, and fostering a collaborative development environment, we can aspire to continuously produce strong software irrespective of the societal phase we are in.