What are the most important skills, a software developer should possess? If you ask that question in Google, you’ll be seeing answers like:
- Write clean code
- Solve (mathematical) problems
- Programming languages
- Accuracy and attention to detail
- Organizational & Time Management Skill
Although I agree with the ones above, I think we should no longer exclusively focus on those skills. I’ve conducted a number of software projects in different roles. Not a single time I’ve seen a software-based project and product fail because of a lack of those skills.
How to keep software from failing then?
There are numerous reasons, why software projects or products are failing. Besides the reasons that are related to external factors like market, legal or the timing, I’d like to take a look at the internal reasons. Many times I’ve seen software developers being part of that failing. That’s mostly because of missing soft skills.
Explaining – even if it’s hard
Software development is a complex task. However, there is no shortcut – don’t hide complexity with abstraction. Your management and other stakeholders need to understand that you are working in a complex environment.
Therefore, software developers need to be able to explain the intricacies of their tasks. We need to explain them in a way that stakeholders understand the consequences of their decisions. If important decisions are only based on abstractions and simplifications, your organization will take the wrong turn.
Negotiating – transparency is king
The skill to negotiate is closely related to the skill of explaining things. As I’ve described above, a software developer needs to be able to explain consequences of decisions. When it comes to the point where someone might take the wrong turn, we need to negotiate.
There are always constraints in our daily doing – time, budget, organizational issues. It’s important to be able to balance those interests against each other. A very vivid example of that is technical debt. As a software developer I need to be able to point out consequences of not working on technical debt and at the same time be able to negotiate trade-offs like lost speed in future or shortcomings in terms of features.
It’s 2021, and we have solved lots of the hard problems in software development. It’s easy to do payments, it’s easy to be scalable, it’s a no-brainer to set up an online shop and with no code even citizen developers can create web applications.
So, it’s time to focus on the user instead of the all the technical aspects. In many cases, the technical aspects of software don’t pay the developers‘ salary. It’s about customer satisfaction and superior user experience. Therefore, as a developer, I need to be able to think about software from the perspective of the user. I’ve to have a clear picture of the job a certain user groups wants to get done and how they can get it done.
Present – share your ideas
In order to create value for users, we need creative ideas. Creativity comes, when people talk to each other and share their thoughts. As most non-developers are still dependent on developers to know technical feasibility, it’s important that developers can easily take part in such activities.
Being able to share your ideas is crucial for you as a developer. This is not only a premise for creating value with software, but also for being able to explain complex issues and systems.
What to do about it?
The questions now is: How do we get there? I’ll try to explain some of my thoughts around that topic. If you’ve seen or done approaches that turned out to work for you, I’d be interested. In case, just leave comment here or drop me a direct message.
Change the way we recruit in tech
I started the article with a list of hard skills, that a lot of the recruiters in tech companies are looking for. I believe, that this is the wrong way. Of course an applicant should show the ability to develop those hard skills or already have them.
However, I see those hard skills like clean coding or experience with specific technologies only as a basis on top of which the soft skills play a more important role. That’s why recruiting should pay more attention to skills like explaining complex topics to non-technical people, negotiating skills or empathy.
Ask non-technical people to learn a tiny bit about software
I do see the skill set in software organizations as a broad bandwidth. If software developers have to move from the technical, hard end of the spectrum to the “soft” skill side, it’s only fair that non-technical people move a bit, too.
I would recommend every non-developers that is involved in software to learn a tiny bit about software development. This can be done so easily nowadays. Just browse to your favorite video platform and get your hands dirty. Start programming simple app or do some data analysis with python. It’s not that hard – I promise.
Forget about diplomas
I’ve studied at three different universities. None of them has taught me the skills I do require in my daily job. If you enroll in a technical or engineering subject, you mostly only get taught the hard skill. I see this as the reason, why recruiters use those hard skills and ultimately the grades as a proxy to assess a software developers skills.
Look for ability to learn
Software and technology change very quickly. That is why there is no benefit in looking for specific programming languages, technology usages or coding styles. Software developers need to be able to learn and adapt. More importantly, you have to be motivated and willing to do so.
If you have got those prerequisites. You will always be able to learn the required hard skills on the job.
During the last year software development and working on software got more and more complex. Software developers need to engage with a variety of people to solve complex tasks and to create true value for users.
That is why we need more and more soft skills on top of an ability to learn hard skills like programming languages. In order to get there, we need to do some things differently. Non-technical people need to become a bit more nerdy and the other way round. Furthermore, we should less focus on proxies in recruiting and start to focus more on the people.
I am curious, what you think about it? Leave a comment.
Ich bin Marco und mein Werdegang kreist um das Thema Software. Von Entwicklung bis Support und Coaching habe ich alles schon gesehen. Ich habe bei IBM als Berater große Kundenprojekte betreut und weltweit verteilte Softwareentwicklung erlebt. Als Softwareentwickler habe ich Cloud-basierte Infrastrukturen aufgebaut, mobile Apps programmiert und meinen Teams in der Rolle des Scrum Masters zur Seite gestanden.
Ich bin der Meinung, dass Balance ein wichtiger Teil des Lebens ist. Für mich heißt also beim Mountainbiken nicht nur bergab, sondern auch bergauf – kein Vergnügen ohne Arbeit.