How to Become Better (Developer)
Fundamentals are forever. So it would be wise to invest your time to grow those.
Although this article is written for software developers, I believe there are some universal truths here everybody can learn from.
- Teamwork — Great teams build great software so don’t take teamwork and your team for granted. Cultivate and prune your team. And, what is more, try to see situations from a different team member's perspective.
- Trust and cohesion — "Team without trust isn't a team: it's just a group of individuals, working together, often making disappointing progress". Teams move at the speed of trust. Be the kind of dependable person you would want to work with.
- Communication — Communicate honestly and proactively. Do not assume that because you understand something and it is simple and easy for you that everybody else perceives it the same. Listen before speaking.
- Seek Consensus — It is really helpful if the whole team is on the same page so make sure to take the time for your whole team to get aboard. Discussion and disagreement are not necessarily bad as they can lead you to the best solution.
- Automated Testing — Well-tested code allows you (and your team) to move fast with confidence. And not only that, using TDD (where you write tests simultaneously as you code) can speed up your development by providing faster means of testing (clicking through your UI to test some scenario is tedious, error-prone, and slow).
- Clean, understandable, and navigable code and design — Think of the next engineer that will take over your code as your customer. Build code that your successor won’t have any trouble reading, maintaining, and updating. More often than not you will be your own "customer" and you'll have to modify some parts several months later and you'll have trouble navigating your work if not properly taken care of. So imagine how hard this would be for someone else.
One extra thing to consider is the multiplicative system mental model.
Let's say you value your coding skills as "10", writing clean code as "8", your testing skills as "9" but your communication skills as "0" (because your work should speak for itself, right :)). Then if we do basic multiplication 10 x 8 x 0 x 0 result would be 0!
If you are missing one of the traits for a great developer (great either by your standards or by community standards) your value could be 0. Does not matter whether you're a 10x if you do not know how to communicate with your peers, your PMs. Or if you do not know how to communicate your value to the community.
Here are my sources for this article and links you should visit to learn more:
- What I’ve Learned in 45 Years in the Software Industry
- Multiplicative System Mental Model
- Building Trust Inside Your Team
- Curse of Knowledge