I’ll confess something: many years ago I became a Developer because I enjoyed it. I’ve always really enjoyed programming, creating code, spending nights and weekends doing hacking.
I don’t consider myself a talented developer, perhaps a careful, organized developer who enjoys his work. I have been able to work with colleagues much better than me, from all over the world, but on several occasions these engineers lost their jobs.
Recently they asked me what makes this engineer a Senior Engineer? After explaining the technical part of the question, I explained the non-technical part of the question, which many see as secondary, but is even more important than simply “knowing how to program.”
After thinking a little about this, I want to explain in this post what I have thought over the last few days about those non-technical skills that developers require to be better (and differentiate themselves from the rest).
#.1. Creativity and innovation
Developing software is a creative process. When developing software we must analyze the situation, everything we have and find a way to reach the expected result.
Many times reaching that result requires being creative or looking for different alternatives for the same purpose.
Likewise, the developer must see beyond what is right in front of him. You should be able to see possible errors/glitches or advantages.
#.2. Communication and negotiation
This is perhaps the most basic and the one that causes the most problems for inexperienced engineers and developers or those who are just starting to work.

Developing software requires working with teams of people. If the people who carry out the work do not have good communication, it is impossible for the result to be good.
Being a good engineer requires being a good communicator. This has nothing to do with social skills, it has to do with basic communication: communicating if you are blocked, your progress, if you require something to continue moving forward, validating the requirements with the client.
#.3. Empathy, gratitude and humility
Developers have some bad reputations when dealing with other developers. A good developer must be empathetic with the rest of those who work with them:
- Know how they can react to different situations.
- Understand your main skills and main defects.
- See from different perspectives.
- Make decisions not only from our point of view, but from everyone’s point of view. Likewise, we must be grateful and humble to everyone who works with us. Sometimes we may be right and other times not so much. This is why it is important to be able to be grateful when we are not right, but we are corrected, and to be humble when we are right and we correct others.
#.4. Teamwork
Software development, like baseball or football, is done as a team. Knowing how to work as a team is extremely basic in this job.

The developer must know that they will not always be right and that this is not a game in which they fight who is right and who is wrong.
Furthermore, working with a team that respects each other, supports each other and has chemistry makes the work more bearable.
#.5. Responsibility and honesty
- Did you say you were going to hand him over? Fulfill it!
- Did you say it would be ready tomorrow? Make sure it is!
- You said you did something, but you haven’t? very bad
This is a trustworthy job. Once trust is broken it is very difficult, if not impossible, to regain it.
There is nothing worse than a developer than one who does not do his job and one who does not comply with delivery times or his word.
This point is closely linked to that of communication. If you are late in delivery, let us know in advance. If you haven’t advanced enough, still. The important thing is that it is not a surprise if the opposite of what you promised would happen happens.
#.6. Attention and care in details
Feel that the work you always deliver is work that must bear your signature. Pay attention to all the details, even the smallest ones.
I know this may be contradictory to some agile practices, but what I mean is that if someone corrects your work and points out some improvements: embrace them and accept them (even if they are for the next Sprint).
“But that’s how it already works” should never be an answer.
#.7. Time and task management
As a last point I would like to point out this. Many of the developers who start in this “art” are very bad at managing their time and the tasks that correspond to them.
By this I mean that they usually require someone to manage their work and constantly consult with them about the status of progress.
A developer must go further, he must be able to organize his responsibilities in the time he has available alone.
#.Which other one do you think I should mention?
Which other one do you consider to be important? I believe that universities must increasingly help develop these skills that increasingly come from recent graduates. To developers who are just starting out (or those who consider themselves technically good but failed the test), I say that we all fail at some on this list daily. The important thing is