DEV Community

Cover image for Why being a good programmer barely requires programming at all.
Chris Bertrand
Chris Bertrand

Posted on

Why being a good programmer barely requires programming at all.

Yes, you read that right. To be a good programmer you don’t need to be good at programming.

I hear what you’re thinking, that makes no sense! Well hold on a second, hear me out.

When you think of a good programmer you know, what’s the first trait that springs to your mind? Determined, smart, approachable? Calm, Quiet, or conscientious? Maybe it’s something else, but I can bet it wasn’t… a really good programmer. Why is that?

Programmers require lots of skills in their day to day jobs. The discipline no longer consists of sitting in a dark basement on your own thrashing out some code. In fact interpersonal skills are some of the most important a good programmer can have. Agile methodologies require lots of communication between different departments and individuals. You’ll be required to check in at least once a day, be available for planning, refinement, retros; constantly communicating about struggles, improvements and things that are going well.

The old days of getting your tasks and specifications up front, and being left to your own devices is long gone. You’ll probably be in contact with your users, asked difficult questions about your progress, and required to feed information back to your product owner/manager.

You’ll need to talk through your design with your superior and team as most likely you won’t be working on this on your own. Testers will be asking for updates, questioning whether your unit tests are credible and sufficient, your issue tracker will need to be constantly updated keeping discussions available for all to see.

You actually might be better off with a psychology degree than a computer science one to understand how to deal with all these different people.

So yeah, programming is gonna be needed at some point, but in general the stuff that 90% of us will be doing won’t require any revolutionary coding expertise.

In most cases the reason a project will fail is because requirements were not properly discussed and refined, or teams did not communicate properly about what was required from them. Rarely will it be because you weren’t a good enough coder.

Do you share the same views? Or do you think I'm talking nonsense, I'd love to hear your opinions below.

Latest comments (58)

Collapse
 
opshack profile image
Pooria A

"Only 10% of what we do has anything to do with coding"

Hmm, sorry but I think you're just doing easy engineering in your day to day work. Doesn't apply to many really but I understand why posts like this sell well. People like to believe in order to become software engineers they don't really need to get good in it but they can instead practice small talk and public speaking.

I'm just not happy that posts like this mislead newcomers into putting efforts in the wrong direction.

Collapse
 
chris_bertrand profile image
Chris Bertrand

I agree it's a little hyperbolous but if you think newcomers shouldn't work on there interpersonal skills as well as their technical skills then I'd have to disagree with you.

Collapse
 
opshack profile image
Pooria A

There's a difference between "you should work on your interpersonal skills" and "90% of your job depends on your interpersonal skills"

And to be honest, it's much more practical to get better in technical skills than interpersonal ones. Emotional Intelligence is not something that can get better easily with practice.

Collapse
 
williamlake profile image
William Lake

Finally, that Bachelor's in psych is paying off.

Collapse
 
emiller00 profile image
Elliott Miller

I think this matters a lot on your organization and product.

Collapse
 
ghost profile image
Ghost

Is interesting the fascination of the IT crowd (yes, I said it) about this "soft skills", of course being a functional social being is better than not; of course you will work better with others if you don't are a jerk and is you can communicate well with others. Is the same in any activity that involve others, for obvious reasons. Of course if you work alone you need less communication skills than if you work on a team. If a person doesn't code much is not much of a coder is it? and in that case of course your coding skills are not that relevant, if sometimes you have to drive are you a professional driver? If you take care of the food orders at launch are you a cattering?. Of course the thing you do a lot is important and is better to do it better. To me all the "soft skills are important" speech is not that useful, the "what" you have to do is usually very obvious, the "how" can be tricky. But I think that if nobody wants to work with you, if you forcefully eat alone and you don't get very good feedback from your partners I'm pretty sure you can figure it that it has something to do with people and not because of how or when you use recursion or your overuse of comments. Just as obvious as that you need to improve your coding if your code keeps getting rejected. Because many times this "soft skills" are the shield of people who doesn't make real contributions and spend the day "social skilling".

Collapse
 
bugmagnet profile image
Bruce Axtens

"The old days of getting your tasks and specifications up front, and being left to your own devices is long gone."

Yeah, and don't I miss those days. But hey, I'm in a two-man programming company so at least the other guy tells me he wants that thing over there over here.

Programming, at least for me, has always been about problem-solving. The last bit of formal training I did was in 1988.

Collapse
 
sria91 profile image
Srikanth Anantharam

The title is misleading, but the concluding remark is thoughtful.

Collapse
 
kienngo profile image
ken

So true

Collapse
 
octavzaharia profile image
Octav Zaharia

Do you share the same views? Or do you think I'm talking nonsense

No and yes this is nonsense.
I had to make an account just to say this.

I agree programmers require lot of skills, but sweet talking, talking to testers, planning, improve his/her and the team's communication are not some of them, there are people that are paid to do this.

Programmers today are paid for and need to know about Message Queues, ESBs, Cloud Services(hundreds of them), Spark, Message Streaming, Metrics Stores, Dashboards tooling, Networking, Jenkins/Teamcity/Travis/etc, Git/Mercurial, about 2-3 scripting langugages, at least, one backend language (java,c#) at least, one frontend language (Javascript, Typescript), testing tools and testing frameworks, Sql dbs , Nosql dbs, ecosystems,frameworkt and libraries (ie for java 100 spring-xxx.jar, 3 JPA implementations, etc), frontend ecosystems(angular, react, vue, etc), OOP, FP etc.

This kind of stuff makes a developer good and we spend years learning this, I honestly don't think soft skills are things a programmer must have, I agree they are a nice to have thing, but it is an arrogance to say that soft skills can replace any of the technical skills.

Collapse
 
chris_bertrand profile image
Chris Bertrand

Haha, thanks for the comment. We do seem to have quite a lot on our plates already don't we!

Collapse
 
minnalehtomaki profile image
Minna Lehtomäki

I think that nowadays people use the terms "programmer" and "software developer" interchangeably, so I won't be focusing on the choice of word. (Disclaimer: I prefer the use of term developer, because like you said, the work you describe is more than just mere programming).

I see the work of a software developer mainly as problem-solving. And for that, you don't have to know every detail of some specific technique/language. It helps if you have basic knowledge about the possibilities and restrictions of the technology you're using. But technical skills are easy to learn when necessary.

What I think are really important qualities for a good software developer? The ability to grasp the bigger picture, enthusiasm to learn and grow and also the will to change things when it's needed. On top of the communication skills that you already mentioned.

For sure, the ability to write efficient, maintainable and reusable code (clean coding practises) is a "good-to-have". But it's a fact that not all developers have the ability to write clean code. But if you're not willing to learn and improve, then there's a big chance that you end up being one of those "I do this because of some obscure reason x that I learned years ago and I don't care if it's right or wrong. I just work here."-developers. And those can be hard ones to work with.

Collapse
 
chris_bertrand profile image
Chris Bertrand

Thanks for your comment. They're my thoughts exactly, but putting them like that doesn't make a very good post! 😋

Collapse
 
bluemihai profile image
Mihai Banulescu

I love the term "Software Writer" that DHH suggests.
youtube.com/watch?v=9LfmrkyP81M

I also love the provocative title of your article... made me open it! Thank you.

Collapse
 
chris_bertrand profile image
Chris Bertrand

Haha, Thanks. An enticing article title is always something I strive for!

Some comments may only be visible to logged-in visitors. Sign in to view all comments.