4 ms·
Well, I see it from the hardware engineering side because I'm a hardware engineer who works closely with software engineers and have read one too many CV that l
by SilverBirch 3y ago
Well, I see it from the hardware engineering side because I'm a hardware engineer who works closely with software engineers and have read one too many CV that lists "C/C++" as language, normally "So, tell me about SFINAE" or "Explain RAII" is enough to cut through that pretty quick.
I think a massive part of it is that Software Engineering is better than hardware engineering. The software engineers are great! They have all these tools and documentation and they're free and open source! So there's no barrier to entry for a hardware engineer to pick up C++. But if a software engineer wants to pick up like Verilog for example... Well firstly, you're going to need expensive hardware, secondly the tooling is all closed source propriety and costs thousands to license. Oh, and there's no CI, the debuggers are tcl based tools from the 90s. etc. etc.
A hardware engineer can pick up software tools and solve the tiny part of the orchestration that needs to be done in software easily, but there's no equivalent where a software engineer would pick up hardware.
- deredede 3y agoRAII is a good question to weed out inexperienced C++ programmers, but I don't think asking about SFINAE is a very good interview question, unless the job involves heavy template metaprogramming, and even then it is such an obscure name for a fairly intuitive concept ("yeah so the compiler will only use the template definitions that work") I am sure there are many people good at template metaprogramming that don't know the term. Edit: changed "incompetent" to "inexperienced" as it better reflect my opinion.
- SilverBirch 3y agoIt's not a pure "if you don't know SFINAE you're out" but it gives you a very strong indication of which parts of the language they're actually familiar with (although maybe it's a little dated now), and for a lot of candidates you could go through a list of dozens of these acronyms and they wouldn't be able to reasonably identify any of them.
- orwin 3y agoI'm pretty sure my brother doesn't know what RAII is, but he's a way better C++ developer than me. The principle of scope, and scope-bound (and scope-bound objects) really took of recently, and i'm pretty sure a better name than RAII exists now (especially since RAII doesn't mention deletion, and resource deletion is litterally the point of RAII). He might know about SFINAE, i didnt (but i never got into C++ metaprogramming, and he did).
- zabzonk 3y ago> The principle of scope, and scope-bound (and scope-bound objects) really took of recently "recently"? - you are joking. i suspect that neither you nor your brother know much at all about c++. RAII and scope are both core ideas in c++ and always have been.
- Merad 3y ago> RAII and scope are both core ideas in c++ and always have been. I would say that's debatable. RAII definitely dates back to the earliest days of C++, but you don't have to know it in order to use the language. Even today there are many professional C++ devs who've never really learned RAII because they write C with classes style code. I first started learning C++ about 20 years ago and IIRC at the time usage of RAII was still in the minority but there was real momentum towards it being considered the "right" way to do C++.
- zabzonk 3y agowell, i started using c++ in the late-80s, and even back then RAII (possibly not under that (bad, IMHO) name) was widely seen as an important feature of the language. how else could you implement a string class (which you had to do yourself back then)?
- Merad 3y ago> how else could you implement a string class I'm not claiming that it's good C++ code (or good code by any measure) but I imagine those "C with classes" devs would do something like: my_string* s = new my_string(); s->initialize("hello world"); // ... s->destroy(); delete s;