ARM will be the dominant CPU architecture going forward. In a few years, x86 will be relegated to specialty use cases. All new consumer devices and most cloud services will be based on ARM. Old workloads will probably run on x86 for decades, because nobody will bother to port and upgrade, but a decent amount […]
Today I want to talk about how hard drive prices have plunged dramatically since 2000 (most data from John C. McCallum’s disk prices page): We are talking about a roughly 97% decrease in price per GB over 20 years. In fact it’s kind of hard to see on a linear scale, so let’s switch to […]
By custom, all software engineer job postings in the US are required to include the phrase “must thrive in a fast-paced work environment”. This is usually not a bona fide qualification, but rather an advertisement (“we’re fast paced, so we hope you like that?”). The reasoning is sound: Engineers generally aren’t drawn to listings with […]
Joel Spolsky once made a famous observation: There’s a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a […]
It’s generally a mistake to adopt values like “respect your customers.” True values involve trade-offs. Here’s my humble attempt to list a few reasonable ones for a potential engineering team. We should… Hire and pay for world class peopleHire economically Be togetherWork anywhere Emphasize qualityEmphasize speed Emphasize market share growthEmphasize profitability Be highly leveragedBe highly […]
It’s a well-known truism in software engineering that you shouldn’t ask an engineer to build and maintain software that only saves you a few hundred bucks a month, because engineers cost more than a few hundred bucks a month. You can distill this down into a few easy calls that apply in almost all situations: […]
I’m pondering about software engineer salaries and efficient markets. What intrigues me is how often new software engineers are changing jobs to get significant raises 1, 2, and 3 years outside of school. I see a lot of resumes and it’s actually somewhat unusual if I don’t see a new job every ~2 years on […]
There is reassuringly steady progress in software development productivity. In only a few short years the pace of what is considered acceptable output in terms of development has changed pretty dramatically. The usual culprits are: faster hardware and networks, which lead to better programming languages, tools, and platforms, which produce better frameworks, libraries, services, and […]
I once worked a project that stored and pushed hundreds of TBs a month, and cost was an important consideration. AWS S3 is cheap-ish, until you get into multi TB and PB territory. AWS bandwidth has always been outrageously expensive. Google Cloud was cheaper, but only by some factor like “half the price of AWS.”
I’m often asked how much testing is enough. The answer is frustratingly nuanced: it depends. It depends on your downside risk; it depends on your stability requirements; it depends where in the dependency hierarchy the tested code lives. And on and on. I’ve begun to realize there’s one place where I can give simple advice […]