What Makes a Good Engineer

Hanwen Zhang
3 min readNov 21, 2023

The foundation of enginerity is to seek the truth.

The beauty of computer science is always 0 and 1.

If you find an issue, dig in, always find the root cause.

Never let the truth go.

A lot of things you are not aware so you need to learn!

Recently I asked a senior engineer what makes a good software engineer, and here is what I got as a reply:

  • Someone with the hunger to learn (continues learning)
  • Someone who can think (a good problem solver)
  • Someone who can do more than just talk (not afraid/unfamiliar with coding hands-on)
  • Someone who envisions perfection, even when that might be impossible
  • Someone not afraid to take leaps
  • A good leader (a leader does not have to be a manager, and a manager does not mean to be a good leader)

Accelerating Career

I would also like to share a summary of the article I recently read that has inspired me. Read more

Discipline

  • Learn constantly, not just when life is forcing you. Understanding architecture is the key to deploying and troubleshooting any complex system.
  • Don’t be good at one thing — be amazing at a few things, and good at the rest. Keep your skills up so that you can pinch-hit when needed.
  • Admit your mistakes. The only thing worse than making a mistake is trying to cover it up.
  • Get a grip. Learn how to relax so you can get back to business.
  • Never surrender. Keep learning, keep practicing, keep refreshing, keep growing. Keep a journal of “I don’t know” topics, and then revisit it weekly to see what you’ve learned.

Technical Powerhouse

  • Figure out what makes you remember long-term. A memory technique that works for you and practice it religiously.
  • Be able to repro anything. Study and memory are powered by experience.
  • Know your dependencies. If you learn the common building blocks of one component, you become good at many other components.
  • Understand network captures. Your lab is the key.
  • Learn at least one scripting language. Fundamental computer science and logic that applies to all languages
  • Learn how to search and more importantly, how to judge the results. You can’t know everything, and that means looking for help, you must figure out how to filter them.

Communication

  • Learn how to converse. Be both interesting and interested
  • Get comfortable teaching. teaching forces you to learn
  • Learn to like an audience. get out in front of people often, it’s easier with practice
  • Project positive. confidence is highly contagious
  • Be dominant without domineering (leadership). if you sound decisive and have a plan, everyone will get out of the way.

Legacy

  • Share everything. Share what you learn with your people.
  • Did you ever exist? Invent something. Create documentation, construct training, write scripts, and design new distributed systems. Don’t just consume and maintain — build.

Jobs end at quitting time. A career is something that wakes you up at midnight with a solution.

--

--

Hanwen Zhang

Full-Stack Software Engineer at a Healthcare Tech Company | Document My Coding Journey | Improve My Knowledge | Share Coding Concepts in a Simple Way