7 Rare Skills That Will Make You an Exceptional Software Developer
By: Dejan Kuritz
Tags: Programming, Software Engineering, It, Software Development

We tend to put a lot of value on writing code that works and being able to implement a wide variety of things. This is an important aspect, but it’s not everything. Many core skills are required to becoming truly great at what we do, which often gets overlooked. Read on to find 7 skills that can make you an even better software developer!

Communication

To explain our thoughts to our colleagues and customers, you need communication skills. You need to learn how to convey your complex thoughts in a way that makes everyone understand you. Simplify your ideas. This might sound easy, but have you ever tried explaining a complex feature to a customer who’s not technically knowledgeable? Companies literally hire IT consultants for that, so developers wouldn’t need to do it. Learning how to translate your thoughts into common language might just be the thing that will push you above the rest.

To make positive changes to your applications, you need to be able to sell them to your customers. You need to be able to persuade them to change their behavior. Change is hard and that’s why many people avoid it. If you can simplify the positive sides of your ideas, you will make them easier to accept.

To make your colleagues like you more, try listing out everything you need to ask them before you do. Be precise and ask only what you need. Most of us like coding and when someone asks us a question, it can throw us off. If you are clear with your questions, you might avoid distracting them too much.

Work estimation

To help your customer set priorities for your tasks, you need to be able to estimate the approximate time required to finish them. Many features may seem simple, but require a lot of work. You need to notice this and point it out. Almost every task can be done, but they’re not all worth doing.

You will get better at time estimations for your tasks with experience, but you can make this faster. Try to estimate the tasks you need to do next and then measure the final time it took you to do it. A common mistake that many people make are optimistic estimations. This rarely goes well because the customer can get mad if you work more than that. Learn how to do pessimistic estimations instead. How long will it take you to finish a task if everything goes wrong?

Your role is to direct your customers in the right direction while designing new features. You should never get mad while this is happening. Listen and analyze. If you don’t like something, try to explain the reason why you don’t like it — remember to keep it simple. Try to come up with alternative ways to solve the required use cases. If you combine alternative solutions with time estimations, you can control the direction the software will go. This can make the development just a little bit easier for you and less costly for your customer.

Product design

One rule that I keep in mind while designing my own products is: would Apple do it? Many developers love to hate Apple, but let’s face it: they create great products. Their products are so simple that my grandpa could figure out how to use them. Simplicity sells.

Focus on the required use cases of your apps — what can you remove without affecting them? Don’t become attached to the features that you create. The goal is to make your apps better, not to add as many features as you can.

You can use analytics to figure out which parts of your apps are really being used the most. If something is never being used, it might be time to let it go.

Simplifying things doesn’t always mean removing features. You can also replace a feature with another one that fulfills more use cases. Think of your apps as solutions to problems and you’ll understand that there are many ways to solve those problems.

You don’t need to base your ideas only on other apps, you can also use everyday objects. App design is no different than designing everything else. Look at the remote control for your TV. Are all the buttons necessary? Can it be simplified, while preserving all the use cases? As you continue analyzing everything around you like that, you will also get better at designing your own products.

Writing maintainable code

Truly skillful developers write code that not only works but is also maintainable. You might be confident that you already do that, but I encourage you — take a look at your code from a couple of years ago. Do you understand everything at a first glance? We all forget our code after some time. That’s why it’s important to write code that even future you will be able to maintain.

Strive to make your code understandable, not clever. Write for the junior developer, not the senior. If you write code that’s understandable by anyone, you’ll make sure it’s maintainable by everyone.

Don’t try to look smart by complicating your code. The only thing you’ll achieve with that is that you’ll make it harder for the person who’s going to maintain it, which is probably you.

Do it right from the start. It costs a lot more to rewrite a badly written app than it does to improve a well written one. You might be slower in the beginning, but if you set everything right, future development will go faster.

Cooperation

You can’t be embarrassed to ask for help. It’s a necessary part of being a developer. None of us know absolutely everything and it’s a lot faster to ask someone who knows it, instead of learning everything by yourself. That’s the whole point of Stack Overflow.

You should also be prepared to help other people. This might be distracting for you and you might think that it makes you less productive. Teaching other people is often a very productive activity because it makes them more effective for all of their future tasks. Share your knowledge.

Software development is almost always a team activity. If you learn how to be a good team player, everyone will enjoy working with you and this might open up many opportunities for you.

Learning new things

You need to figure out the best learning method for you. Software development is a job that requires constant learning. If you don’t learn new things, you can become obsolete. By improving your basics and your learning skills, you can easily avoid that.

Try different ways to learn. You might be a person who learns the best from books, but if you never read them, you’ll never reach your true potential. Try out different things until you find a learning method that is effective enough for you to learn things at a good enough pace.

Being humble

When you’re humble about your skills, you have the most potential to improve them. You cannot improve if you think you’re the best because you will never think anyone could teach you anything. Try reversing that and being the most humble person in the room.

Leave your ego out of it. When someone gives you negative feedback, don’t just dismiss it because it hurts your ego. Understand it. Feedback is just a tool you can use to improve. Humility will allow you to use all the feedback you get. When your ego is too big, you avoid feedback. When there is no ego, you yearn for it.

Your self worth should not be tied to your skills. None of us are good at the beginning. Those who don’t accept that, never improve. Those who do and are willing to get through failure, eventually reach a different level. That’s where you can end up as well.