Engineering is a challenging career. To be a good engineer, you need to keep up-to-date with technologies, keep distruping your own mind, sometime creating sparks with others and shifting mindset by re-evaluating past decisions.
Human being tends to have strong feeling about past decisions and hoping the past experience is "right". Engineers are commonly having strong feeling on past engineering design and implementation, it's always a difficult mission to detach external comments with "personal" feeling.
A few excellent engineers I personally met are really productive. They produce quality code and crafting products in fast iterations. Most of them having a common "symptoms" - they tend to self-criticizing; they were unable to recogonize their success and contributions in a positive manner.
It's unfortunate to see talented people and friends struggle. Sometimes personality is learnt by experience. It's diffucult to tell people what to do; some willing to listen some don't always happy to listen even it's a friendly advise. So everyone is on their own journey to become a better person.
Martin E.P. Seligman, known as the father of the new science of positive psychology, conducted many great research about how optimism enchances the quality of life, and how anyone can learn to practice it. The book Learnt Optimism provides research facts and tooling about how changing perception would help perceving the world, thus becoming more optimistic.
It's often about how a person perceive and self-digisting messages from the outside world. Dr. Seligman suggests three tools to apply when we "digest" life expereinces:
- Personal or Impersonal
- Specific or General
- Temporary or Permanent
When encounter a critisim, applying three tools could help to become detached with personal feelings. One might say, "Programming language A is better than B.". When we apply to the optimized thinking process:
- Personal or Impersonal: It's not a personal statement, it's not critiaizing your current toolset or any personal preferences.
- Specific or General: The statement is really general about a programming language, it does not apply or critisize anything specific to your existing work.
- Temporary or Permanent: Again, there's nothing mentioned about time and scenario when the programming language A is better, it's a general statement rather than personal.
When encunter a success, apply three tools and explaining that they are more personal, specific and permanent. One might say, "It's a great progress you've produced in the past few days."
- Personal or Impersonal: It's a compliment to "my personal" success, including with with team members
- Specific or General: It's a general compliment that acknowlege "I" have been doing good work
- Temporary or Permanent: It's a permanent success and "I" can achieve this again
When offering praise or criticism to others, the tool can also help crafting your words to make sure that:
- a critisim is impersonal, specfic and temporary
- a praise creates confidents for others, it's personal, general and permanent
The book is quite lengthy to read. Reg Braithwaite produced a great summary of the book on Github. If you prefer experencing the research and thinking process, I would recommended to read and execise Dr. Seligman's book Learnt Optimism.