"You know, when I did my first six week introduction to programming course, the highlight of the final day was getting to use the computer"

"Hahaha, hard core!"

"Glad you think so. This interview will be conducted under Faraday Cage Rules; this laptop runs Minix 2.0 with full source code and manuals. Here's the Book. You have one hour to complete exercise seven from Tanenbaum chapter 5."

#Tootfic #MicroFiction #PowerOnStoryToot #Title_Faraday_Rules

Meta: this is fiction and does not necessarily represent the author's views on ethical or effective hiring processes.
Furthermeta: true story about that programming course. 1984.
@Unixbigot Speaking of 1984. I keep seeing that book on display front and center in every single library in town. Are they trying to tell me something? 🙂
@Unixbigot
That should apply to other companies as well, not just Meta.
:-)
@Unixbigot I really wish I could hear AST's name without suddenly hearing "O Tannenbaum, O Tannenbaum..." in my head.
@Unixbigot Get ‘em, Kit. Get ‘em!

@Unixbigot For job purposes I don't think having an exam style coding interview is useful*. I want to know how you approach problems, how you work with people and get requirements and adapt to problems. If the tool fails you want resources do you employ? If the magic button doesn't work can you work past that or do you just keep pushing it to see if the magic will happen**.

I've bombed a coding interview because I missed something, went the wrong way and ran out of time. I wouldn't have hired me after that, but also that's an unrealistic scenario and the time pressure is not useful. In practice going the wrong way sometimes gains you understanding that leads to better results, filtering that out in interviews seems bad.

The other thing that makes giving a code interview challenging is "I know exactly what needs to be done because I've seen this before, they should do that" when there are many valid solutions and the idea is not to replicate what I would do, it's to see that they can work towards meeting requirements.

*I am not convinced by interviews in general, but that's a whole thing I am admittedly not any kind of expert in.
**there's a story here but not one I will post publicly

@abstractcode me too, my IRL hiring process is two interviews max (no gotcha questions or puzzles, and the second interview only when unsure). I've been subjected to tests that rejected me for jobs I was expert in. I've written tests and seen them give the same result, and given up on using them.

@abstractcode @Unixbigot

This is how I would hire people. Until HR declared we had to give people contrived tests to make sure they knew a thing.

In addition to your list, how have you demonstrated continuously learning? Did you learn a new language? Did you have to learn a new library? Kubernetes? Migrate things from the cloud and have to figure out how to manage hoards of servers?

Asking meta questions about how folks approach problems, learn, and so on will uncover any complete lack of knowledge of a given skill.

I still think there’s value in asking someone how a keystroke translates into a web request. Go into as much or little detail as you feel appropriate, ask questions, etc.

Giving tests is flat out lazy.

@Unixbigot Exercise 22 from chapter 5 would be much more interesting (assuming it's the second edition of the Minix book) 😀
@me_ TBH I didn't have my copy to hand and just guessed a number.
@Unixbigot Sure, it was fiction after all, but I couldn't resist looking it up...

@Unixbigot @me_ FWIW, from 1st ed. 1987,

7. A UNIX file system uses 1024-byte blocks and 16-bit disk addresses. The i-node holds 8 disk addresses for data blocks, one single indirect block address, and one double-indirect block address. What is the maximum file size? Think carefully.

22. Three different protection mechanisms that we have discusses are capabilities, access control lists, and the UNIX rwx bit. For each of the following protection problems, tell me [...] which can be used ...

@dalke @Unixbigot This is from the 2nd edition, but that would perhaps be a bit challenging to implement in one hour:

22. Symbolic links are files that point to other files or directories indirectly. Unlike ordinary links such as those currently implemented in MINIX, a symbolic link has its own i-node, which points to a data block. [...] Symbolic links are not part of the 1990 POSIX standard, but it is expected they will be added to POSIX in the future. Implement symbolic links for MINIX.

@me_ @dalke hah i remember doing that exercise BITD
@me_ @Unixbigot I remember using elvis to open the directory. Not a list of the files in the directory, but the content of the directory inode.
@dalke @Unixbigot I think the opendir and readdir syscalls only appeared only with the introduction of ffs around 4.1BSD. Before that, you had to interpret the directory entries yourself (2 bytes inode number, 14 bytes filename) - AFAIK, this was persevered even in System V, but you needed directory access syscalls to read other file systems using the VFS switch.

@Unixbigot My first Intro to Programming class ended after the first few weeks because the teacher could not get time on the school district computer to run our FORTRAN programs. (That would have been in '67 or ''68, long before Minix...)

I still use the letters i through m when naming counter variables.

That was me back in college, when my computer back at home would freeze ten minutes each time I compiled, couldn't reliably run the debugger at all without running out of memory, and the only connection to the Internet was via a 56k modem that cost a fortune per minute. The result: I had basically a single chance to compile the app and hope it worked - it generally didn't, and I could rarely fix it as I had no assistance whatsoever. I genuinely didn't know how to properly do a for-loop without an off-by-one error, until around year three!