Hacker News new | ask | show | jobs
by thepicard 4619 days ago
Arguably if people have such strong understanding of things they will be better programmers too. I would prefer the person who knew what they were doing, because they also know _why_ weird things are weird, and have a better real understanding of what to do and not do.

A person who just knows it's "bad code"--but not why--is almost certainly going to leave other bad code from lack of understanding. To pull an example from the slides, the virtual destructor: making that class virtual when it shouldn't is a waste of CPU cycles _and_ bad documentation for future developers.

3 comments

However, I'd be concerned that the person with strong understanding of things will simply leave uninitialized static variables lying around in the code simply because they _knew_ it was always initialized to 0. It might work if your entire coding team has that innate understanding, but that is unlikely.

Sometimes I think that having deep and expert understanding of a language may cause you to create code that other team members cannot understand... not on purpose, but due to your assumption that these are common knowledge (whether they should be or not isn't the issue.)

Static initialisers are a horrible example of "deep" knowledge. Not knowing how they work reveals not only ignorance of syntax but a fundamental lack of understanding of the entire programming and execution environment. Failure to understand your environment inevitably leads to confusion and bad decisions.
A more common example is operator precedence, especially booleans. The precedence rules are easy and set in stone for decades, but always use parentheses to clarify, and I do not trust programmers that don't.
Again, I think one with deep understanding would know that leaving it unset would result in zero, but also know that initializing it declares intent of the original author, and is thus useful.
I disagree that static initialization is deep understanding nor is it innate.
In c and c++ understanding these things can save you 1 day a week on average.
I would say even more than that.

C and C++ can make someone loose days to track down issues, in this day and age, where teams are distributed with lots of offshoring and various skill levels across development sites.

My last C++ project was in 2006, since then I have only used C++ outside work. At work our focus has been in JVM and .NET languages.

I don't miss playing the C++ fireman expert role that has to fix a stability problem created by someone in the other side of the planet.

Yea actually even last week I have spent and entire day trying to bend a c++ library to my will due to errant assumptions and such. All part of the long and painful learning process!
Lets abandon quantum mechanics because most people dont understand it.
Exactly. Deeper you go, better you are. Better you are, better products you make. Just Simple mathematics.
Totally disagree with this. I've worked with plenty of fantastic programmers who are basically worthless without the guidance of a good lead/producer/designer.

Nonobligatory image to support statement: http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128776...

That gui seems fine to me. It's ugly as sin, sure, but it has everything easy to find and clearly labeled. Ignore the parts you aren't using and you're good to go.
Ehhh. I'm not so sure about setting the depth for recursive retrieval to zero. That's basically telling wget to download the internet IIRC :D
The entire domain. Reasonable use case.
I love this GUI. Gives a clear view of what can be changed, and so much more user friendly than having to remember where each of the nested (often so many times!!) options goes. "Advanced..." buttons everywhere are the worst, and don't get me started about wizards.
A programmer is not a designer. Both are completely different fields. What you are saying is that a shark(programmer) cannot fly like an eagle(designer). But it sure can swim. And vice-a-verse.
Hmmm, no, to mimic the analogy I am saying that just because something has teeth doesn't mean it can bite like a shark. Just because something has wings doesn't mean it can fly like an eagle. A budgie with a jetpack, however, can probably fly better than an eagle. Or something.
I'm not sure if I would say that a deeper knowledge of a language would make "better products".