3 ms·
Hmm, I know a person who says he knows C++. He has spend more than 10 years studying the language, and at all the HFT companies he works at micro-optimizing cod
by mettamage 3y ago
Hmm, I know a person who says he knows C++. He has spend more than 10 years studying the language, and at all the HFT companies he works at micro-optimizing code they all say that his technical ability is better than whatever senior person works above him. I don't know C++ much, but he'll happily tell you how compiler passes work and what the differences of GCC, Clang with LLVM are.
I've noticed he doesn't know everything, but he knows a lot.
There are exceptions to statements like this.
I'd change "never" to "almost never".
- sillysaurusx 3y agoTen years of in the field work is about right for that level. It’s probably accurate to say that if you’ve spent less than that writing C++, you’ll discover things that will surprise you. The alias keyword was mine.
- michaelt 3y agoIt's partly a question of how you define "knowing something" For one thing, when a language feature doesn't really work out, the user community will notice and it'll disappear from most codebases. If a Java developer with 20 years of experience has never worked with java webstart - is their mastery incomplete? And even for features that aren't deprecated, almost no jobs will demand every feature a language offers. A veteran Java developer with 20+ years working on high-performance backend server code might not know much about JavaCard, or packaging their code for use on Windows, or the state of the art in making GUIs, or the latest kitchen-sink enterprise framework - is their knowledge incomplete? Of course, some would say if your definition of "knowing a language" is so demanding that nobody meets it, some might say that's an unrealistic bar....
- Remnant44 3y agoExactly this - The language is big and getting bigger, and so is the standard library. But this is true of almost any popular language! By the metric people are applying to C++ here, there is no one on earth who "knows Java", which is patently ridiculous. A better metric would be "Can write code in that language for some domain".
- tialaramex 3y ago> A better metric would be "Can write code in that language for some domain". Can you though? C++ chooses to sidestep Rice's Theorem with IFNDR (Ill-formed No Diagnostic Required). IFNDR is sprinkled on lots of the ISO Document and what it basically does is, everywhere the language needs semantic constraints for soundness Rice's Theorem would otherwise make it theoretically impossible to write a C++ compiler so they just say well, if you break this semantic constraint you haven't written a C++ program. The compiler won't know, and neither will you, but it's not our fault if your program doesn't work, it was actually never a C++ program anyway. This is a great rhetorical device - if the goal was to win a debate championship this sort of sidestep is very clever. But obviously it's going to produce a vast amount of nonsense, it's terrible engineering practice, and yet for decades people acted like this was OK.
- mrpopo 3y agoI remember going through all the specified points in the graph over my first 5 years of C++-ing, except the exception handling (probably because we had set rules on using exceptions for error handling). Also, this graph is from 2010, so it's missing some lambda magic, auto vomit, and static object initialization got easier since.
- hliyan 3y agoI too have 10 years of C++ development under my belt, also in HFT, but this was from 2003-2013. I do find it easier to understand and solve a lot of problems by going one level lower than most developers (TCP packets, call stack, heap memory, disk blocks, CPU instructions). However, this depth, at least for me, seems to come at the expense of breadth of knowledge of different technology offerings and the best way to apply them. E.g. I could write a queue from the ground up, but I don't know enough about the features and behaviours SQS, RabbitMQ etc.
- maratc 3y agoI have worked with a person who was the "big C++ gun" at the company, taught C++ in a big university two days a week, and IIRC also was on some sort of standards committee (in any case his name was on some document from them). His knowledge of the language was breathtaking. In a personal conversation, that person told me that he estimated that he knew about half of the language, and that average career length wasn't enough to learn all of it. This was way before C++11.
- JohnFen 3y agoEntirely this. C++ has grown into such a monstrosity that I think anyone claiming to "know" it is fooling themselves. Nobody can "know" it in the sense usually meant when saying you know a programming language. I've been working primarily in C++ since the days when there weren't even C++ compilers (you instead ran the C++ code through a program that turned it into C that you compiled with a C compiler). By any reasonable measure, I am proficient in the language -- but I think I'm actually proficient in about half of the language, same as your coworker. This is also why I've moved away from C++ in the last few years. It's too unwieldy for me to use as a default language anymore. Now, my default language has become C++-as-a-better-C rather than full-blown C++.
- DangitBobby 3y agoThe TLDR of TFA is there are people who think they "know C++" but actually don't, and there's a simple test to tell them apart from the ones that do actually "know C++".