Source

Summary:

The article highlights some of the non technical skills a mature engineer should embody.

Quotes:

Mature engineers seek out constructive criticism of their designs.

Mature engineers understand the non-technical areas of how they are perceived.

Being able to write a Bloom Filter in Erlang, or write multi-threaded C in your sleep is insufficient. None of that matters if no one wants to work with you.

Part of being happy in engineering comes from enjoying the company of the people you work with while designing and building things.

I’ve mentioned it elsewhere, but I must emphasize the point more: the degree to which other people want to work with you is a direct indication on how successful you’ll be in your career as an engineer. Be the engineer that everyone wants to work with.

Mature engineers do not shy away from making estimates and are always trying to get better at it.

Mature engineers have an innate sense of anticipation, even if they don’t know they do.

Mature engineers understand that not all of their projects are filled with rockstar-on-stage work.

Mature engineers lift the skills and expertise of those around them.

Mature engineers understand the difference between mentorship and sponsorship, and develop a habit of the latter.

What members of underrepresented groups in tech often need most is opportunity and visibility, not advice. They have to work extremely hard and be extremely good at what they do to combat the systemic privilege and unconscious bias at play in our work environments. They are consistently under-promoted and under-compensated for this work, even though it’s excellent work.

Mature engineers make their trade-offs explicit when making judgments and decisions.

Mature engineers don’t practice CYAE (“Cover Your Ass Engineering”)

Mature engineers are empathetic.

They don’t make empty complaints.

A great manager of mine said to never go to your boss with a complaint about anything without at least one (ideally more than one) suggestion for a solution.

Mature engineers are aware of Cognitive biases

The Ten Commandments of Egoless Programming

  1. Understand and accept that you will make mistakes.
  2. You are not your code.
  3. No matter how much “karate” you know, someone else will always know more.
  4. Don’t rewrite code without consultation.
  5. Treat people who know less than you with respect, deference, and patience.
  6. The only constant in the world is change. Be open to it and accept it with a smile.
  7. The only true authority stems from knowledge, not from position.
  8. Fight for what you believe, but gracefully accept defeat.
  9. Don’t be “the coder in the corner.”
  10. Critique code instead of people — be kind to the coder, not to the code.

Novice versus Experts

A Five-Stage Model of the Mental Activities Involved in Directed Skill Acquisition

Dirty secret: mature engineers know the importance of (sometimes irrational) feelings people have. (gasp!)

How people feel about technologies, technical decisions, and technical directions is just as important (if not more) than the facts about the details. Mature engineers know this and adjust accordingly. Again, being empathetic can help you understand how another person on your team feels about a technical decision, even if they themselves don’t have an easy time articulating why they feel that way.