What Makes a Great Engineer/Programmer Great?
Tags: discuss
Published: 2020-01-28 12:05:31

---
title: What Makes a Great Engineer/Programmer Great?
published: true
tags: discuss
---

I've been trying to boil down various opinions from different sources throughout the web to determine the answer to the following questions:

"What Makes a Great Engineer/Programmer Great?"

Here are a few of my notes and resources -- would love to get more opinions!


## Resources:
[Getting to 10x (Results): What Any Developer Can Learn from the Best](https://medium.com/javascript-scene/getting-to-10x-results-what-any-developer-can-learn-from-the-best-54b6c296a5ef)
[Good Developers vs Bad Developers](https://medium.com/@CodementorIO/good-developers-vs-bad-developers-fe9d2d6b582b)
[What makes you a great programmer?](https://www.quora.com/What-makes-you-a-great-programmer)
[7 QUALITIES THAT DIFFERENTIATE A GREAT PROGRAMMER FROM A GOOD PROGRAMMER](https://www.scalablepath.com/blog/7-qualities-that-differentiate-a-good-programmer-from-a-great-programmer/)
[What Makes a Good Programmer Good?
](http://joshsymonds.com/blog/2013/11/03/what-makes-a-good-programmer-good/)

## Things to do

Focus on things that improve your multiplication factor more than your own productivity (I feel that both go hand in hand, if you are more productive you can make more time for multiplication factors)

*Always be kind and helpful*
	- Be a team player

*Be willing to ask for help and provide it*

*Be willing to take responsibility for your mistakes and learning from them*

*Problem Solver*
	- Solving the right problems
		○ Cleaning up old code no one wants to maintain because its challenging, so you take it on to make it easier
		○ Automating common processes to make the team faster
		○ Focus on problems that make the most impact
		○ Problem pattern matching to find solutions
	- Solve problems for the business and team

*Skilled*
	- Understanding
		○ Knowing the reasons why and being able to explain
	- Practice
		○ Practice the foundations of the language and craft of programming
		○ Architectural patterns and programming concepts that are fundamental in large apps
	- Mentor / Teacher
		○ Share code snippets / ideas with the team to get feedback / context share
		○ Knowing a lot is great, teach others!
		○ 

*Excellent Learner*
	- Ppl who can quickly adapt if you decide to make important tech changes
	- Eager to learn
	- Mentors and mentees - aka they do both roles by learning and teaching

*Passionate*
	- Go above and beyond basic job requirements
	- Commitment to excellence
	- Passionate devs master their craft, develop a sense of pride and ownership in the work, and become happier in their jobs
	- Hunger to learn

*Honest, communicative*
	- Encourage trust 
	- Ask for help, go through code reviews often, ask ppl to help
	- Let's ppl know they can rely on you to keep them in the loop and make constant, stead progress
	- Communicate complex ideas to simple concepts and understanding
	- Understand concepts quickly, understand problems clearly, break them down and explain or propose solutions coherently
	- Ask the right questions to understand

*Efficiency*
	- Focus on things that improve the multiplication factor
	- [Javascript New Year Resolutions Countdown](https://medium.com/javascript-scene/javascript-new-year-resolutions-countdown-8390dae90762)
	- Time management / Task management - highly reliable, respect deadlines, and are great at managing it all

*Compassion*
	- More friendly UX / page loads / animations
	- Solve actual custom probs
	- Compassion for teammates: write bette maintainable code, put real effort into better code reviews, mentor
	- Employees and reports - improve dev process, improve dev UX, protect devs from interrupts, handle probs and performance issues with empathy and kindness
	- Everyone appreciates compassionate ppl

*Humble*
	- Take feedback and grow from it

*They act as their own QA engineer - testing all edge cases*

*Put People/Team First*
	- Software we're writing is for ppl
	- Write documentation bc its important and helps ppl use their code
	- Willing to work extra and deal with a bit more complexity to give the ppl using software the right solution

*Be Adaptable*
	- Projects and requirements change, change with it :D

*Patient and positive attitude*
	- Care about the product
	- Dedicated, positive, and patient to work through the most boring/difficult problems

*Write GOOD Code*
	- Performant (uses the right data structures)
	- Maintainable (logically structured and commented)
	- Readable
	- Follow coding standards
	- Names that convey meaning
	- Strong tests


*Deep and Broad Technical Experience*
	- Worked with a handful of technologies long enough to become experts / competent
	- Ability to recognize recurring patterns, and know how to rectify issues they foresee
	- Versed in best practices

---

I'll be putting these notes into better format and potentially writing an article to summarize any of the discussion.

Would love to hear what others think from their experiences!