Comment by joenot443

Comment by joenot443 13 hours ago

19 replies

This is a really good article.

There's a quality in strong developers which is difficult to select for in an interview but wildly valuable once they're up and running; maybe the best word is "scrappiness".

When I interview juniors or interns, one of the questions I like to ask is something like this-

"You've got two computer, one Linux one Windows. There's 50gb of files on the Windows machine which need to be moved to the Linux one, but you've only got 1h to do so. What's your strategy?"

Anyone with some experience knows it's a bit of a silly question - there are a tonne of unknowns and countless "correct" answers, but that's just the rub - it's not about the academically optimal answer, but about coming up with an answer that would probably work, given the constraints I'd be arbitrarily throwing at them. It's about realizing that the vast majority of decisions we make in software engineering have costs and tradeoffs, and being able to discuss them with a colleague is 10x more valuable than graph traversal.

More than anything, I try to select for people that I know spent a good chunk of their formative years behind the computer, just like many of us did. The maze-traversal skills you learn as a child installing Ubuntu on your parents' computer stay with you forever. Given the option, I'd take the self-taught-indie-dev-state-college-grad over the honor-roll-ivy-league-leetcoder any day.

tikhonj 11 hours ago

This is a fun question.

But the fact that "move a medium sized file from one machine to another" is still a fun question is also a pretty damning indictment of our industry :P

  • blululu 11 hours ago

    I would say that the fact that this question is more relevant to actual job performance than ~90% of leet code questions that I have been asked would be an even stronger indictment of the industry.

pcthrowaway 10 hours ago

Pick up the Windows machine and place it on top of the Linux machine. The files are now on the Linux machine.

beyarkay 10 hours ago

(author here) Thanks! I appreciate your kind words. That scrapiness you talk of is interesting, totally agree that there's something there, and it's interesting to think of how to evaluate if someone has it without spending months working with them.

rightbyte 12 hours ago

You'd probably need to put the HD in the other machine.

What is the "scrappy" way to do it?

  • smitelli 12 hours ago

    I have been nerd-sniped into conjuring up a less-traveled-path technique:

    Portable Python on the Windows computer. `python -m http.server`. On the Linux computer, something like `wget -mkp` followed by `find … -delete` to get rid of the index files.

    (Lots of disks are soldered in nowadays, or the procedure might require multiple M2 slots that the destination mobo might not have. Is your company IT department happy to know their hardware is being disassembled?)

    I have not benchmarked to see if this would sustain the 120 Mbps the original scenario would require.

    • sdenton4 12 hours ago

      Or set up SFTP on the Linux machine, and find whatever Windows crapware that's able to connect to it... Filezilla, maybe?

      • zamadatix 10 hours ago

        Windows has had OpenSSH's ssh/sftp/scp client binaries built in by default for ~7 years now. You can also do this in reverse by enabling OpenSSH Server on Windows (included feature but not installed or enabled on boot by default) and having the sftp client be the Linux box, which can be easier depending which you have more control of.

      • chris_engel 9 hours ago

        Or just... put in a usb thumb drive, move the 50gb on it and call it a day?

    • mouse_ 11 hours ago

      I was gonna say nginx, lol. It's smaller and more portable than python afaik

    • pphysch 11 hours ago

      I've done this exact approach and it worked well, it was on LAN so plenty of throughput. I would definitely try this before tearing apart the hardware.

  • joenot443 12 hours ago

    That is the scrappy way :)

    I think sometimes we forget there are plenty of engineers out there whose experience interfacing with a computer begins and ends at the KBM. "Put the HD in the other machine" isn't super obvious to every junior, though I wish it was!

    • layer8 12 hours ago

      Also, engineers who only ever worked with non-user-servicable laptops.

qiine 12 hours ago

soOo how do you do it ? ;p

  • joenot443 12 hours ago

    Well, the answer I love them to start with is asking if they're single-bay computers and if not, why they can't just turn off both machines and stick the HDDs in the same box :) It's also a great signal if they can follow this up by noting that the Windows drive is probably formatted in NTFS so the Linux instance will need drivers to support it.

    Otherwise, a wired network + SMB/Samba is a fine solution too, though much slower.

    Even if they just suggest using an external SSD I'd be relatively happy. More than anything, this kind of question is to see what happens when a junior's asked to do something they haven't done before. Any answer but "I don't know" is a good start.

    • dmd 11 hours ago

      > the Windows drive is probably formatted in NTFS so the Linux instance will need drivers to support it

      This hasn't been true for decades now, thankfully! Read-only NTFS support has been built into the kernel for a quarter century already (1997, 2.1.74, and a better one in 2002, 2.5.11) - and full read-write support for 4 years now (2021, 5.15).

    • ido 8 hours ago

      These days also directly connecting two computers to each other with a network cable (not via a network, directly plugging each end of the same cable to each computer) will establish a connection (I’m pretty sure it also works with USB cables but the “automatic” might then only work between specific operating systems- it’s been a while since I tried).

      IIRC last I tried direct Ethernet connecting between a Mac and a Windows pc the other computer appeared as a shared drive and I could simply copy files from it (I probably enabled some sharing option but it was easy to do either way).

    • pixl97 10 hours ago

      >Otherwise, a wired network + SMB/Samba is a fine solution too, though much slower.

      Robocopy with the MT flag speeds things up if it's lots of files.

    • dmsayer 7 hours ago

      im glad that my answer was an external drive, and is considered correct.