When looking to get started in your software development journey, one of the first things you’ll ask yourself is “Where do I start?”.
And while there are plenty of places that will happily list the same set of technicall skills, I strongly believe that the main areas in which you should focus are not technical.
These are some skills which are never listed in your typical job offers. They definitely help you either get your first job or to be considered a great dev, but because they’re not technical skills they can add to their resume, many new developers tend to skip them.
These are passive skills. You won’t actively have to use them, but rather, they’ll be there in the back of your mind helping you in your daily routine. The most frustrating part about them: there are no online courses or bootcamps that help you train them. These are soft skills that you need to be aware of in order to develop (if you don’t already have them).
I know this is probably not what you wanted to hear, but these are the cornerstone of growing as a developer, and you’ll need them in order to successfully train everything else. As you’re about to see, any technical skill can be learned over time by reading a manual or watching a video, but the following skills will help you through the learning process.
Yes, you’ll become a developer by learning how to code, but if you skip these five skills, it’ll be like learning to run before knowing how to walk.
Patience
Nothing says “I’m a Software Developer” like spending three hours debugging a piece of code, and figure out the problem was a missing “,” somewhere in the middle.
You’ll go through this a lot, and it’s not a sign of “Juniority” or a lack of experience, trust me; I go through that same process every now and then today, after almost twenty years.
Understanding someone else’s code requires time and effort, researching how to solve a problem requires time and effort, writing code and getting it to work requires time and effort. Patience isn’t only a virtue for a developer, it’s a must-have. Copy and pasting code from the internet only gets you half-way, the rest needs to come from you and there’s a lot of trial and error involved.
Determination
In-line with patience, you need to also understand this isn’t an easy profession. I’m not saying this to scare you off and throw this article away. On the contrary, setting the right expectations is key to avoid getting discouraged when bad things happen during your journey.
The fact is, your chosen profession will be filled with roadblocks, with problems that once fixed become ten. Bugs can take months to solve and each and every one of these situations becomes a reason for you to quit.
Trust me, I’ve wanted to quit programming multiple times during my career. The idea of moving to the middle of nowhere, away from technology, and growing tomatoes in the desert is appealing to many devs inside our industry.
Is that the sign of a problem in software development? I don’t think it is, but it is proof that ours can be a frustrating profession at times.
This is why determination is a must-have skill for developers. Mind you, you can build it over time. It’s hard to know if you’re determined enough until you’re faced with a situation that challenges you, but if you’re already a determined person, someone who is known to not give up on the first try, then you’ll do fine as a developer.
An eternal student mindset
The underlying topic of this article is professional growth and growth can’t happen without learning.
One hard requirement I put on every new software developer is to always be learning. Or at least, be open to the idea of learning.
Although it’s true that you don’t have to like a fast-paced environment to work on, our industry is always moving. Sometimes it moves forward and sometimes backward by making a twenty plus year old pattern new again (I’m looking at you React) and if you don’t keep tabs on these changes, you’ll be left behind.
I’m not saying you need to go out and learn “all the things”. That couldn’t be further from the message. What I’m saying is that you should be open to the idea that the tools you’re using right now and the things you know right now won’t always be the norm. If you don’t accept that, you’ll find yourself unable to move forward with your career within two years.
Technology pushes technology forward, it’s that simple. The tools you use today won’t be the same ones you’ll use tomorrow. New technology developments might open new areas of research, new ways of processing data, new ways of interacting with users, and when that happens the tools for the developers need to adapt. If you don’t adapt with them, you’ll be left behind.
An open mind to receive criticism and learn from it
Programming isn’t a solo profession, even if you’re considering going freelance, you’ll have to interact with other developers one way or another. Part of that interaction happens through feedback.
Code review, for example, is a common practice in software development which helps ensure code quality by having a group of devs review the code written by someone else.
If you’ve never been through it, it might sound strange, but it’s a growing experience for both parties involved if they perform it correctly:
- On the reviewing end, the group of developers reading the code need to understand that their job is to improve the code by finding logic issues, missing standards, or even some bugs.
- On the receiving end, you’ll need to understand that the feedback they’re giving you isn’t personal. Showing your code like this can feel like that nightmare where you realize too late that you’re in class naked in front of everyone. They’re putting their years of experience at your disposal; you should accept their feedback, make sure you understand why it’s given, and you’ll come out learning a lot.
Feedback comes into play in other instances as well. Sometimes it’s expected, like with performance reviews, and other times it isn’t, like getting an issue reported on your open-source project. Either way, receiving negative feedback is always a possibility, and being open to it’s a must.
Surviving negative feedback, like when it’s unexpected, can be hard if you’re not open to learning from it.
I think it’s important to make a distinction between feedback that shows a negative quality of our work (e.g. a bug), versus non-constructive (negative) feedback that only shows how our work has affected others to the point where they need to hurt or disqualify us with their words.
A negative piece of feedback has to be received as advice you didn’t ask for. It always has a nugget of wisdom inside it, and you must ignore the negative coating around it, cut through to the core message and the lesson to be taken out of it. You should consider the rest as noise.
As a technical lead, I’ve received hundreds of performance reviews in my career, and they’ve not always been positive. Whenever that happens, I try to focus on getting to the core of the problem, on trying to understand what caused that negative review to avoid that behavior in the future.
If you only see feedback as a bad thing, then you’ll start second-guessing your decisions and the whole point of that feedback (which was to help you improve) is lost.
Know how to communicate
This is a tough one because a common problem amongst developers, even experienced ones, is that they don’t know how to communicate with people.
From the outside, it might seem weird, but sometimes we focus too much on learning how to write logic code that a machine can understand, that our soft skills, no matter how small and undeveloped they are, tend to wither away.
Machines don’t need us to write eloquent sentences, they don’t really care for synonyms or the use of metaphors and figured speech. They need clear, unquestionable logic. As a developer, you also need to work with humans, who, unlike machines favor all those things.
When you need to interact with a colleague to ask for help by explaining the problem you’re having, or even when you have to solve someone else’s question, you need to switch from your “machine understandable syntax” to your “human understandable” settings.
This is why having these skills even before applying to your first job is a major advantage over everyone else in your same situation. The moment your interviewer notices you can communicate effectively, the battle is half won.
How can you develop this skill? One way to do it’s through writing.
Back when I started, both my written and spoken communication skills were terrible. I remember spending thirty minutes writing “important” emails because I had to go through them multiple times, adding words and explanations, asking colleagues to review them to see if they made sense.
It was only when I started making the conscious effort to write online (articles for my own blog) that I started learning how to write more eloquently, you can say I started finding “human friendly” ways of explaining concepts. This, in turn, helped my spoken communication skills as well (something “clicked” in my brain).
And through that and other working experiences, I was able to learn how to effectively talk to others (which helped me in my path to leading teams as well).
Yes, knowing how to communicate with others is a major skill to have, the great news is that you can start practicing it right now, for free, and figure out what your internal voice sounds like.
And what about after you get your first job?
The trick to the career path of the software developer is to remember that you’re not done when you get your job. It only means you’re getting started.
It’s like getting to the max level on your favorite MMORPG and thinking you beat the game. This isn’t right, you only unlocked a whole new level of content specifically designed for you.
And it’s the same thing with your career. Getting the job doesn’t mean you’ve mastered the trade, it means you were able to stand on the first step of a huge ladder. The skills I listed above need to be developed and maintained throughout the course of your life, and the more you work on them, the better you’ll do.
- Keep honing your communication skills, they’ll always be useful, but the higher on the ladder you climb, the more important they’ll become.
- Understanding how to grow from negative feedback keeps you from getting stuck in your career.
- Working on your patience and determination ensures you never meet a problem you can’t solve. These two skills have taught me that there’s nothing impossible in our profession, as long as you have enough time and people to work on it. This is something I like to say to clients asking if their idea is possible. The answer is always yes, no matter how crazy or difficult the request is, as long as you have the patience and determination to do it.
- Staying relevant in our industry is a must for anyone who is interested in advancing their career. This means looking outside your own box to find out about what others are doing. Raise your head every once in a while, if nothing else, to make sure you’re not the only one around.
That’s all for this article. If you want to learn more about the book, check it out on Manning’s liveBook platform here.
From Skills of a Software Developer by Fernando Doglio
Take 35% off Skills of a Software Developer by entering fccdoglio into the discount code box at checkout at manning.com.
If you haven’t already, go check out the various articles about the journey of a software developer covering things like myths about the requirements or perhaps the best practices to follow as a Jr . developer.
Top comments (0)