Recently, Andrés Pagella just gave me a really interesting article. "On being a senior engineer" is a must-read even if you find hard to follow a huge article in English. I spent invested about an hour in order to finish it. And I will highlight the parts I liked the most:
Senior engineers don’t know everything. They’re not perfect in their technical knowledge, and they’re OK with that. [...] In order not to confuse titles with expectations that are fuzzy, sometimes I’ll refer to engineering maturity.
- Mature engineers seek out constructive criticism of their designs.
- Mature engineers understand the non-technical areas of how they are perceived. "This also means that mature engineers have self-awareness when it comes to their communication. [...] There’s a difference between calling someone a moron and pointing out faults in their code or product. [...] Nothing indicates that you have a lack of perspective [...] like a poorly thought out and nonconstructive tweet that slings venomous insults."
- 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 make their trade-offs explicit when making judgements and decisions.
- Mature engineers don’t practice CYAE (“Cover Your Ass Engineering”)
- Mature engineers are empathetic.
- They don’t make empty complaints.
- Mature engineers are aware of cognitive biases. "I’ve seen engineers fall prey to are: self-serving bias, fundamental attribution error, hindsight bias, outcome bias, planning fallacy. [...] Seek and accept input from others, especially when you think it’s not needed."
The only true authority stems from knowledge, not from position.
The Ten Commandments of Egoless Programming
- Understand and accept that you will make mistakes.
- You are not your code.
- No matter how much “karate” you know, someone else will always know more.
- Don’t rewrite code without consultation.
- Treat people who know less than you with respect, deference, and patience.
- The only constant in the world is change. Be open to it and accept it with a smile.
- The only true authority stems from knowledge, not from position.
- Fight for what you believe, but gracefully accept defeat.
- Don’t be “the coder in the corner.”
- Critique code instead of people – be kind to the coder, not to the code.
The web is inextricably tied to the notion of publishing and sharing information, globally.
I highly recommend reading the full article which also contains references to a lot of resources that found this opinion. Some time ago I've written a more humble article about a job description for front-end developers which I found quite nice. Perhaps this article is a lot more professionally accurate.
(this post was originally written at some old blog I had)