One of my responsibilities as CTO is to evaluate the work of the engineering team. At TNW, we offer that feedback every six months, which creates the opportunity to establish goals and set expectations for every person in the team.
There are five competencies or key aptitudes that I consider the most important to the success of any developer. In this article, I will explain each one of them and why I believe these are the most important skills for every developer or software engineer.
1. Communication skills
The goal of communication is to share information effectively between colleagues. A clear, plain and jargon-free way of speaking is key to avoid miscommunication between technical and non-technical individuals. In addition, being proactive when communicating missteps, technical failures, or missed deadlines is vital for the team and your manager.
Finally, good written skills are important, too. These days most of the communication in a team happens in written form (documentation, commit messages, Slack, email, etc.) so it's something I really appreciate from a developer.
2. Strategic thinking
A basic understanding of the business needs and goals of your organization goes a long way, even for junior developers. This knowledge helps you to focus your efforts and put your contributions in context within the organization.
3. Technical leadership
No matter your experience, you should be able to teach other people and be humble enough to learn from them, provide support to colleagues, spread knowledge, be supportive and lead with the example. Developers can also show leadership by proposing changes that have a positive impact on the team and the organization, such as championing good engineering practices and creating great documentation.
4. Organization and time management skills
Good time management, reliability and a focused way of working are a ‘must’ to prevent overtime and ensure an effective delivery of projects and features.
5. Technical knowledge
The knowledge and expertise around the technologies, systems, and tooling needed to complete a project without issues is obviously a key skill for every software engineer. Just like the ability to write code that is reliable, efficient, secure and maintainable.
These are the five capabilities I take into account when reviewing the performance of the engineers in my team. Care to share yours? Let me know your thoughts on Twitter!