When I see posts with titles like “Top 5 Developer Skills for This Year”, I despair slightly. The content is typically a list of mundane technologies which happen to feature frequently in the endless stream of uninspiring job ads. C#. React. Node. Python. Full-stack. Whatever. I hope these articles are not taken seriously by anyone trying to advance their career. Technologies come and go. If you want to make an impact in your career or you want to hire better for your teams, think about everything outside of the technologies.
Here are five traits that I believe can make software developers and teams significantly better.
Conventional thinking yields conventional results. When people are open to experimenting, taking risks and trying new things, you can really increase your productivity and energize everyone in the organization. I listened to the Hidden Brain podcast episode entitled Rebel with a Cause this week. It covers the research of Francesca Gino, a Harvard Business School professor who has discovered the many ways rebellion and rule-breaking can lead to positive change.
The world of software is full of unwritten rules (patterns, best-practices) that can hold us back if we follow them like mindless sheep. Of course, if you listen to this episode, they make the important point that experimentation is best mixed with experience. This should encourage us to value the risk-takers, respect “junior” developers and aim for a positive blend of inexperienced mavericks and cautious wisdom. If you have plenty of experience but feel you might have become stale or mundane in your approach, step out of your comfort zone and try something you might fail at. The feeling of becoming a beginner again can bring about renewed creative energy.
When I’m holding job interviews, one of my favourite answers to hear from candidates is “I don’t know”, no matter how “senior” they are claiming to be. Humility is a trait that fosters better collaboration more than others. If I find myself trying to bluff my knowledge of any topic with my teammates, I give myself a mental slap. When everyone can both contribute positively and be honest in their weaknesses, you have the basis for a really high-performing team. Humility also leads to people asking questions when they need help. Asking questions brings about knowledge sharing. Knowledge sharing is critical to software development.
I’m not talking about focusing on your breathing and being in the moment here (though I don’t doubt it helps). Professional mindfulness is being aware of what you are doing in your work and why you are doing it. This is critical in software. It is far too easy in our profession to get your head down and dedicate all your energy and focus into solving a technical problem.
Software development is 50% art and 50% engineering. There are too many variables and unknowns for it to be a fully engineering discipline. Instead, we have to be creative and make choices. We have to be aware of this, keep observing our work and be prepared to stop, question our approach and change course. Mindfulness applies to how we work too. Know when to pair with other developers, know when to question the task you are given. Be aware of how your work contributes to what matters (hint: this is usually revenue). And be aware of the people around you and how your approach affects your team. If you struggle with awareness, share what you are doing with those around you and look for feedback. This will help you achieve awareness from a different perspective.
The fact that software is 50% creativity means that when we have new ideas, they come with passion! We want to share them loudly and have them appreciated. Be careful of this. Zeal can blind us from alternatives and give us biases that distance us from others with alternative views. Understand that, no matter what their level of experience, others on the team have equally valuable opinions and we can improve by listening to them. Stop talking so much. Listen much more. You will be much more highly regarded and rewarded for it.
Since software development is not always an exact science, we have to make assumptions and base our decisions on intuition. To balance this, we have to always check our assumptions and take proper measurements. The most effective way I have found to improve productivity is to ask “Why?” repeatedly when you are about to embark on a task. If you question the purpose or value of many tasks deeply enough, you’ll often find that the task is unnecessary. Saying “no” to meaningless or low-value work gives everyone way more time to focus on what matters. Unfortunately, many of us are conditioned from our school days to follow instructions obediently and tirelessly strive towards the “right answer”. Questioning our work and accepting that there is no such thing as a “right answer” is both liberating and empowering.
This article isn’t a checklist of soft skills that everyone needs to have. If there is one message to take from it, it’s that the best software development comes from a well-balanced mix of people from diverse backgrounds. Stop sending out job specs with lists of technical skills in the hope of adding another developer that looks and acts like everyone else. Improve your teams and your work by adding people who are different. Get in some rebels and critical thinkers!