A very common topic about programming is how useless are most whiteboard job interviews, as they challenge the interviewees on something they will never use in the job.
Few things are farther away from day-to-day programming that a white-board problem, but kernel development might just be one of them.
In regards to the GP story, I'm also saddened that the interviewers didn't show interest for those projects. Kernel development indicates a high aptitude for many kinds of unrelated programming jobs, but not for most of them. Especially "enterprise" jobs. For the purposes of the interview the "banal professional project" is likely the relevant one.
If anything, having the senior developers show no interest is a good thing, and indicates that even if the candidate gets the job he probably won't enjoy his time at the company.
Keeping with the example of creating an OS kernel, foundational programming skills translate across everything. So kernel development shouldn't be a negative signal in regards to programming ability.
In regards to kernel development itself, I think it's probably very valuable experience not because of the programming but because of the perspective the person has gained. I have no experience with kernel development, but I would hazard that you need a very different mindset and approach compared to application development.
I think the perspective you gain from being forced to adopt a different mindset and approach is massively undervalued by most people because it's not immediately obvious how that experience is useful or directly applicable.
I'd go as far as saying people who've never done this level of hobby work don't understand the amount and breadth of experience and knowledge one gains this way.
A OS kernel or an assembler for a niche architecture aren't something you just do like another work task. It's not something you half-ass under deadline pressure by gluing together some third party libraries, StackOverflow tips and hastly skimmed documentation. Your boss would never agree to pay you for the amount of time and care that's involved in hobby projects like these. A month of such a project will teach you more about computing than a year on the job[0].
Unfortunately, this kind of experience is hard to keep track of and neatly summarize on your CV. If you tried, you'd end up with a page or three extra, and people would think you're just keyword stuffing, and doing it badly - referencing niche, unmarketable technologies, seemingly related to nothing[1]. These skills are important and very useful, but they don't look like it until you need them[1], and you're unlikely to pick them up on the job, unless there's already someone who had them before joining the company, and is now teaching others. There just isn't time. Taking care, or spending time sharpening the saw[2], is considered time not spent delivering business value.
Since most software companies aren't really training their workforce much, it's kind of dumb to ignore off-work experience - after all, if your company isn't giving people time to skill up, why assume previous companies on a candidate's CV were different?
--
[0] - It might not teach you how to work in a team setting, though. That's what jobs are good at. That, and teaching you what "good enough" is.
[1] - Like, I wouldn't put "Event Tracing for Windows" as a qualification on my resume, even though me being familiar with it saved the company a lot of money they'd otherwise spend on people continuing to fruitlessly chase a heisenbug.
[2] - Or, God forbid, writing tools for yourself.
For example, an actor applying for a role in a commercial might cite their side role in doing a theatrical production of hamlet for their community, but the interviewers (an advertising production agency) might only want to care how much professional experience they have shooting commercials.
Sure, these experiences in "unrelated" work might show qualities that could be applied to this job. But you aint paid for your broad and wide interests in the topic - you are paid on being able to implement some work/feature that somebody else told you to do. And in fact, if you require intrinsic motivation to actually perform well, you might end up being a liability to the team, rather than an asset - after all, if the work is boring, and you lack intrinsic motivation for it, you might slack off, or over-engineer it to make the work more interesting to you. Or you might end up being a difficult person to work with for other team members because you sit so far above them intellectually.
How about we hold those people accountable to the same standards? Hell, most of your politicians are that way.
You have dentists commenting on how pandemic response should be.
For the last 4 years a failed business man con artist destroyed pretty much all he could get his hands on and he's still hailed as some sort of mythical creature.
> Imagine in any other industry, where the candidate mentions irrelevant job experience, and expect that to be the criteria for acceptance into the job.
Are you f'in kidding me? Either we hold the other useless part of society to the same standards we hold ourselves accountable to or we give each other a break.
EDIT: and for all the ignorant folks thinking Trumps schoolyard bully rhetoric did anything but empower the CCP keep in mind that Chinas nickname for Trump is "Chuan Jian Guo". Trump the nation builder(guess who's nation they are talking about). And as much as I disliked Obama and his TPP, it was the answer to the new silk road. Trump basically handed China the entirety of Asias future on a silver platter, and in return the US got what? 10 billion in trade deficit balances? Completely laughable. Or the new Blue Dot(completely fitting name by the way)?
https://asiatimes.com/2019/11/a-blue-dot-barely-visible-from...
Blue Dot is described, officially, as promoting global, multi-stakeholder “sustainable infrastructure development in the Indo-Pacific region and around the world.”
It is a joint project of the US Overseas Private Investment Corporation, in partnership with Australia’s Department of Foreign Affairs and Trade and the Japan Bank for International Cooperation.
Now compare it with what just happened this same week at the inauguration of the China International Import Expo in Shanghai.
As Xi stressed: “To date, China has signed 197 documents on Belt and Road cooperation with 137 countries and 30 international organizations.”
Even if they don't consider community theater roles to be relevant experience, a casting director/interviewer shouldn't be caught off guard by them.
Does it work like this? I guess it depends on the point in actor's career. If they're 10+ years into commercial acting, then community theare might not be relevant, but at the start of one's career, it seems to me to be highly relevant. At the very least, it demonstrates the person knows the basics of acting, can follow the script, and has experience dealing with the support structure (director, sound/lighting technicians, etc.). This isn't fundamentally different from what they'll face when shooting a commercial.
Also: at least over here in Poland, most film actors come from classical theatre background, they study in theatrical schools. Any kind of theatrical background is highly relevant.
If an interviewee has a pet operating system they've developed they can probably figure out your CRUD app.
Kernel development involves reading vague documentation (that might be wrong) and figuring out how to make things work with not always useful or immediate feedback. And reading other people's similar code to check for clues.
If that's not relevant to day to day development, I've been working at the wrong places. Yes, you don't do a whole lot of page tables day to day; but ocassionally you might need to make something work better or faster, and having deep knowledge of how you might put something like that together will help a lot as you dive into the murky depths of whatever actual OS you work with. Or you could open a support ticket with your vendor, I dunno, people always say that's an option, but I've never seen it happen, and it takes longer to make a clean example program to share outside the company than it does to dig in and fix the problem.
At previous companies I've worked at (small statups) where I had a high influence on hiring: yes absolutely unless someone more qualified with the same excitement came around (aka Rob Pike walks in).
At Google interviewing is complicated. There is a lot on the Google careers site about this if you're interested. If you brought this up while doing team matching it will make people's eyes light up. My TL liked that I was doing game dev, R&D, and OS dev for fun and I think it's a large part of why I was chosen for my team.
This is true. I'd counter that though by saying that I don't think there's any other project that's taught me more about the nature of what we do as programmers than Operating-System development, even just the little I've done. In order to build even the most basic, non-functional toy kernels you need to gather a comprehensive, holistic view of how compilers, operating systems, and computer hardware interact.
Nobody's complaining about whiteboard coding challenges because people who ace them suck at writing code. It's because a far greater number of perfectly competent programmers will fail any given challenge of that type above trivial complexity.
Is there such a high correlation? I used to do a lot of hackerrank-style problems for fun, a few years ago. If I had to evaluate my ability to write code back then: pretty crappy.
I was good at writing functions, I was bad at writing programs.
--
[0] - There are plenty of better options, but they tend to not scale - so they cost more, and companies avoid them.
a) your understanding of the basics is solid;
b) let's face it, these brain teasers are often proxies for intelligence testing.
If they have a glut of candidates for every position, whiteboarding data structures and algorithms makes for a decent filter.
If GP is looking for a job then for the love of god, please email gianni at my-hn-user-name dot co dot uk :)
1. MIPS, eh? Say, does your assembler automatically fill branch delay slots, or is that manual? Does it just fill them with noops, or does it move instructions from the branch target?
2. Do you have all the pseudo-ops, so that a move doesn't have to be expressed as add dest, src, 0 type of thing?
3. Is your assembler syntax compatible with other assemblers? Is the object format?
4. Is there a regression test suite?