6 Jan 2014
How To Be A Great Developer
Empathy is your most important skill. Practice it with everyone you interact with, and everyone who interacts with your work.
Humility goes hand in hand with empathy. Be open to the possibility (likelihood, even) that you are wrong. Know that you will always be learning and improving. Accept and own up to mistakes immediately.
The less you fear being wrong, the more confident you can be. You are wrong about many things. You know very little about most things. Everyone else is exactly the same way. Embrace it. Always learn, always question, always adapt and grow.
Understand what you do well, and what you don’t.
If you have a job you enjoy that pays pretty well, know how lucky you are. We live at a time where the demand for developers exceeds the supply. Not everyone is so lucky.
Refuse to participate in tribalism. We are social animals, and being part of a group gives us confidence, but warring over technology choices distracts us from doing good work and practicing empathy. Build communities with what we have in common, and embrace the diversity that makes each of us unique. Make them safe places for anyone who is interested in participating.
Make people’s lives better with your skills.
Don’t worry about how many people use what you make. Empowering 5 people is incredibly special. They will remember what you did for them.
Make the community around you better. You don’t need to go to some Magic City of Tech Genius to do important work. It doesn’t matter where you are – what matters is the difference you make in the lives around you. And this is the Internet, so the people “around you” could be on the other side of the world.
Share what you learn with the people around you. Ask them to share what they have learned with you.
Your choices of technology and technique matter, but only so far as they serve what you make with them. As a musician, I ran into tons of people who had great gear and loved to argue about equipment, but barely ever finished a song.
View absolute statements with extreme skepticism.
Dismissing a technology without a sound, reasonable argument is lazy and prone to error.
Be extremely careful about participating in X vs Y arguments. They are rarely worth your time.
Be liberal in learning about new technologies and approaches. Be conservative in using them.
If you go to conferences (and you should if you can), try to catch one or two talks about technologies you have no experience with. Look for beginner/intro level presentations about a language you’ve never learned, or a platform you have no experience with. Even if you never use it in production, exposure to different approaches and techniques will make you a better developer.
Any technology can be the right choice depending on the needs of the project and strengths of the team.
Never assume you know why a decision was made unless you were in the room when it was made.
Always keep two groups in mind: the users and the rest of your team. They are the ones affected by the decisions you make.
Poor communication will kill the effectiveness of the most talented team. Work hard at effective, structured communication and documentation.
Reserve your loyalty for people. Not brands. Not companies. Not technologies.