homedark

Basic Awareness in Addition to Deep Understanding

Dec 26, 2024

Software developers are often evaluated based on how well they understand specific ideas and tools. While mastery is important, there's another type of knowledge I find myself relying on: vague awareness. Unlike mastery, awareness is merely knowing that something exists along with a basic understanding of what it is and what problem it can solve.

For example, I love regular expressions and, within reason, I'm pretty comfortable with them. But I only have a vague understanding of positive and negative lookahead and lookbehind expressions. I certainly don't know the exact syntax, but I do know it isn't something every regular expression engine supports. Importantly, I know that it has something to do with matching without consuming the match / non-match. Given a problem, I think I understand it well enough to be able to identify these fancy expressions as a possible solution.

Another example is the SQL lead/lag window functions. In fact, when it comes to SQL, there's probably a lot of examples I could pick (lateral joins, recursive CTEs). But I particularly like this example because (a) they're super useful and (b) they remind me that there's a bunch of windowing functions I don't remember.

The list of things I hardly know is long. Bash, systemd, memory mapped files, io_uring, Makefile, DNS, UDP, etc. But when the tools I have mastered either don't apply or aren't well suited to a specific problem, I hopefully know these well enough to jumpstart finding a good solution.

This is one of the reasons I blog. I find that I retain things better when I write about them. You couldn't tell from all the typos and spelling errors, but I'll re-read my blog posts 3-4 times before publishing. That act of writing and reading help me retain the information. It's also a good reference to my future self. More than once I've used my blog to learn something I once better. It's probably universally true that the way we explain things to others is the way we want things explained to us.