Technical skills are overrated in software development.
Companies that focus purely on technical prowess when recruiting are setting themselves up to fail. Why? Because it’s better to hire for attitude and train for skills than vice versa.
Technical tests don’t assess:
Motivation to learn new skills
Attitude
Communication skills
Collaboration skills
Ability to assimilate feedback
Willingness to accept responsibility
Negotiation skills
Coping skills (dealing with failure and conflict)
Leadership skills
These soft skills give a much better prediction of how successful a developer will be within a company. They’re also essential skills for developers. Developers are in the people business whether they like it or not.
Fixating on technical skills is also a sure way to lose employees. According to a study by Leadership IQ, 89% of new hires fail for attitudinal reasons. This is not cost-effective. Developers with the wrong attitude have a dramatic effect on team morale and productivity. Emotions are contagious.
Another reason why companies should not obsess over technical skills is that ‘in vogue’ technologies change so often in software development. The pace of change in technologies and frameworks, especially in JavaScript, has become quite ridiculous.
Successful developers have an awareness of the latest trends in technology and possibly some experience in using them. But they don’t automatically jump onto the latest bandwagon.
Core technical skills don’t change (not nearly as rapidly anyway). The ability to write clean code, unit tests, understand design patterns and software principles should come as part of the standard software developer package.
It’s much easier to learn these core technical skills than it is to learn soft skills (see here, here, here and here). Technical skills can also be transferred through pair programming but successful pair programming requires good communication skills and the right attitude.
But we’re missing something here
Technical and soft skills alone don’t make a developer successful. There’s a third key skill: commercial awareness.
Commercial Awareness: A Platinum Skill
Commercial awareness is the ability to understand what makes a business or organisation successful. Developers should be able to answer these 10 questions about their company:
How are the products sold and distributed?
How are the services supplied to markets?
Who are the customers / clients?
What competitors exist?
How does the business / organisation make money?
What are the biggest problems facing the software industry today?
What big changes have there been recently in the software industry?
What blogs / publications do you read?
Can you give an example of when you’ve had to give good customer / client service?
Can you give an example of when you’ve saved an organisation time or money?
Commercial awareness means understanding the bottom line.
I believe that a lack of commercial awareness (and soft skills) is the reason that developers tend to have a low social status amongst managerial types. I once heard a Project Manager ask a developer when a piece of work would be finished. The reply was the infamous:
"It will be done when it’s done."
This answer demonstrates a lack of commercial awareness. On the other side of the metaphorical telephone line is a waiting customer. A customer that adds to the company’s bottom line and consequently keeps our job secure.
It’s not just developers either that can lack commercial awareness. In a post on assessing employee performance, Eric Elliott explained that he stopped coding for an entire week so he could conduct a usability study for the e-Commerce app he was working on.
As a result of this study Elliott managed to reduce the shopping cart abandonment rate by double digits. This represented more than $1 Million in revenue per month.
When he shared this finding with his manager the manager responded by telling him that it wasn’t his job to think about how much money he adds to the company’s bottom line. Elliott describes this as the most horrible career advice he’s ever heard.
If you’re not thinking about your impact on the company’s bottom line, you’re not doing your job. Eric Elliott
Don’t take my word for it
Commercial awareness isn’t a buzzword. It’s a core part of agile software development. Take a look at the first principle listed in the Agile Manifesto:
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Everything about this principle yells commercial awareness. The second principle states:
Agile processes harness change for the customer’s competitive advantage.
Again, this relates to commercial awareness. A successful customer is a happy (and returning) customer. Technical excellence and good design are mentioned in only one of the twelve principles.
The agile principles enhance agility. Agility means responding quickly to changing business requirements. Agility keeps customers happy and reinforces the need to deliver early to give the customer a competitive advantage.
Technical skills therefore are the means to an end. They are not the goal itself.