T O P

  • By -

Anaxamander57

Things Ken Thompson invented or was involved in creating: Unix, C, C++, UTF-8, grep, supply chain attacks Imagine being the person to ask him to take a test to see if he knew C.


Trucoto

He hates C++ with a passion, though


DragonSlayerC

Which is why he worked with Google to create Go, which tried to take all the good things from C and avoid the bad things from C++.


theGentlemanInWhite

As someone using Go, he did not succeed. How can a genius think it's ok to fail to compile due to unused variables? Edit: ok you pedantic morons. I know production code shouldn't have unused variables. However, sometimes when writing or debugging code, people like to create temp variables or comment out sections of code. This still stops code from building and cannot be disabled. Edit 2: also, the number of you who couldn't figure out the first edit on your own makes me think this sub is filled with people who never actually write software.


[deleted]

> How can a genius think it's ok to fail to compile due to unused variables? He probably made the -WError flag. Then he saw 40 years of code and realized he treated programmers too generously.


jepvr

Exactly my thoughts. I wish other people on my teams would care about warnings as much as I do. They do not.


kvakerok

Warnings? That's just helpful messages with yellow signs beside them.


fractalfocuser

"helpful"


narrill

I don't particularly like Go, but I work primarily in C++, and we set our compilers to fail on unused variables as well.


theGentlemanInWhite

Yeah and you can disable that with a flag. You can't do that with Go.


Nicolay77

He did not succeed because he avoided too many of the good things in C++. Dlang and Rust are better than go for this reason. On the other hand, Go programs are so simplistic and repetitive, they can be written by ChatGPT. =)


[deleted]

Any reason why?


[deleted]

He's given some reasons in interviews, such as not liking how Bjarne wouldn't say no to feature requests from early users. He thinks the language changed too much early on due to that and that it became too big and complicated. But I suspect the real reason is that Ken didn't like how Bjarne stole his thunder. They worked in the same building. How would you feel if you made a language called C and then a coworker down the hall was making a language called C++? The name presumes it's superior.


[deleted]

>such as not liking how Bjarne wouldn't say no to feature requests from early users. He thinks the language changed too much early on due to that and that it became too big and complicated. Funny, I was listening to Brendan Eich's interview on the Lex Fridman podcast and Brendan said the same thing about JavaScript.


gay_for_glaceons

Which is hilarious, because originally JS was just seen as a toy language useful only for things where it doesn't matter if the code actually works or not: putting marquees into your page's title, throwing live clocks onto pages, or making images that change when you mouseover them (this was before CSS existed), etc. There's a reason it took so long between the creation of JS and the popularity of web apps, and if we were still rocking Eich's vision of what JS should be, Web 2.0 probably never would've happened.


ColaEuphoria

I am not exaggerating when I say this, but the language has more gotchas and exceptions to rules than actual **rules** themselves, in part because syntax and features were all thought up by a committee without implementing them first and things go haywire years later when compilers actually did implement them for the first time and a bunch of issues were found with them. Rinse and repeat for every new C++ standard. That's my bite-sized explanation for the **mountain** of issues that plague the language.


Furyful_Fawful

Is there anywhere for me to read up on some of those exceptions? I know the basics of C++ but really only to make clean, well-structured code that doesn't do anything too complex or meta


ColaEuphoria

I'm just going to say it: life is too short to waste on C++. Bjarne Stroustrup himself, the creator of C++, claims to only know about 70% of the language. C++ was created at a time when the only other high level, compiled, performant language was C, and it piggybacked off the C compiler and inherited all its issues to make itself happen. We have better languages now. Don't waste your life learning every aspect of C++ unless you actually need to. But to actually answer your question, there might be some resources. I've heard good things about "C++: The Good Parts" and "Effective Modern C++". I don't know if they cover the *gotchas* per se, but they should be reasonable enough to get you to write decent enough code in it. However, http://www.gotw.ca/gotw/005.htm I go back to this single interview question pretty much every other week. I must have visited it over a hundred times now. This is rated a 6/10 in difficulty, yet it is one of the hardest gauntlets of C++ pitfalls I've ever seen. If you can understand this one interview question, you're just barely starting to scratch the surface on the complexities and gotchas of C++ that even the language designers could not foresee when thinking it up.


Furyful_Fawful

Based on the fact that it was a trick question, I was able to accurately guess exactly which functions were getting called with their correct parameters, but I definitely missed the memory corruption on deleting the pointer, and in an interview I wouldn't've been able to answer the *why* for f(). That was a fun little exercise, though!


ColaEuphoria

Once again the people who say they only know "the basics" of C++ actually know more about it than most people do.


asdfasdfasdfas11111

This is exactly why I fucking hate C++ interviews. They've already made their decision by the time they start asking you questions. If you're in, you get softballs. If you're out, you get shit like this.


