Live data from Hacker News

Ask HN: Essential skill needed to be a programmer?

news.ycombinator.com

91–100 of 193 posts

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

#91
The question is too broad, but along the lines of Norvig's answer...

There's a particular micro-expression I sometimes notice with people who are working on a software problem. I notice it when something goes wrong unexpectedly.

People who aren't particularly talented at SW development, for a brief instant, give a facial expression of disgust when something crashes or behaves incorrectly. People who are awesome at development, instead, have a look of amusement like they're actually looking forward to see what happened. These facial "micro-expressions" are really fast and subtle, you really have pay attention and it doesn't always work but I've seen it enough times to believe it shows something.

I think this goes back to the impulse to "improve" things that Norvig mentions. You really have to enjoy the act of programming, to be willing to improve on it. It's a kind of feedback loop. Just MHO.

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

#93
post #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.

I know.

It was a joke that targeted the argument: "You know that old tech is still in use? Look at all the COBOL used in industry XYZ."

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

#94
In addition to tolerance of frustration and tenacity (as has been mentioned several times here already), I'll go with being good at the old Sesame Street game "One of these things is not like the other, One of these things is not the same" - I feel like I'm playing that game a lot when I'm debugging.

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

#95
post #47

Thinking abstractly with a sense of curiosity and humor. Only hire programmers who like Monty Python. Second would be the ability to write a one-page summary of problem and proposed solution.

The Monty Python test. Also, Spaceballs.

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

#96
I consider this essential: The ability to decouple the task from your ego.

Specifically:

- Never say "Got it" or "OK" when someone is explaining a problem or solution and you don't follow. It feels awkward to say "Sorry, I'm still not following. Do you mean that when..." five times in the same conversation but it is worth your time and embarrassment to come away with a correctly framed and well understood situation. Otherwise you will figure out what they meant after wasting hours/days/months solving the wrong thing.

- You'll be faced with situations where your colleagues/organization expect you to implement solutions you think are not the best. Understand that "the best way" for the team or business is not necessarily the same as "the best way" for you personally or "the best way" overall. You are likely missing some context about the choice. Be mindful of reputation risks, time costs and maintenance costs involved in changing the approach.

When you're asked to code something you don't agree with (including ethical issues) your options include: silently accept their approach, refuse to do their approach, propose an approach (with conversation or code) and gracefully accept the result, or find another job. Be aware that different organizations will react differently to those approaches. Under no circumstances should you fall into the trap of spending a week to convince the team to adopt a change that would save a week of costs.

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

#97
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.

This is so easy to forget. I think when we're in the trenches it's quite hard to pull back and view what you're doing as means to an end and the means (libraries, frameworks) change constantly.

I think it's also difficult in practice because it feels good to master things in general. It's a nice feeling to know that you know a system inside and out, so detaching from that is going to be hard no matter what especially if you've invested quite a bit of your life into it

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

#100
First of all, a programmer turns a spec into working code. That's the easy part. Engineering is gathering requirements, designing the spec and ultimately coding it.

To be an engineer one must love to learn, learn fast and be able to learn on his own. It's not a job where you can expect to get training, it's a profession where you must be able to do some of the growing by yourself. It's a constant stream of new tech and new business domain knowledge. Here reading skills are absolutely required: a lot of questions can simply be answered by the relevant man page or by finding a reliable source for whatever knowledge is required for the task. You'll effectively have to become a domain expert several times in a career.

Systematic thinking and pattern recognition are essential skills to have. Our industry creates buzzwords every month and new fads in programming languages and frameworks but most core concepts remain unchanged since their inception.

Logic is absolutely required, and the ability to use the scientific method. This is crucial when debugging where you'll have to observe a problem, collect data on state, formulate an hypothesis on what caused the invalid state and verify your hypothesis. There's no "big picture" here, and every detail matters when doing this so in practice an engineers will often have to be able to keep the whole state of the system in his mind and step through it.

Communication skills are great to have; they effectively allow you to delegate and help colleagues onboard to whatever you are working on faster. From an outside point of view it's effectively super-powers, and if you want to play the politics game, allows you to get the best engineers to want to work with you.

Post reply on HN