DEV Community

Discussion on: Why being a good programmer barely requires programming at all.

Collapse
 
trueneu profile image
Pavel Gurkov

"the stuff that 90% of us will be doing won’t require any revolutionary coding expertise" -- sure. But we're not talking about revolutionary programmers. Just good. Mediocre even.

Sure, you don't have to be a revolutionary programmer to implement an O(n*logn) sorting algorithm. But I know too many bad ones that would easily make it O(n2 ). Or worse. And they're exceptional at soft skills. In fact, that's how they got the job.

Isn't what you're saying the reason a lot of applications eat up enormous amounts of memory, work slowly and terrifyingly bad? Because they were coded with smart, approachable, determined, polite, interpersonally superior people who just can't write code?

If I'm listening to music, I don't care how well the band leader gets along with his band. Not in the abstract I don't, literally zero efs. I want the music to be good. If I need a surgery, I want the surgeon to be as highly skilled as it's possible, and I don't care that he yells at his interns, and is openly sexist, or whatever. I don't, I need to stay alive, and hards skills of the surgeon are my best bet. You can choose that smart, approachable and determined guy with shaking hands, no objections there.

If I'm using software...

Collapse
 
erikest profile image
erikest

Ya, maybe you'd want that surgeon - until you realize that despite his brilliance with a scalpel, none of the supporting people around him are top of their field, because he's pushed them all away. His requests for his peers opinions take longer to get answered, the best assistants can't stand him and have slowly migrated away and because of his open sexism, he's been unable to collaborate with the best of his field on new techniques - his high skill is limited by his other interpersonal skills and likely he suffers from Dunning Krueger because of this, thus he seems convincingly confident in his methods, yet doesn't even know that his technique is actually outdated and a less invasive surgery could be done. Instead of a tiny incision point, you walk away with several massive scars because he executed the old technique, perfectly.

Sure, plenty of a-holes have created great value in the world, but as our culture advances, it tends to be those with amazing hard skills and soft skills that have the largest reach and create the most impactful contributions.

I look at the top devs and program managers that I see speaking and interacting in community standups, etc and what I notice is that combination of technical prowess and interpersonal ease - one without the other has limitations, but people who start out good at social patterns, seem to have an easier time maintaining an enriched environment of peers, which has a multiplier effect on their capacity to learn and grow.

To your example about 50 transformations, my counter example is that a good coder may code it 'well enough', but believe they coded it perfectly and waste a lot of time and energy when their peers try to help them make it better, bitterly and pedantically holding on to any technical point they can make, instead of embracing their own continual improvement - their ego defeats them. On the other hand, if their code is wonderful and correct, but they can't communicate that to others, then the value of the contribution goes down - the knowledge dies with them, so to speak, instead of rippling out, memetically. Good ideas require great advocates to be truly effective.

Finally, there are only so many of the type of person you speak of, they have only so many keystrokes in their lifetimes and there's increasingly more code to write - if your only input to those who aren't 'as good as you' at writing code is that they shouldn't, so 'be gone with ya', then you create a divisive process not a multiplicative one - instead of inspiration you create desperation. Code that can solve a problem but could be better at solving it is better than no code to solve the problem at all. It would seem that the 'too many' devs you know gain nothing from knowing you because you haven't effectively, inspirationally transferred that knowledge. Blind superiority is a social anti-pattern, one that our culture is slowly refactoring out.

Collapse
 
chris_bertrand profile image
Chris Bertrand

Um, thanks for the comment. I'm guessing that means you agree with me then? Right?

Thread Thread
 
erikest profile image
erikest

Well, ya I agree with you :) I'm advocating pretty heavily for soft skills being an important hard skill multiplier and noting that soft skills make gaps in hard skills easier to fill - collaboratively. I think Pavel is leaving a lot of potential on the table by devaluing those social skills and I tried to provide examples to demonstrate why.

Collapse
 
chris_bertrand profile image
Chris Bertrand

Interesting, I've never had to implement a sorting algorithm, apart from for interviews. Sure they're important programming principles but not something that's written day to day.

Collapse
 
trueneu profile image
Pavel Gurkov • Edited

I bet you also never used "Animal->Cat" and "Animal->Dog" classic class hierarchies apart from demonstrating inheritance. That's not the point.
This is just a stupid example. It might be not a sorting algorithm. It might be "run 50 transformations on each item in this list". And a good programmer that can't write code will copy the list in memory 50 times, transformation after transformation, forgetting about corner cases and error handling. And a terrible programmer who can write code will make memory footprint smaller, group 50 transformations so there are only 5, and his code will never crash the process.

Thread Thread
 
chris_bertrand profile image
Chris Bertrand • Edited

All programmers can make mistakes or not know certain nuances, such things are pretty simple to catch in code reviews, which will in turn enhance their development in the future. Grads and the lessed experienced need to have good mentors to show them best practices.

Thread Thread
 
trueneu profile image
Pavel Gurkov • Edited

You're telling that juniors will become more experienced over time. It is self-evident (if they're able and if they continue to learn, of course).

If for each LOC you have 2 mistakes, it's easier to scratch the whole thing. If your code has 2 mistakes per LOC, you're a bad programmer. Sorry. You can't code. You can't fulfil your main responsibility. I don't know how to explain and I surrender.

Thread Thread
 
chris_bertrand profile image
Chris Bertrand

Everyone has their own opinions, and I appreciate you sharing yours. The article was written to elicit responses from the community, and we can see that there are people that agree and disagree with your stance.