So, to start off, I don’t like LeetCode (like many people), code challenges, or code golf, mainly for two reasons.
One, it has little bearing on what I actually do, namely: make sure developers have the tools they need, and that customers are well-supported with good code and good infrastructure (and good infrastructure as code). Two, vis a vis one, these types of things do not do a good job telling me or a company whether or not someone would be good at the above things.
I value clean, easy-to-read and easy-to-collaborate-on code, rather than the most tricky-dick, super-hyper-optimal algorithms everywhere. There is definitely a time and place for hyper-efficient code; but very often in DevOps land using, for example, modules from the Python standard library or the Rust standard library is not only clean and DRY, but also very often optimal for that particular task. And if you’re the most clever coder in the world, and you write overcomplicated spaghetti code that no one can understand, then you are actually a shit coder and not at all that clever.
I think the above is a good way to distinguish between computer science and software engineering, a much-talked about dichotomy. In my opinion, computer scientists ask, “Can this be more efficient?”. Software engineers ask, “Can we ship it?”. I am definitely in the latter camp, but with a philosophy degree I do have some knowledge of the former.
But this is all to say: I do DevOps, I don’t do code challenges.
So surprise surprise when I found myself getting really into Google FooBar when I got invited the other day while doing research for a platform project I’m leading. It is, of course, not an everyday occurrence that one gets invited by the all-powerful Google, based on whatever fancy ML neural net they use to fingerprint browsers and find out who you are, to participate in their famous maybe-recruiting tool, definite-fun time program. So, here I am.
Like I said before, I do DevOps, so thinking in this specific manner is quite new to me, but also quite enjoyable! I think mainly it’s because these challenges are so detached from any practical concerns I am able to go full theory reaaaally easily and go deep down the rabbit hole. And if I end up getting an interview with Google, it’ll certainly be a fun story, right?
I’ll be writing a blog post for every challenge I complete, outlining my thought processes on how I solved it, in addition to the background for the challenge. I’ll also be posting my code on GitHub at this repo for everyone to see, so everyone can tell me I should have used some other tricky-dick optimal algo \s.