loading...
Cover image for What Makes You a Great Programmer on The Team?

What Makes You a Great Programmer on The Team?

ilonacodes profile image Ilona Dee Codes ・4 min read

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

Posted on by:

ilonacodes profile

Ilona Dee Codes

@ilonacodes

I help developers to condense finance + investment knowledge via my tiny newsletters (+1000 readers) 📨 Get top-15 tips on how to save more cash monthly 👇

Discussion

markdown guide
 

Majority of software developers are aspired to be not only a competent professional but also a great one.

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.

 

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.

 

"A good programmer is intelligent, while a great programmer is wise."

Words to live by!

 

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

 

Hi Ilona,

Thanks for these interesting tips!

 

No one can learn everything.

main argument against fallacy of 10x engineers

 

Hey there! I shared your article here t.me/theprogrammersclub and check out the group if you haven't already!

 

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.

 

A great read. Reminds me of the book 'Good to Great' by Jim Collins

Is it possible to highlight text in an article on dev.to?

 
 

Great insights, thank you. Would def. appreciate if you're starting out and you have a great developer having your back.

 

Everything is correct except this:

They help teammates when they get stuck and take criticism well because they are more interested in team achievement than personal.

Nobody takes criticism well these days, and especially in IT😄 In fact, even the faintest of criticism is met with pitchforks, aggressive rebuttals and sometimes even abusive behavior! You need to act in a highly diplomatic and empathetic way in order to get a coder to fix something.

 

Depends on what kind of situation we are talking about. If we talk about online conversation between strangers than yes that would happen (like open source). If we talk about onsite communication in the team, then that would be strange. If there is a person who never accepts critics, especially from different people on the same subject it's time to fire them ¯\_(ツ)_/¯

 

The open source world is no different than the real world where you live in, its the same kind of humans working in both! While its true that FOSS devs couldn't be fired but being kicked out of a maintainer position in a reputed project could mean a significant loss of street cred.

In onsite communication, devs might pretend to accept criticism and not indulge in rebuttals but they'll still show it in some other manner in the form of passive aggressiveness or some other behavior which might fall within the accepted range of social conduct in workplaces.

People are the same for sure.

  1. Treatment to people who you know and who you don't is different. For people who you know you would assume better intentions first (unless you know this is a bad person). For a stranger you can assume bad or good intentions depending on the mood
  2. Meida (online vs onsite) is different. Online doesn't transmit emotions (or poorly transmit if you use emojis and gifs). Onsite you can read emotions from body and face.

In onsite communication, devs might pretend to accept criticism and not indulge in rebuttals

If somebody hears critics N times and accepts it and changes nothing it's good reason to fire them, isn't it?

the form of passive aggressiveness or some other behavior which might fall within the accepted range of social conduct in workplaces.

this is called sabotage. As soon as this will be discovered everybody on the team doesn't want to work with that person anymore, there will be consequences, like transmitting to different team or firing.

As well somebody who gives critiques can be wrong. If nobody wants to hear their critique, probably something wrong with the way critique delivered or with the reasoning.