The Three Virtues of a Great Developer
Your unconventional virtues can be your secret to success
When I was just starting out as an engineer, I felt unsure about my place in the field and doubted whether I had what it took to succeed. However, a conversation with one of my managers exposed me to an idea that forever changed my perspective on what it means to be an exceptional engineer: strong opinions weakly held.
This concept refers to the importance of moving quickly and confidently in one’s work, while remaining open to making changes when proven wrong.
At first, I worried that my confidence in my abilities would be perceived negatively by my peers and hinder my progress. But as I continued on my journey, I realized that it was precisely these qualities that enabled me to grow as an engineer.
Today, I’m going to share the unconventional virtues that can actually allow you to excel in your craft and, ultimately, how to harness your so-called “flaws” for good.
The three virtues
Famed computer programmer Larry Wall is credited with introducing the concept of the three virtues of a great programmer, even back in the late 90s. These virtues may seem counterintuitive, but many of you will likely relate to their positive aspects.
- Laziness: While it may seem counterproductive, laziness is an asset for an engineer. It encourages us to avoid unnecessary work and automate repetitive tasks, ultimately helping increase efficiency and productivity. Just remember, this virtue only serves you well if used constructively — don’t compromise the quality of your work.
2. Impatience: This virtue can be a powerful motivator. When our computers or software aren’t performing as well as we know they could, it sparks frustration, which then drives us to seek out better solutions. For instance, I spent a year complaining about a cumbersome method for using Amazon S3 before finally creating an easier way to automate the process.
- Hubris: It’s essential to have pride in your work and believe that you’re capable of great things. As long as you can maintain a balance between confidence and humility, this sense of pride will help you strive to create better solutions and strive for continuous improvement.
How these virtues lead to success
These virtues come with a caveat. They must be fine-tuned with a commitment to continual growth and learning.
- Laziness should inspire innovation, not procrastination.
- Impatience must provoke improvement, rather than unrest.
- Hubris is valuable only when balanced with humility and the willingness to learn.
Thus, it’s not about embodying these virtues in isolation, but synergizing them in your journey to become extraordinary. Embrace these virtues, grow with them, and let them fuel your path to successful software development.
By acknowledging and embracing these unconventional virtues, you can break free from traditional paths, challenge accepted wisdom, and create a fulfilling career in engineering. Always be ready to learn from others and apply their knowledge to your unique journey.
Here are some actionable steps to help you put these virtues into practice:
- Identify areas where your “laziness” can help you automate processes and increase efficiency.
- Turn frustration into motivation by consistently seeking ways to improve existing systems.
- Strive to create work you’re proud of, but be prepared to accept feedback and learn from your mistakes.
Embrace your unconventional virtues
It’s time we circle back to our original conversation; the Three Virtues of a great engineer: Laziness, Impatience, and Hubris.
Don’t let their conventional interpretations misguide you; these aren’t flaws but strengths in the world of software engineering. When viewed through the lens of technologists, they transform into a catalyst propelling us towards efficiency, progress, and pride in our work.
As you step out today, remember the road might be long, the curves, hard and sharp, but with these virtues in your toolkit, you’re more than ready. Intricate problems would look like puzzles waiting to be solved, tedious tasks, opportunities for automation, and every stumbling block, a chance to rise up again.
So, venture forward into the wide field of opportunity that beckons you — armed with the lessons shared here and an open mind to learn more — and create your path, one code at a time. Dare to script your narrative. I can’t wait to see the breadth and depth of the incredible things you’ll craft in your journey as a software engineer.