👨💻 The Ten-Factor Engineer
This section represents 10 factors that I think are the most important to being a good software engineer and teammate. Inspired by The Twelve-Factor App.
I. Product-oriented
Every decision or disagreement -- which tech to use, what to prioritize, which agile framework to follow, etc. -- should be focused on answering one question: which is going to build the best product the fastest?
II. Pragmatism
No situation, product, bug, or context in this industry is exactly alike. Consider each problem independently, and come up with the best solution for that problem.
III. Paranoia
Good software teams are paranoid and constantly seek out what could go wrong. They find the problems before the problems come to them.
IV. Dev Tools
The more paranoia you can shift onto automated tools, the better. Rely on computers to do what they do best (automate) to catch bugs, so you can focus on features.
V. Relationships
Highly performant teams value team culture and relationships over being "right". Their members don't let problems fester, and as a result, they enjoy working with and for one another.
VI. Feedback
The best engineers actively seek out constructive feedback and look to give it to their peers whenever possible.
VII. Learning
Learning never stops. Individually, an engineer should never stop learning new tools, concepts, and mental models. Collectively, the team should never stop learning about their customers and the team itself.
VIII. Genuine interest
A team will likely never reach its true peak unless all of its members genuinely want the end product to succeed.
IX. Team-oriented
Good teammates perform well individually; great ones lift the whole team up.
X. Perspective
Very rarely are software teams building life-or-death apps. They shouldn't take things too seriously; build something great together and have fun doing it 🙂