The knowledge presented in the slides will advance where you are going with your programming in the same way as knowing from which wood chess board is made will improve your ELO rating. Although learning about wood may be more worthwhile goal then learning about topics in these slides.
What is this hoping to accomplish? To convince candidates that they can't print a number? Maybe instead of intimidating people they should be inspiring them?
The knowledge presented in the slides isn’t deep; it’s essential. Can’t imagine a C programmer not knowing that parts of an expression can be executed in arbitrary order. Especially that this is aimed at embedded C programmers. It’s more like playing chess not knowing what „en passant” is.
Knowledge of standards before C99 is not "essential" unless you're on a legacy codebase. Which, to be fair, embedded, is very plausible. But then you're looking for an expert candidate anyways.
There are actively-used platforms that do not have a fully C99-compliant compiler (unpleasant, I know, but such is life :-( ). Also, many products in the embedded field have very long lifetimes (10-15 years), during which they at least need to be maintained. There are a lot of actively-used platforms that did not have a C99-compliant compiler ten years ago, and they are not exactly legacy codebases.
Edit: oh -- and (this I find truly revolting) there are companies that have not updated their coding standards and mandate that all written code should target an older standard (usually C89).
I agree completely. And honestly, it looks like the presenter is trying to brag about their knowledge of obscure C and C++ quirks through the voice of candidate #2.
There is no doubt these slides wreak of humble bragging and maybe even a bit of shaming, which isn't a good look. Obviously, there are important properties to programmers other than knowing obscure stuff.
That being said... It's still solid and I think the slides have many, many important points, both for developer attitudes and things to know about C and C++. A lot of these obscure quirks can hit you hard if you're not paying enough attention. The order of initializer lists is extremely painful and hits me every so often even though I would probably catch it in an interview.
If anyone takes anything away from this w.r.t. C and C++, I'd say the best thing would just be to always code with `-Werror -Weffc++ -Wall ...`
Hold off on the -Weffc++, it is known for false positives. It is based on a set of guidelines for C++ that appear in Scott Meyer's book (first edition!), but these guidelines are routinely violated in well-written code. For example, it warns for any base class having a non-virtual destructor, warns if any member is missing from an initialization list, etc. Some of the advice is inappropriate for modern (C++11) code.
I feel similarly. On the other hand a good intuition about memory representation is important: the difference between global and automatic variables, linker visibility etc. The unknowledgeable programmer from the slides has no sufficient intuition in my opionion. You code C precisely because you want control over these things.
Personally I don't care about the tiniest details too much. I pick them up as I go and typically at least remember that there was something that I can look up again later. Also it's really easy to navigate around most pitfalls. As the first programmer says, "I would never write code like that".
What is this hoping to accomplish? To convince candidates that they can't print a number? Maybe instead of intimidating people they should be inspiring them?