Majority of software developers are aspired to be not only a competent professional but also a great one.
Nowadays, with accessibility to many courses online, it’s not necessary anymore to study to become a great software developer. However, a lot of great programmers went to universities and specialized in computer science. Because getting a degree in CS helps understand architecture better and gives us a holistic perspective on the world of software development in the future.
When I look at many programmers, I see that they are always trying to know about new technologies, languages, trends, and so on.
I also know that coding knowledge is a must, but it does not mean that we should learn whatever there is on the internet.
No one can learn everything.
What I have seen in some great professionals is that they are not only well-versed with technical skills, but also business and people skills. They know what business wants and deliver what companies need. They know how to work with others effectively and deliver more than they could’ve done alone.
Indeed, there are more ways than one on how to become a great programmer, but the best is probably to become a contributing member of a great programming team.
And here there are a few qualities that make for a great software developer:
1. Positive Attitude
A great programmer cares about the product. They are dedicated, positive, and patient enough to work through the most tedious and challenging problems. They take pride in their code contribution and make it easy to read and understand for other developers in the team.
If it’s necessary, they will step up and not be dissuaded by the challenge, because they care about what they are doing.
They don’t let their ego get in the way of taking feedback. On the contrary, they are awaiting/seeking constructive feedback about their work and their behavior.
2. Strong communication skills
Excellent communication skills directly correlate with excellent technical skills.
A great developer can understand problems clearly, break them down into hypotheses, and propose solutions coherently.
They understand concepts quickly, in the way by asking the right questions and then documenting received answers, not only for themselves but also for the team.
Also, by being a better communicator, they can leverage the strength and specializations of others and offer their own advantages to the folks around them.
3. Great at time and task management
It means they are highly reliable and keep in mind deadlines. They know that humans are terrible at predicting the effort and time required to complete a task, but they have become good at it by using techniques, strategies (like Agile points), and tools to help them.
4. A good team player
The desire to unselfishly share their knowledge and help other developers improve is another superb quality of great developers.
They help teammates when they get stuck and take criticism well because they are more interested in team achievement than personal. They teach new skills, contribute to open source, and write documentation that not only helps teammates but the developer community in general.
5. High-end user focus
A good programmer does what is asked of them while a great programmer does what is best for the end user of the software.
They will recommend building the solution which is best for the end user, even if it’s a more complicated or difficult opinion.
Good Vs. Great
A good programmer is intelligent, while a great programmer is wise.
In the same way, a good programmer might know tons of algorithms by heart that they use in their code. A great programmer knows which libraries to use, so they don’t have to be constantly writing algorithms.
A good programmer makes sure every functionality works perfectly before delivering. A great programmer manages the scope of the project so that the key features are delivered within the deadline.
A good programmer shows their genius by creating a complex bespoke code. A great programmer solves the problem most simply and efficiently as possible.
In fact, the transition from being a good programmer to great one often comes through passion, dedication, practice, understanding, honest efforts, time, and diverse experience.
(Ten years of diverse background is much greater than one year repeated ten times).
Sometimes they sound and behave a little like business owners. Not like a techno weirdo. They understand their role in the value-added chain and know that they are not only writing code, but they are also providing new value — new opportunities to users, business, and people around them.
The most exceptional programmers are likable and always have time for other developers in the team.
There is a lot of things that are behind being a great developer, and I just listed which qualities I find the most important in great software developers.
One of my goals is the same as yours: being a great software engineer. And more about this journey I am sharing in my weekly newsletter (+bonus “Professional Networking Cheat Sheet”).
Also, I am happy co-authoring for the book “Your First Year in Code” 📘 There you can find career advice on topics like resume writing, ethics, job titles, real stories, answers on what to do when you are stuck…
There you can find career advice on topics like resume writing, ethics, job titles, real stories, answers on what to do when you are stuck…
I hope this post is helpful to you and if you think of any other essential feature of the excellent software developer, please leave a comment below or reach out to me on Twitter.
Thank you for reading! 🙏
If you liked the article, please share it with your friends and coworkers!
Cheers,
ilonacodes
Originally published at hackernoon.com
Top comments (19)
I'd definitely argue thus. Most of the people don't want to be great. Most of the developers don't want to be great professionals. They just want to live a decent and safe life without taking too much risk - being great requires taking big risks.
Then even the majority of those who claim they want to be great, they just daydream because they are not willing to put in all the necessary discipline and efforts.
The combination of good time management and being a good team player is an interesting topic. I'm pretty sure that many think it's a sign of greatness if devs who got stuck can always ask for your help. Well, they can always ask, but you should not always be available to them.
If you are, you might foster an environment where everyone can interrupt anyone at any moment.
On the one hand, it's selfish. When you are stuck, it's very important to you. But I bet that most often it's not so important for the one who you are just about to interrupt, even or especially if team goals are most important ones.
On the other hand, it's even counter-productive because an interruption driven way of work can be up to 50% less productive. (I should look for the study later on)
My point with this is to emphasize the importance of time management.
That skill has the utmost importance. You have to be able to block enough time for yourself to work on tasks that are important in the long run and give and communicate to the others how and when they should reach out for help that will not be immediate most of the time. And it's just fine. Most often, we just need another rubber duck. So frequently by the time, my colleague would be available, I solved the problem. Maybe because I wrote it down in the chat or maybe because I took 5 more minutes to think about it.
The best programmers IMHO are multipliers, that help their colleagues improve their output.
A good multiplier can cause a group of bad or inexperienced programmers to produce great output, something i have experienced first hand in the beginning of my career.
In 12 years i've meet maybe 2 of these people.
I've had the good fortune to meet 2 such men at my current job.
Made a toast to them when we met in person for drinks in Guadalajara.
Great points Ilona. I would add accountability and no-excuses mentality. Too many people nowadays act the opposite way and I find the it too toxic
"A good programmer is intelligent, while a great programmer is wise."
Words to live by!
I would add one more. A great developer should be able to adapt. We had people in the past joining our team and hated everything about our processes...
The fact was simple...the team worked in a highly efficient way. And he thought that by adapting his ways would greatly improved our efficiency.. he was indeed right in a couple of them...which the team saw merit immediately, but others no one was willing to adapt... He keept trying for a year to change our minds and after a year, he decided we were too unorganized for him and he left. He was a decent developer.
But I think he could make a more than decent dev manager in the future. Still it lacks a lot of experience to do that.
Hi Ilona,
Thanks for these interesting tips!
main argument against fallacy of 10x engineers
Modeling, I guess.
If I may paraphrase the Oracle of Omaha, some of the best code is the code you decide not to write.
But maybe I'm just making excuses for my own lack of productivity.
Warren Buffett said that? Geez, this guy is full of surprises...
Yes those were his exact words.
Hey there! I shared your article here t.me/theprogrammersclub and check out the group if you haven't already!
Great insights, thank you. Would def. appreciate if you're starting out and you have a great developer having your back.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.