avatarAbdelfattah Sekak

Summary

The article discusses the three unconventional virtues of a great developer: laziness, impatience, and hubris, and how these traits can lead to success in software engineering when harnessed correctly.

Abstract

The article "The Three Virtues of a Great Developer" introduces a unique perspective on the qualities that define an exceptional engineer. It suggests that traits traditionally seen as negative, such as laziness, impatience, and hubris, can actually be powerful assets when applied constructively. Laziness encourages efficiency through automation, impatience drives innovation by pushing for better solutions, and hubris, balanced with humility, fosters a pride in one's work that leads to continuous improvement. The author, drawing from personal experience and the teachings of computer programmer Larry Wall, emphasizes that these virtues must be coupled with a commitment to growth and learning to truly excel in the field of software development.

Opinions

  • The author believes that strong opinions weakly held are key to progress, allowing for confident decision-making while remaining adaptable.
  • Laziness is seen as a positive trait that can lead to increased productivity and innovation, as long as it does not result in procrastination.
  • Impatience is viewed as a motivator for change and improvement, particularly when it leads to the development of better tools and processes.
  • Hubris, or pride, is considered essential for believing in one's ability to create significant work, but it must be balanced with humility to allow for learning and adaptation.
  • The virtues should be synergized to foster a fulfilling and successful career in engineering, rather than being seen as isolated traits.
  • The author encourages embracing these virtues as strengths that can help developers navigate challenges and solve complex problems in the field of software engineering.

The Three Virtues of a Great Developer

Your unconventional virtues can be your secret to success

The three virtues of a great developer — generated by the author via Midjourney

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.

  1. 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.
A relaxed sloth leisurely lounging on a tree branch

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.

A young child sitting at a table, fidgeting and appearing impatient
  1. 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.
An American eagle poised majestically with the United States flag fluttering in the background

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.

Developer
Personal Development
Personal Growth
Entrepreneurship
Programming
Recommended from ReadMedium