When we talk about getting better at programming, we often talk about testing, writing reusable code, design patterns, and readability.
All of those things are important. But in this blog post, I want to talk about a different way to get better at programming: learning how the systems you’re using work! This is the main way I approach getting better at programming.
Two Julia Evans posts in two issues! 🔥🔥
This is something I always focus on for data analysts / analytics engineers that I train. Data people have a real tendency to want to get a thing done and if "it works" then "why it works" is less interesting (this is a generalization of course and thus lossy). One of my favorite interview questions for senior data hires is "why is Redshift faster for analytical queries than Postgres?" I've found that it so perfectly tests for this instinct to understand one's underlying systems. Here are some other questions that highlight absolutely critical conceptual frameworks for any data person.
- How fast are network, disk, and memory access relative to one another?
- How does SQL translate into discrete physical processing operations that a database must undertake? How do changes in your SQL map to different operations?
- What's the difference between implementing the same functionality with a loop vs with a map function in Python?
- Why is it harder to calculate a statistic across a cluster of computers vs. on a single computer?
If these are questions you can't answer for yourself, they're worth some Googling. For each, answer the question itself then follow that up by asking: "Given that, how should I write my code differently?"Read more...