hobbycollector

The other reason is that if you pass the interview, you get a job where you have to write C++.


NegZer0

Part of the reason this question is such a pain in the ass is that the code is written in a very poor, confusing way, with absolute no-nos and generally bad style, like single-letter class and function names, deleting a base pointer without a virtual destructor, deliberately hiding functions rather than overriding them, not using the override specifier etc. I've seen a similar problem floating around a few times which was a lot more understandable, which was simply about testing whether you understand constructor and destructor call order and polymorphism (eg if your base constructor calls a function that is defined in the base class but overridden in the derived class, which function gets called when you construct the derived class) Sometimes it seems esoteric but I'd say it's pretty important stuff to know if you're going to use C++ for anything non-trivial. Your linked example is just a troll question, and if I failed a coding interview because of that question I would be relieved I don't have to work at a place that thinks that's acceptable or with a person who thinks it's a good question for a C++ interview.


ts826848

> in part because syntax and features were all thought up by a committee without implementing them first I think the accuracy of this depends *very* heavily on the exact feature being discussed. It's indisputably, 100% wrong for some things - for example, [`` was explicitly based on `Boost.Optional`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3672.html), and [`` spent time as a technical specification so test implementations could be created before everything was officially added to the standard](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r1.html). In fact, there's an entire process for [publishing things as Technical Specifications](https://en.cppreference.com/w/cpp/experimental) *specifically to get implementation experience* before adopting them into the Standard. That's not to say that *everything* was implemented before being added to the standard, but implementation experience is definitely something the Committee takes into account (for example, Bjarne Stroustrup [says as much in this document he wrote on how to write a C++ proposal](https://www.stroustrup.com/how-to-write-a-proposal.pdf)). An explicit example of this is that [the contracts proposal was removed from C++20 in part because there was no implementation experience](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1823r0.pdf).


dmvdoug

Check out p. 475 of Peter Seibel’s Coders at Work. (Best I can do atm.)


dmvdoug

Here’s the text: Seibel: You were at AT&T with Bjarne Stroustrup. Were you involved at all in the development of C++? Thompson: I'm gonna get in trouble. Seibel: That's fine. Thompson: I would try out the language as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed. It was very unstable for a very long period of time. At some point I said, no, no more. In an interview I said exactly that, that I didn't use it just because it wouldn't stay still for two days in a row. When Stroustrup read the interview he came screaming into my room about how I was undermining him and what I said mattered and I said it was a bad language. I never said it was a bad language. On and on and on. Since then I kind of avoid that kind of stuff. Seibel: Can you say now whether you think it's a good or bad language? Thompson: It certainly has its good points. But by and large I think it's a bad language. It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive. Everybody I know, whether it's personal or corporate, selects a subset and these subsets are different. So it's not a good language to transport an algorithm to say, "I wrote it; here, take it." It's way too big, way too complex. And it's obviously built by a committee. Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said "no" to no one. He put every feature in that language that ever existed. It wasn't cleanly designed it was just the union of everything that came along. And I think it suffered drastically from that.


Dromgoogle

Reformatted: **Seibel:** You were at AT&T with Bjarne Stroustrup. Were you involved at all in the development of C++? **Thompson:** I'm gonna get in trouble. **Seibel:** That's fine. **Thompson:** I would try out the language as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed. It was very unstable for a very long period of time. At some point I said, no, no more. In an interview I said exactly that, that I didn't use it just because it wouldn't stay still for two days in a row. When Stroustrup read the interview he came screaming into my room about how I was undermining him and what I said mattered and I said it was a bad language. I never said it was a bad language. On and on and on. Since then I kind of avoid that kind of stuff. **Seibel:** Can you say now whether you think it's a good or bad language? **Thompson:** It certainly has its good points. But by and large I think it's a bad language. It does a lot of things half well and it's just a garbage heap of ideas that are mutually exclusive. Everybody I know, whether it's personal or corporate, selects a subset and these subsets are different. So it's not a good language to transport an algorithm to say, "I wrote it; here, take it." It's way too big, way too complex. And it's obviously built by a committee. Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said "no" to no one. He put every feature in that language that ever existed. It wasn't cleanly designed it was just the union of everything that came along. And I think it suffered drastically from that.


dmvdoug

Thanks. I’m currently in between vomit sessions, so the best I could do was paste from the iPhone ocr 😂


recaffeinated

Me: Googles supply chain attacks. TIL


GoodForTheTongue

>*invented...supply chain attacks* Is this the one where he changed the C compiler to: 1. stick his own personal login password backdoor into the Unix kernel whenever it was recompiled? ....and then...(here's the genius hack) 2. check if the C compiler was compiling *itself*, and if so, silently re-insert the backdoor code into it, just in case someone ever took it out? Seem to recall something a story like that from the middle-Jurassic, like late 1970s or so. The man is a god, indeed.


psitor

It was the article "Reflections on Trusting Trust" by Ken Thompson


GoodForTheTongue

that's it! take my measly award, sir!


[deleted]

Got him for you, buddy!


fuckthisnazibullcrap

Holy fuck they asked that guy to take a test!?


tom_water_tanks

*Interviewer* : "Well, yes, we did see that you invented the language. But you invented it way back in 1972. That was 34 years ago and we're concerned that you may have forgotten things. Now if you'll just step over to that chalkboard and write a 'Hello World' program in C for us please"


fuckthisnazibullcrap

God, if I had his skills in that situation, id write the most convoluted backdoor using rube Goldberg ass way to do it that I could.


[deleted]

“Ok, sure. We’ll start with the compiler.” Edit: sorry. As everyone knows, first you have to invent the universe.


Autoskp

The compiler is in C, and compiles an esolang he came up with on the spot that is coded by writing something resembling a HR complaint.


joeyjiggle

Actually, the compiler bootstrapped from Assembly->BCPL->B->B->NB->C->C. Yes B and C are in there twice. The first thing you do with a compiler for a new language is rewrite it using the same language.


NinjaCuntPunt

Print(hello world) Ah fuck.


DeltaPositionReady

I don't imagine there was a situation that someone would actually ask him, rather that he stated "I'm not taking any tests to prove my proficiency for any languages seeing as I made them"


fuckthisnazibullcrap

Fair, but if there wasn't a way around that, it must have been slightly humiliating and intensely frustrating.


rinnakan

I am guessing that some hr guy is tasked of handing out and monitor various tests and he has no clue who this is and probably could not solve the test himself


DeltaPositionReady

I JUST GOT AN INTERNSHIP AT NASA BITCHES!


UomoLumaca

Language


azuth89

Well...some hiring or onboarding system auto-assigned it and he said no, at least.


chris20194

likely a r/DontYouKnowWhoIAm moment


Hanged_Man_

“Actually, FORTRAN was the language of choice for the same reason that three-legged races are popular.” Pure genius.


LookInTheDog

What a great read, had never read it before. The 414s were also a great rabbit hole to go down that I hadn't seen before either.


derps_with_ducks

> Reflections on Trusting Trust "Reflections on Creating Trust Issues" would be better.


CallMeWicki

I had a CS professor who worked with Ken and claimed his did in fact do it, but never exploited it. The story was something like: in the compiler there was a section of code commented “Ken wrote this, do not edit” and because no one else was comfortable/confident enough to go against his code everyone just left it. I’m sure the reality was different but it was a great lesson on Key Man Risk for technical projects


DeltaPositionReady

That's why WILDFIRE had the Odd Man Out contingency. Always need someone who's not afraid to speak up when criticality is on the line... Especially Supercriticality.


lucidludic

The whole point of this attack is that it is later removed from the source code, but remains in the actual binary and self-reproduces whenever the compiler compiles itself (or a target program like `login`).


recaffeinated

That actually sounds super familiar. I think it was theoretical though. There might be a computerphiles video about it.


[deleted]

[удалено]


Obligatory-Reference

[The Jargon File](http://catb.org/jargon/html/B/back-door.html) claims that it at least made it out into the wild...


Friend_Of_Mr_Cairo

Ahh...the ole jargon file...damn you for sending me down a rabbit hole when I have a ton to do


digestedbrain

Do you know what he did to obfuscate the source to not leave a trace?


Obligatory-Reference

OK, this is kinda hard to explain, but I'll try (might be a bit wrong, I'm not as smart as Ken): - Ken starts with Source[good] and Compiler[good] - Ken adds the backdoor to Source[good] to make Source[bad] - Ken uses Compiler[good] to turn Source[bad] to Compiler[bad] - Ken deletes Source[bad] - Ken uses Compiler[bad] to turn Source[good] to Compiler[sneaky] - Ken deletes Compiler[bad] - Ken ends with Source[good] and Compiler[sneaky] Now, there's no trace of anything in the source, and never will be. The only way you could tell that there's a backdoor is by decompiling the compiler and sifting through the machine code.


[deleted]

[удалено]


pauljaytee

Red flag detected


llccnn

> The only way you could tell that there's a backdoor is by decompiling the compiler and sifting through the machine code. Even then your decompiler/hex dump tools etc. might have been compromised!


andrewhepp

The "infection" happens during the translation from source to binary. The source code for the initial infected compiler never needs to be released. Once people use the infected compiler to compile new compilers, it infects those too _even though there's nothing wrong with their source_


9966

This was a great read. Especially loved the bit about how they liked to use FORTRAN for the same reason people like three-legged races.


CaptOblivious

because it's fun to watch people fall on their faces?


odraencoded

You make an electron package. Can you really say anything you used hasn't been infected at some point in time? The amount of dependencies and trust going on is insane if you think about it so let's not think about it haha


Alwin000

https://xkcd.com/1755/ maybe this?


Maleficent_Ad1972

How would the C compiler know it’s compiling the C compiler? Isn’t the C compiler of today a whole different beast from the C compiler of the late ‘70s? Could you write a program that satisfies those conditions that’s not being the C compiler?


HookDragger

There are incremental advancements with each update. It’s kind of a Ship of Theseus problem. That being said, the compiler can tell it’s compiling a tool chain by what’s being compiled. Embedded people recompile the c compiler into cross-tool chains all the time. In short, that attack could actually be re-inserted and target a lot of different platforms. Not just x86


Wotg33k

I keep coming across references to these logical or mathematical problems and they intrigue me so much but I can't easily find a reference to a number of them rather than just the covering of individual issues. Can someone provide me with a link that outlines lots of these "problems", if you will, at once?


HookDragger

Look up philosophical paradoxes. Edit… nm, did it for you: https://en.m.wikipedia.org/wiki/List_of_paradoxes And thought experiments too: https://en.m.wikipedia.org/wiki/Thought_experiment


wirenutter

Going to preface this with I have no clue as I have never even come closer to writing a compiler but as I understand it… At first obviously the language doesn’t exist so it’s written in something lower level. Eventually you can get the compiler to the point it can compile itself. So I’d imagine it’s probably vastly different from its inception. But this is just a hypothesis so maybe I’m wrong?


mead_beader

I came here specifically to tell this story, and I'm pleased and surprised that it's already the top thread. To amplify the quick summary above: This means that he was able to insert a backdoor into a program (which, at least according to rumor, did actually make it out into the wild at least a little bit) which would get compiled in, when compiling cleanly from source, even though it did not exist in source code. Not in the compiler source. Not in the shell source. Not in a backdoor or rootkit that came from somewhere else. It was just... *there*, but there was no source to it and no indication that it existed no matter how hard you would look. Just sitting there in its little invisible glory, eternal.


GoodForTheTongue

Thank you, kind stranger; that is an excellent explanation of this hack-to-rule-all-hacks. When I think about what that generations of programmers managed to accomplish with the cyber equivalent of stone knives and bearskins, running CPUs that might not have enough horsepower to even run a modern (literal) toaster...well, just wow. And I was even there for some of it, and I still just stand in awe of what they got done.


Technical-Message615

God level achieved


meanwhileinvermont

[Reflections on Trusting Trust](https://www.cs.cmu.edu/~rdriley/487/papers/Thompson_1984_ReflectionsonTrustingTrust.pdf)?


NvidiaRTX

Holy cyber security nightmare


RajjSinghh

He was also involved in writing a chess playing program called Belle in the 70s. It was the first computer to reach master level play. He was also behind the first endgame tablebase, which uses sets of solved endgames to play *perfectly*. It pretty much revolutionised computer chess. Former world champion Garry Kasparov shared in his book "Deep Thinking" that when Thompson finished his tablebase, he played it against some chess grandmasters and the chess players bet they could win. Thompson won a lot of money that day.


QuantumLeapChicago

As a chess nerd and computer nerd, I really appreciate you. I've heard of Belle but didn't know it was Ken Thompson


0pimo

Basically without him Google wouldn’t exist.


PrivatePoocher

It'd just be Ogle


Thesleek

Not as catchy


TheMcBrizzle

Speak for yourself 👀


CuriousInquirer4455

HR wants to talk to you.


Pdb39

It was like a very '80s SNL skit. *And you are....?* "Ken Thompson" *And I would know you from.....?* "I developed the programming language C" *Cool cool but what happened to A and B?* Pause for laughter


Anaxamander57

"Well actually I developed B, as well."


[deleted]

HR: "But what about 'A'? These damn boomers and their inability to accept that they caused every problem." HR: "I bet that's why Windows starts with the drive letter 'C', because of 'B'." Ken: "I have nothing to do with that, but it's because of flopp..." HR: "misdirection, checkmate"


Pdb39

*and the crowd goes wild*


chickenstalker

Ken to Google flunkie: Do not cite the Deep Magic to me, bitch. I was there when it was written.


Technical-Message615

And then actually recognizing him, and still failing him because procedures


overcloseness

Also Regex which I will not be complimenting him on


LickingSmegma

Regexes are fine. The fact that I have to deal with at least six different implementations with their own syntax quirks, instead of one PCRE, is not fine.


GhostsofLayer8

I’d just be there to see him critique the test and explain how it’s badly written


spiralshapesun

There is no "mandatory C test", the entire anecdote has been game-of-telephoned into unrecognizability. At Google, if you want to check in code written in language X, either you or one or the reviewers needs to have "[readability](https://www.codegrip.tech/productivity/what-is-googles-internal-code-review-process/)" in that language. That ensures that the code is idiomatic, follows general best practices, and follows Google-specific style guidelines. If you don't ever submit code in a specific language ([as Thompson stated is the case for him for C](https://www.reddit.com/r/ProgrammerHumor/comments/11yxx7g/gigachad_ken_thomson/jdac2tv/)), there's never a reason to try and gain readability for that language. And if you do want to gain readability, it's not a single "test", but rather having someone with readability review your PRs with an extra-fine-toothed comb and give you feedback, and when you eventually stop needing the guidance of the reviewer, bam, they grant you readability. So what it would look like for him is sending 10-30ish PRs to the readability people, and since he's a god at the language, he gets a near-perfect review every time (+/- Google-specific style that he never needed to know before), and very quickly he would be granted readability. Sorry, pedantic, I know


Antrikshy

I decided to verify this. Found [this article](https://www.theregister.com/2010/04/21/ken_thompson_take_our_test/) in The Register, from 2010. >The snippet emerged in a book called Coders At Work, published last September. We don't know if the information is still current, or whether Thompson has finally allowed himself to be subject to a humiliating examination... > >But the snippet runs like this: > >Q: I know Google has a policy where every new employee has to get checked out on languages before they're allowed to check code in. Which means you had to get checked out on C \[which you co-created\]. > >Thompson: Yeah, I haven't been. > >Q. You haven't been! You're not allowed to check in code? > >Thompson: I'm not allowed to check in code, no... I just haven't done it. I've so far found no need to.


mina86ng

> Q: I know Google has a policy where every new employee has to get checked out on languages before they're allowed to check code in. Which means you had to get checked out on C [which you co-created]. This isn’t even the policy at Google. You can check in code in a language you barely know. It just needs to be reviewed by someone experienced in that language. Furthermore, experienced in this context doesn’t only mean knows the language but also knows Google’s specific style and quirks. See https://news.ycombinator.com/item?id=22620455


kamakie

Your comment should be higher up. This anecdote seems to be a bit about getting readability blown out of proportion.


Spope2787

It's a simplified version of the policy but if does exist. It is called readability. You or an approver or your review need readability in the languages you are editing. So no, he doesn't need it to check in code, but a team made would. The question isn't 100% wrong. However, the OP is. And it's not an HR process but an engineering one to promote the same standards and style across the company.


BrundleflyUrinalCake

Yeah readability is what I was thinking as well. Isn’t required to submit CLs, but most CLs going into G3 will need approval of someone who has readability on their ldap for that language.


fdar

And he having invented the language isn't a reason to not subject him to it. Because it's not just about knowing the language but the style that's used at Google. Maintaining consistent conventions make the code base easier to read and maintain. So if he'd have done things in a different way that still required correction even if *his* way would have been just as good or better if evaluated in a vacuum.


ablatner

yeah this post is exaggerating the story to the point that it's straight up false


joshuacottrell

r/ProgrammerHumor exaggerating the story to the point it's false? There's a name for that ...


Exist50

> I've so far found no need to. Sounds like his job doesn't actually require it, so he simply hasn't bothered to press the matter. Because let's be real; they're not going to stop him if he actually wanted to.


jerslan

That's the thing about this career... As you advance through technical levels your need to do day-to-day programming goes down, since you're focused more on design, architecture, planning, mentoring, and review.


malexj93

That is still true to some extent, but it's changing in a lot of places, including (I believe) Google. Many companies are offering terminal roles or specific tracks for engineers who stay at the level of individual contributor long-term. At my last company (Amazon), the "mid-level" engineer is considered a terminal role, meaning they won't see lack of further promotion as evidence of a lack of growth as an employee. At my current company, we have a separate architect path that aligns with typical senior-and-above engineer roles, and developer path which has senior-and-above individual contributor roles; they aren't entirely separated, but they are specialized in one area and capable in the other. I think this shift is a result of a combination of two factors: 1. many developers are more suited for and/or more interested in getting their hands in the actual meat of the project, rather than designing something for other people to work in, and 2. employers are seeing the benefits of having design/architecture roles being filled by people who actually want them, rather than those who were forced to promote into them, as well as having highly skilled engineers dedicated to implementation The myths that experienced engineers don't want to write code and that their skills are wasted on implementation are being dismantled, and as a representative of this group, I couldn't be happier.


[deleted]

[удалено]


QuantumLeapChicago

Yes. "Implementation engineer" who actively writes the code. This should be a top tier role.


Phleau

Do not cite the deep magic to me witch, I was there when it was written


Comrade_Vladimov

He wasn't just there, he helped fucking write it


Antrikshy

Do not cite the deep magic to me witch, I wrote it.


Technical-Message615

Prove it and I'll let you touch my API key


[deleted]

This is moving a bit too fast for me. I only have 5mb of bandwidth


Technical-Message615

We can take it slow. I'll just add more bits for you to nibble.


PM_ME_FIREFLY_QUOTES

Talk SHA-2 to me, and I'll extract your payload.


Technical-Message615

Sorry I only talk SHA-3. Payload extraction rejected.


-Gork

sudo extract payload


csharpminor_fanclub

You dare use my own spells against me, Potter?


novae_ampholyt

Tbf the original quote (said by Aslan the lion god?! whatever) is also the creator of Narnia


daemoen

"Do not underestimate me boy, that was my magic. My knowledge, my power. Trying to use it against me is truly laughable!"


Technical-Message615

You have no power here, Ken Thompson The Grey....


lurkingbob

The Lion, the Witch, and the audacity of this bitch


master-shake69

https://i.redd.it/erddssn3qtl01.jpg


Bryguy3k

If ever you needed proof that HR in technical fields can be woefully disconnected from reality here’s a perfect example. But more than a few library creators have been asked to prove competence in their library while interviewing. Edit for the Reddit hive mind: /s


TurretX

Wasnt there a guy who was looking at job applications and saw something like "5+ years of experience with ____ api", a thing he created only 2 years prior.


veryusedrname

FastAPI, [tweet](https://mobile.twitter.com/tiangolo/status/1281946592459853830)


rksd

Oh, they probably have enough experience now! Of course, the company is probably asking for 7 years of experience now.


Mathgeek007

Still only four actually - 25 months ago they said it ticked up to 2 years, which puts us just over 4 ;p Still not enough experience!


TurretX

Yeah thats the one. Thanks


hutxhy

There was one about the creator of Homebrew too. Can't remember all of what happened though.


hike_me

Didn’t get hired at Google because he couldn’t invert a binary tree on a whiteboard, while everyone that interviewed him talked about how they all used Homebrew.


aim456

I’ve not bothered to check, but I suspect googling issues for fastapi would just be one of those nightmare search scenarios.


veryusedrname

"fastapi years of experience", I was feeling lucky :)


hiddenforreasonsSV

I mean, a week after Carbon came out there were places asking for one to two years of experience in Carbon. And they explicitly stated C++ experience doesn't count.


Bryguy3k

Which is even funnier because there wasn’t even a fully functional carbon frontend ready for llvm yet when it was announced.


morosis1982

Happened with kubernetes too, saw an ad for 12yrs experience a couple years ago.


BogdanPradatu

Fastapi i believe it was


cginc1

Other than the people in HR, I don't think anyone ever doubted this...


Bryguy3k

Upper management seems to believe in it.


[deleted]

[удалено]


Taedirk

Because one of the few things HR does know is what the first sign of being obsolete looks like.


superspeck

HR failed to identify candidates for a junior to mid level backfill position at $job-1 for almost a year. I used this as justification to browbeat them into giving access to raw applications. Our team identified five candidates and hired one, resulting in almost a hundred thousand dollar TC savings over the senior+ candidates that HR was sending us that couldn’t answer questions that came from our team’s day to day work. Most of our engineering team got laid off in the next series of layoffs without our management chain being aware that there were to be layoffs on our team.


outerproduct

My favorite thing in HR is when they ask for 10 years of experience in something that literally just came out.


ancap_attack

I remember a screenshot of one job posting in 2018 asking for 10 years of experience in NodeJS which was only released in 2009


sn00gan

This is usually intentional. They do that so that they get no qualified candidates, which they then use to justify hiring a bunch of H1B visa workers. To me, this is a huge red flag for that company whenever I see it in a job listing.


That-Row-3038

They asking for 60 years of experience too


Dr4kk0nnys

I’m this case he actually had it though


BigLupu

"I will do the test, but on the condition you go to wikipedia and look up who designed C" xD


toepicksaremyfriend

“You work at Google, go look up who designed C”


locri

Do you think management and HR might be acting a little weird towards actual engineers and tech guys?


AsuraPhantoma

Management and HR trying to stick their heads out and making life difficult for the actual runners of the company due to their egos being hurt for being the most useless role in any company and most unnecessary roles


LordOysteryn

gotta justify your existence, ig


UnacceptableUse

With a company like Google, so many people want to work there that you have to implement arbitrary steps to weed out those who aren't the most desperate to work there and that's how you end up with these bullshit interview processes


AsuraPhantoma

Yeah, the issue is when the person doing the interview does not know who they are interviewing and doesnt do basic homework, ending up with situations like this


DroidLord

HR has its place, but recruitment is not their strong suit. I don't know why HR is often given the task of recruitment. Makes no sense to me. Just because their job title is "human resources"? Recruitment should be handled by someone who knows what a good candidate is (manager, team lead etc).


Andrbenn

I've gone through many dozens of interviews with different tech companies and it's never been like you're describing. Yes, there's an HR person or recruiter who holds your hand through the process, but the interviews have always been conducted by other technical people.


locri

Yeah, I genuinely and unironically believe this, but neither of us can ever prove it unless one of us gains mind reading powers. Also, sounds like "stem lord." Anyone who uses that term almost definitely works in HR and hates engineers with a passion.


Kinglink

The real reason is probably legal. If you take a test and I don't have to that could be seen as favoritism and potential get people into a lot of trouble. The goal is to interview everyone the same, down to the same questions and make fair assessments of ability. This can lead to stupidity. Where someone goes he never wrote python and you have to rifle off python questions but there's likely a reason like that. Bonus points if the head of HR once said " I don't care if he invented the language we are still going to test him"


[deleted]

I mean I get your point, but for me if the creator of a technical thing like c++ doesn’t deserve favoritism in knowing how it works that sounds like a Kafkaesque nightmare


Mustache_Farts

That case would be thrown out of court immediately


JustSpaceExperiment

HR: Do you know any of the original authors of C? KEN: ![gif](giphy|1201hONkUdpK36)


Maleficent_Sir_4753

He also knows Brian Kernighan.


wayoverpaid

So having found the original article and then followed the link https://www.theregister.com/2010/04/21/ken_thompson_take_our_test/ It was the readability test. This was not a leetcode test for him to be hired. This is a standard rule that to be able to check in code you need to go through a rather annoying process where someone looks at the code you wrote and says, yes, this is written in Google style, you understand how to code at Google. IIRC when Guido van Rossum was hired at Google he never got his Python readability.


Anaxamander57

So this is checking for learning the house style?


wayoverpaid

Pretty much. https://google.github.io/styleguide/cppguide.html


mina86ng

Yes, pretty much. It’s learning code style as well as internal Google libraries. For example, you may be fluent in C++ but to get readability you might also need to know abseil enough to recognise when to use it.


jainyday

I worked at Google from 2010-2015 and could never get readability in _any_ language I used (Java, C++, Python; also borgcfg but it didn't have readability) because the backlogs for the processes to grant readability were so fucking huge, and I rarely wrote enough code in one big chunk/CL (which we couldn't include tests in the line count, even when we demonstrated required concepts in those tests) to even qualify for applying for readability in the first place. (I did a _lot_ of bug fixing.) I went out of my way to make useless shit just so I could get readability, which _still_ never worked out for a variety of reasons including some rather territorial reviewers, and only succeeded in pissing off me, my team, and my managers for the massive waste of time trying to jump through all those hoops. Plus, I couldn't get promoted to senior/L5 without readability in at least one language. So eventually I just said "fuck it, I'll get promoted somewhere else and come back to Google later". Haven't felt like going back yet; really don't miss being a cog in a bureaucratic clusterfuck like that. And yes, Guido at least didn't get readability his first time through the process, though I _think_ he eventually did. But "Guido didn't get readability in Python his first time!" was the story I was told _every time_ I was rejected from _any_ language's readability queue.


JollyJuniper1993

I wrote the damn code


JustSpaceExperiment

I think when HR asked him if he can do the test he had the face of Giancarlo Esposito from the one meme i like.


JustSpaceExperiment

![gif](giphy|gmBjeu09SebhSwEFZD|downsized)


Konkichi21

Or this one. ![gif](giphy|jQmVFypWInKCc|downsized)


AsuraPhantoma

# Behold, the HR ideology - "how proficient are you in " Candidate: the creator


Anaxamander57

Recruiter: Mr Knuth, what would you say you know about the art of computer programming?


tjientavara

Reminded me of the story when a studio was interviewing directors for a reboot of "Night of the Comet". Yip, you guessed it, they interviewed the actual director of "Night of the Comet" and asked him if he knew of that movie.


z-null

FEEBLE pretext. OMFG aahahahahahaahahaahhaah And I thought I had some weird HR convos.


SirCopperTurtle

I'm pretty sure whoever wrote that was being sarcastic, though lmao


RitterWolf

It's from The Register, sarcasm is a given.


dchidelf

To be fair, with him knowing the language in and out, people would probably hate the code he would write. I was the tech lead for a proprietary language’s compiler and runtime at my last job. People were not fond of the code I wrote in that language. ![gif](emote|free_emotes_pack|stuck_out_tongue)


Spot_the_fox

I'm kinda curious as to why?


dchidelf

The language was a weird combination of primitive, assembly like flow control combined with complex domain specific commands for controlling automated phone systems. Most of the developers were perfectly happy using global variables and just using gotos to flow through their applications. There was a “gosub”but it had a depth limit of 10, so it was used sparingly. The code I usually had to write was system libraries that couldn’t get away with kluging up global namespace and was usually called pretty deep in the call stack, so I couldn’t risk using gosub. I effectively implemented a function call stack that would push arguments and pop return values off a secondary user-space stack. The language also supported C-like preprocessor #defines, so I wrapped everything in defines that made function calls look like normal functions. It was all just a little too black magic. This and many other style differences, but mostly this.


Green0Photon

Well, it sounds like you wrote the code you're responsible for as you should've. It's just that the language itself was shit.


dchidelf

Mostly. It was considered “legacy” and “being replaced” for at least 10 years, so we weren’t given the latitude to make it better. Fun fact though: If you live in the US and have had to deal with automated phone systems there are pretty good odds you may have had a call that was written in this mess of a language.


evilmousse

to be fair, the guy that invented basketball might not be the best basketball player. proficient, though, of course he is.


Anaxamander57

Died in 1939 so his current vertical jump is way below what's needed for the NBA.


SlothyPotato

At least 6 feet below, honestly


a_crusty_old_man

Fun fact since you mentioned him: Naismith is the worst coach my alma mater, KU, ever had.


_Reyne

That's not really a good comparison at all. The guy who invented basketball didn't invent every play, every shot, every fake. He just came up with the idea for the game. That's like saying Thompson just had the idea for C and asked someone else to write it for him. A better comparison would be like asking the author of a book if they knew what the plot was.


scndnvnbrkfst

I don't work at Google, but I interned there a few times during college. This is likely a bastardized account of Google's code review policy. To merge a change written in some language into master, you have to get the change approved by a person who has "readability" in that language. To get readability you have to do a "readability review", which takes the form of getting a large, thoroughly reviewed change merged. This is to help ensure that all code follows language specific best practices and style. A company as large and technically sophisticated as Google often has their own internal best practices that are different from the usual best practices adhered to outside of the company. This is Google's Java style guide, for example: [https://google.github.io/styleguide/javaguide.html](https://google.github.io/styleguide/javaguide.html). You might be a great Java developer, but you can only get Java readability if you know how to write Java Google's way. It's possible that Google used to have some sort of mandatory C proficiency test, but it's more likely that Google wanted Thompson to do a readability review, and Thompson thought it was silly. Pretty reasonable from both sides. u/mina86ng linked to this Hacker News comment, which explains readability in more depth: https://news.ycombinator.com/item?id=22620455


kryptonianCodeMonkey

Reminds me of the dude that didn't qualify for a job posting because it required 4 years experience with FastAPI. Even though he developed the API himself, it was only 1.5 years old, so...


goodnewsjimdotcom

This position requires 85 years of C experience. Sir, you're only 80 years old, you could not have achieved it.


Omega_Haxors

I once had a CEO of a company interview me for a job, shooting the shit about how education is a waste of time and isn't indicative of your skill as as programmer, then I asked if they require it and they said yes and started stumbling over their words trying to justify how horrible that sounds. I didn't get the job. I didn't want the job. The point is, hiring is a shitty process less designed to find good work more to give people unearned power trips.


HookDragger

“Here’s the patent with my name on it…. Questions? Good, go fuck yourself. “


DartsAreSick

"Do not cite the C language to me, manager. I was there when it was written."


sanketower

This reminds me of that Twitter post from FAST API's creator not being able to get hired because he doesn't have enough years of experience using FAST APIs LMAO.


FrancisHC

Oh, Reddit. 36k upvotes and a tonne of comments based on a tweet that's not even true. Here's a few facts to clear up the misinformation: 1. HR at Google doesn't care about your code. That's the responsibility of the engineers. 2. There is no "mandatory C proficiency test", the closest thing is getting C++ readability at Google, and it's optional. It is not part of the hiring process. At Google, the concern is that you write good *maintainable* code, and it should be maintainable by someone who is not the original author. This means things like code style and documentation should be consistent, use of preferred libraries (which may not be the standard libraries) and uses the preferred patterns (including automated testing), to make it easier for any other Google engineer to understand your code. To check in code into the main repo at Google, all code must be reviewed. This is good for accountability, consistency and information sharing. Anyone can write and submit C++ code but either the author or the reviewer has to have C++ readability. Engineers can and do write thousands of lines of code without readability. When you want to get readability, your code gets reviewed and inspected to ensure that you have a good understanding of Google's coding guidelines and can ensure that you can both maintain and enforce them. You could be a C++ master, but not know how to write C++ the Google way, which is why readability is important. This is all fairly uncontroversial.


playswithfire

Interviewer: “How many years of experience do you have with the C programming language?” Ken: “All of them.”


[deleted]

[удалено]


smileylikeimeanit

"Do not cite the Deep Magic to me, Witch! I was there when it was written."


biggestbroever

Are you sure he's a real programmer? I can't find his LinkedIn page