Live data from Hacker News

Ask HN: Essential skill needed to be a programmer?

news.ycombinator.com

81–90 of 193 posts

Re: Ask HN: Essential skill needed to be a programmer?

#81

Just "to be a programmer"? Frustration tolerance. Thats pretty much it. To be a good programmer: very much depends on your area of expertise. Most of them need good communication skills, some machine-level understanding, some math or algorithm skills, some require high velocity / long hours... It really is a very diverse field. But like for most jobs, frustration tolerance gets you surprisingly far.

Gladwell's book Outliers held this theory that the people who learned to be good at math are the ones who sat down long enough to see it through. It took about 22 minutes for someone to learn a basic fundamental of math. Most people give up by 2-5 minutes. Programming is a lot like that. Arguably those with good algorithm skills and such have even higher frustration tolerance.

Re: Ask HN: Essential skill needed to be a programmer?

#82
I would say humility is the most crucial skill. If you can't admit when you're wrong or you lose your mind when peer reviewed, you are going to find yourself in more trouble than working correctly in a team setting. It also allows you to question your own code to confirm if it's the existing code or yours (usually whatever is new is broken, not always, but usually there's a high probability). I have had coworkers that have lacked simple humility and self-destruct verbally when you question their code, and I've heard of coworkers having worked with people that will never admit to their code being wrong until you point to the exact line and the change they need done to fix the issue.

You waste more time defending something that will always need updates and fixes than you do getting things done when you lack humility. It is something I learned early on and I hope more developers learn it.

I will take a 'good enough' dev with a wonderful personality over an above and beyond developer with the most toxic personality any day of the week, unless I'm under an extremely tight deadline. A toxic developer can poison a whole team and ruin their productivity.

Re: Ask HN: Essential skill needed to be a programmer?

#83
I think that largely depends on what kind of programmer you are. Like it or not, systems development, app development, backend, frontend, integrated circuit development all have their own mindset and associated challenges and skills. What is your most essential skill? the drive to learn.

Re: Ask HN: Essential skill needed to be a programmer?

#84
As with everything in life: Get your ego out of the way.

People tend to identify themselves with technology they mastered and miss out on all the improvements that happen. This works for a few decades if they're lucky, but someday they're old and wonder why nobody values their skills in an obsolete technology.

We can't all maintain Cobol code bases when we are 50.

Re: Ask HN: Essential skill needed to be a programmer?

#85
The tech skills that I think are critical to a software dev:

Git and version control, learn them as in depth as you have time for. Every decent dev environment has these and the amount of people lacking this basic knowledge is staggering.

Bash/Linux or powershell/windows same thing. You can get an amazing amount of things done with shell scripting in your OS. Unless you have an insane amount of time I would pick one and learn in depth. These are rich systems.

A dynamic programming language in depth. There are so many concepts that will transfer between languages that if you know one in depth, you'll be able to pick another one up pretty fast as it's just semantics at that point.

SQL, this is an essential part of dev life and you will understand ORMs and data management better.

The personal skills:

Communication obviously. This is such a vague term and I think is abused as people just say 'lERn to CoMmUNicate' with no actionable advice. Things like politeness, small talk, respect for other's etc.

At the same time know when to be honest. I've seen the best communicators tell management exactly what management wants to hear over and over and projects kept being behind or over budget because there was a dysfunctional connection between the manager and the engineer who kept B.S.ing them with what they wanted to hear and the nitwit manager eating it up and for some reason never learning.

Systems reasoning, learn to understand the system from the line of code up through the stacks to the whole. Sounds cliche and it is but it will make you a better programmer.

Debugging. This will be most of your life. The more you understand the system, the better you are at it.

Managing upwards. Keep your manager happy and communicate your work to them.

Re: Ask HN: Essential skill needed to be a programmer?

#86
Just my 2cents, alot of people mentioned alot criteria which I heard during my days as (empathy : backend engineer, abstract thinking : android dev, communication: company tech lead). But I think the core is the mindset to self improve that's best for you right NOW (self discipline).

This is really really really hard to do, since we are mostly lazy beings who rather click 50 arrow up key to find the one important command than remembering it or just dont mind to repeat a mundane process without finding a shortcut to do it faster. Programmers who I met that manage to finish a task in 10 minutes instead of 1 day usually have this trait. But I guess this applies to other jobs as well ¯\_(ツ)_/¯

Btw, I used to work as a part timer at my university department. One day one of the staff ask me to reformat about 90 Excels document to her desire format, she spend 10 minutes showing me how to type them out one by one. After this, I went to setup Python environment in that computer and google how to read excel docs. In a few hours I have finish the work that what would took me more than half a day to finish.

Re: Ask HN: Essential skill needed to be a programmer?

#87
post #84

As with everything in life: Get your ego out of the way. People tend to identify themselves with technology they mastered and miss out on all the improvements that happen. This works for a few decades if they're lucky, but someday they're old and wonder why nobody values their skills in an obsolete technology. We can't all maintain Cobol code bases when we are 50.

I hope you are aware that 50 year olds started working 1990 to 1995 or even later, when there was a lot more than just COBOL going on.

In fact, a 50 year old is more likely to have caught the rise of desktop GUIs and of Linux than have spent a career doing COBOL.

Re: Ask HN: Essential skill needed to be a programmer?

#88
The essential skill needed to be an is to be interested in it and enjoy it. Paul Graham writes (somewhere in his essays, couldn't find it with a quick scan) that the notion of 'aptitude' is highly suspicious. We get better at things by doing them, and after doing them for a long time we look like we have an aptitude.

A caveat: Just as being interested in and liking to play a sport won't get you to play at the top levels without talent as well, there are lots of programmer's jobs that will be out of reach, but others WILL be in reach.

Re: Ask HN: Essential skill needed to be a programmer?

#90

Earlier quoted context omitted.

I intended it to be pretty open ended. Mostly interested in skills that are useful for _both_ solo and team work. I agree that there are some things that can be very useful for team work that are not as essential for solo work when it comes to programming. For example, being able to justify technical decisions to higher ups. Lots of communication skills are essential for teamwork.

The examples I gave obviously requires being part of a team, but even programming on your own, I think it's one of the most important skills. I'd be happy to elaborate on that argument if you have any examples of one or more situations where you wouldn't consider communication important? :)

I totally agree - I think I'm probably coming off as disagreeing with you though.

I think the difference for me is that the importance of communication for solo programming is a bit of a sliding scale depending on what your goals are. There aren't many exceptions when you work on a team. When I use the word importance, I'm tying it to a notion of necessity in relation to some goal. Team goals trump individual goals in organizations.

if you have no intention of making your code available for someone else to read / use / modify, the benefit for having readable code is really for yourself in six months and nobody else.

you also don't need to tell anyone what you're doing, so being able to clearly / succinctly explain what it is and why it's useful isn't a necessity. Does that make it an unimportant skill? No, it's just that the goals are different

Post reply on HN