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


  • 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.


  • 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.


  • 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