Importance of non-coding skills
As programmers we write code to create scripts and programs as whole or part of wider websites, applications and software. So the “skills” we learn are often the skills in specific programming languages and frameworks or libraries. But what are the other skills that we must learn to be effective programmers? These skills, though not linked directly to coding, are very important to be successful in our field. I believe the following are the five most important skills to develop if you wish to be a successful programmer.
1. Research and study skills
As a programmer/software engineer/developer you are a lifelong student. You must continue to retrain, relearn and add to your knowledge and skillbase. What you should learn or train in as your career progresses could depend on several factors. This could be new projects that you have, new frameworks or techniques released which are relevant to your specialism/specialities, or new knowledge and skills you have to learn to adapt to changing industry demands.
As the old saying goes; if debugging is the process of removing bugs – programming is the process of adding them in. Other than being a light-hearted take or joke on the nature of coding there is a lot of truth to this. It is virtually impossible to create entirely bug-free software (whether this software is a mobile app/website or desktop application) and is actually impossibly to guarantee that your code will be entirely bug free. This is because you cannot be sure you have covered all variables in user journey, device compatibility and backwards/forwards compatibility of your code. But when bugs appear it is important to be able to identify their cause and resolve it. This is why debugging skills are just as, if not more, important than language-specific coding skills and proficiency.
Developers are largely self-managed and are usually expected to manage their own time and priorities. If you are working in a Scrum team, then not only the individual developers, but the team as a whole, organise their own time and priorities. This is why estimation, in terms of workload, complexity and cost of time, are important skills to learn in being a developer.
Einstein famously said of knowledge: “If you can’t explain it simply, you don’t understand it well enough.” This is true of most things and that includes technology and software engineering. As a programmer you will have to work with people of mixed levels of technical knowledge, mixed levels of proficiency in your working language (spoken/natural language) and mixed levels of experience (in the project itself or in using the underlying technologies). Communication with clients may also be a key aspect of your role. In communicating as a tech professional, it is important to stay between the lines of assuming knowledge and being patronising when discussing software/website development.
When writing code your project can become very messy. This is more likely as the codebase becomes longer, functions more complex and more variable names are used. This is often not the responsibility of an individual developer within a team. But it is still important to use methodical approaches to writing code even if by yourself, or in a team. Important aspects to organising your code include:
- adequate commenting (not under or over commenting) for code and functionality that would not be immediately obvious to understand
- naming variables and functions in a way fitting in with the conventions/rules of your project
- organising files/templates in a modular way so that individual scripts do not become too long.
Please leave any comments, questions or notes and thoughts on other essential (non-technical) skills that are important to learn as a developer that you can think of below.