3 min read

2020-12-08 Links

What Distinguishes Great Engineers?

Our results suggest that, at least at Microsoft, the most important aspect of being a great engineer is being a competent coder. While numerous studies about great engineers tout various “soft skills” (Kelley 1999), the experienced engineers in our study rate the technical ability to write good code as the most essential. The understanding of how this aspect distinguishes great engineers is straightforward: without code, there is no software; therefore, great software engineers need to be able to write good code. As ACM’s definition of a software engineer (Shackelford et al. 2006) suggests, writing code is at the core of being a software engineer

Git Scraping Is A Great Term

Here’s a recent example. Fires continue to rage in California, and the CAL FIRE website offers an incident map showing the latest fire activity around the state. Firing up the Firefox Network pane, filtering to requests triggered by XHR and sorting by size, largest first reveals this endpoint: https://www.fire.ca.gov/umbraco/Api/IncidentApi/GetIncidents

That’s a 241KB JSON endpoints with full details of the various fires around the state. So… I started running a git scraper against it. My scraper lives in the simonw/ca-fires-history repository on GitHub. Every 20 minutes it grabs the latest copy of that JSON endpoint, pretty-prints it (for diff readability) using jq and commits it back to the repo if it has changed.

This means I now have a commit log of changes to that information about fires in California. Here’s an example commit showing that last night the Zogg Fires percentage contained increased from 90% to 92%, the number of personnel involved dropped from 968 to 798 and the number of engines responding dropped from 82 to 59.

Biz update for Gumroad Royal

Local man makes $000s on Gumroad!

Bob from HN is a Good Thinker

For me, a 10x engineer is about rate of value-add. Maybe its some of my manufacturing background, but I feel like the best engineers are constantly thinking about how they can increase the value of the product relative to customers (internal or external). These are the only things that really seem to matter at the end of the day.

Would you consider someone a 10x engineer if they can crank out a super-fancy backend service in 1 weekend that nobody wants to pay for or actually use? I know a lot of developers who occasionally fall into this trap (myself certainly not excluded). They can very enthusiastically produce output at the drop of a hat, but then we frequently have to put this output in the scrap bin and figure out how to recover the wasted time. This is why for most developers we have to have explicit design review sessions to make sure we are staying focused on the important value drivers. I have to make sure our work activities are well-scoped and broken down into small enough pieces to prevent elaborate trips into Alice’s Wonderland.

Note that when I talk about value-add, that also includes paying off technical debt. Determining what debt to pay off is just as important as determining what new features to roll out. Determining how to balance debt vs feature development is one of the most arcane and dark magics. This is where the 10x thrives.