Software engineer’s soft skills

As a software engineer, he/she needs to have the hard skills especially writing source code, debugging. He/she needs to know multiple programming languages (eg C, C++, C#, JavaScript, Python, etc). It will be even better if he/she can write tests, adopt TDD, write clean code, do refactoring, know how to implement various algorithms (search algorithm, sort algorithm, dynamic programming, etc), review code. These are all hard skills.

However, in order to perform well in the working environment, software developers are recommended to adopt several soft skills. These skills will help the team to improve the productivity.

Work estimations – Engineer needs to know how to do the estimations of the given tasks, so that the project manager can do estimation on when the features can be delivered or released. Based on the estimations, the project manager will decide the priority of the tasks.

Task break down – Engineer needs to know how to break down the tasks. A feature maybe too complex. Eg, a user story may say that, “As a user, I want to purchase a product online.” Though it is one sentence story, it can be break down into various sub-tasks, such as payment, user interface, validation, etc. It is necessary to know how to break down the tasks, then only can do better work estimations.

Foresee the issues – Sometimes the project manager or the client may want some feature. The engineer needs to think further in the technical perspective, because other users (project manager, end user, graphic designer) may not understand the possible issue. Once the engineer for see the issue, engineer should raise the issue, so that project manager can decide what to do next. By keeping silence, it will bring the feature to dead end at the end, and wasting the time and money.

Communication – Always communicate with the project manager, or other team member. Anything unclear, just ask, since this is the responsibility of the engineer. Without asking, nobody knows you don’t know. Sometimes it is the specifications not clear, because the project manager may not know as well. This will require more discussions.

Self-learning – Though communication is important, the engineer should know how to learn new things by him/herself. Technology is evolving, new technology is emerging everyday. Sometimes engineer will be assigned with task that involves to explore or experiment new technology, as a result, engineer needs to learn it.