What makes a great developer? Are they great at MongoDB or iOS? Do they know how to use Promises, ES6 and React?
Maybe. Or Maybe not.
The tech industry places far too much importance on technical skills. Language, frameworks, and platforms come and go, but approach and behaviour is what separate the good from the great. .We need to shift focus and cultivate the soft skills in parallel with hands-on skills.
I’ve come up with a”Tao of being a great developer” to help bring these principles back into focus. It’s something that I strive to work by and I hope you can too.
Do the “right” thing (instead of just the “easy”, “cool” or “fun” thing)
This isn’t about taking the skipping out on shortcuts or avoiding new technologies. This is about paying attention and listening . This is about being honest with yourself in every action and decision you make
If there’s one group of people that can convince themselves they have to use technology X or methodology Y, it’s programmers. How many times has your team decided on the language before even starting a project? Have you met with a client, barely listening to their requirements while planning out the architecture in your mind?
Doing the right thing = being honest with yourself and putting the needs of the client and project ahead of your own.
Is <Framework X> really the right fit for the project? Or are you choosing it mainly to learn and add your resume (selfish reasons)?
WebSockets are cool and all but are they really the right choice for the customer’s blog product?
Ask yourself: “How will the end users benefit from this choice? How will <MongoDB> make the user’s experience more enjoyable and more reliable? How will deploying this to Amazon Web Services make this a better product that more people will want?”
This can be a really hard question to answer honestly without bias (Some youy may not even be aware of ). Play Devil’s Advocate in your own mind. Find others to do the same (especially ones that you know hold different views and will try and talk you out of it). This ability is what seperates good developers from great developers
Be confident, but humble.
If you’ve worked as a developer for some time, it’s pretty easy to let your successes go to your head. It’s human nature to be good at remembering our successes and forgetting our mistakes, oversights and bad decisions.
When doing your work, be confident enough in your experience but open-minded to other input and perspective. Listen to everyone: juniors, non-technical people, sysadmins, marketers, etc. Everyone has a different (and potentially valuable) perspective. Be comfortable with saying: “I don’t really know that technology well, but am confident I can figure it out.” or “I don’t feel comfortable that I’m the right guy for x, and just want to be up-front. But so-and-so is great at that, so lets loop him in”
I also want to call out is the bullshit technical debates that are (mostly) a waste of our time. We all have our preferences an choices, but getting into low-level, polarizing battles doesn’t help anyone. For example, NoSQL databases are a great idea for certain projects and a terrible idea for others. To say “I hate MongoDB, it’s crap” because of a single anecdotal experience doesn’t help anyone. It might have been the right tool at the time, or a client requirement or a million other things. Service X might be slow with millions of records but if its great for MVPs and that’s what your building, it might be the perfect choice. View anyone that issues blanket statements about a technology with a critical eye, especially if they don’t know the use case.
Solve problems instead of pointing fingers
We’ve all been in a meeting where something has gone wrong and the first thing to happen is fingers get pointed.
“This is DevOps fault, they should have been watching for those errors”
“This is the user’s fault, they shouldn’t be clicking the submit button twice”
Blame does nothing to help the user or the project or the client. The only thing that matters are the solution and outcomes.
A good developer is really good at owning their mistakes and fixing them
We’re all human and all make mistakes. It’s a surprisingly rare trait to openly admit a mistake (the sooner the better). Even better, propose a quick solution and a longer term one to make sure it doesn’t happen again. The blamers will eventually get outed as projecting their shortcomings onto other people. These people are toxic.
You either succeed as a team or fail as a team, there is no in between
To be a great developer, your personality and style matters just as much as your technical chops. You need to do the right things, and balance learning cool stuff with making the right choices. If you are confident and approach mistakes as a chance to become better, you are on the path to greatness.