De-rusting skills is an awkward process
I got to play with a programming screener on Hackerrank today because apparently some finance places still like that sort of thing. It's been about a decade since I last even attempted to interview at a finance company of any sort, and back in the 2010s they were OBSESSED with speed and efficient code because that was the heyday of the high frequency trading stuff. My code always works (eventually) but I've never ever claimed that they'd be fast or even use sophisticated algorithms.
Anyways, today's hackerrank quiz was mostly an experiment in seeing if I even had the skills to write this sort puzzle code on the fly because I don't do any of that in my normal life. At best I write very imperative-style data processing code that executes largely top to bottom and shuffles numbers around making simple transformations. Not exactly the sort of "calculate this, sort that, derive another thing" type of stuff that's common for these puzzles.
The short story of it was that, phew, luckily I still retained enough overall programming knowledge to write the code. I had to look up a bunch of annoying library/idiom stuff along the way (for some reason I'm constantly forgetting the modern Python 'sort this dictionary by value using sorted() ' idiom even though I know of the function to call).
There were also some hilarious (to me?) issues with how the quiz inconsistently gave data and accepted output. Most of the questions said to pull the data in from STDIN, which is easy enough (except I hit some bizarre read buffer issue of some sort and needed to force a read =\). Other times it was provided as a native Python array already. Output was sometimes "print values out" but one wanted my function to just return the value and it had its own printing code already. I would've been pissed if I failed to clear the things due to figuring out sane input/output handling, but here we are.
As I warm myself up for interviews, I'm hitting these de-rusting situations pretty often. Random bits of code is one thing. Reviewing all the book stats knowledge that I know at a high level but never actually apply in actual work (ANOVA? Chi-square? Some nonsense about heteroskedasticity?) is a bit of a pain because it's like stretching a muscle that hasn't been used in 20 years. I know enough to know how to look things up quickly, but I'm typically screwed if some ridiculous interviewer wants me to recite the stuff on command. More senior positions like the ones I'm trying to get tend to have fewer of these useless book questions but you can never assume there won't be any.
This is like that time I finally bought a digital piano and forced myself to re-learn how to play things. My hands and arm muscles couldn't physically keep up with what my brain wanted my hands to do. Things improved quite a bit with a number of hours of strong practice, the muscle memory remains and it's mostly about rebuilding tissue that had wasted away. The same applies to mental muscles too.
I suppose this is a good reason why we should all have a toy hobby project once in a while to keep our skills from completely rusting over. I'd be a lot worse at programming if I didn't occasionally have to write weird little one-off jobs to do things like mass-download YouTube videos from a playlist (with associated resuming/bookkeeping features).
So, for all you lucky people out there who aren't job hunting, consider a bit of pro-active de-rusting, just in case you might need it some time.