Organizing complexity is the most important skill in software development
Organization skills are more important than algorithmic wizardry, but harder to teach. So we teach algorithms instead. Managing complexity you learn on a job.
Companies come to us for help data analysis and data privacy. Clients have included Amazon, Google, Microsoft, law firms, start-ups, and smaller businesses.
Visit johndcook.com → RSS feedOn Hacker News Jan 2010 – Sep 2026
Math & Algorithms 44Software Engineering 24Life, Learning & Writing 11Career & Management 11Science & Space 9Programming Languages 6
Organization skills are more important than algorithmic wizardry, but harder to teach. So we teach algorithms instead. Managing complexity you learn on a job.
People have been comparing software components to LEGO blocks for a couple decades. We should be able to assemble applications by snapping together modular components, just like LEGOs. There has been progress, but for the most part we haven't realized the promise LEGO-style software development. Integrating two…
As I've blogged about before, and mentioned again in my previous post, the great mathematician and physicist Henri Poincaré put in two hours of work in the morning and two in the evening. Apparently this is a common pattern. Cal Newport mentions this in his interview with Todd Henry. Now we also know that if
The most productive programmers are orders of magnitude more productive than average programmers. But salaries usually fall within a fairly small range in any company. Even across the entire profession, salaries don't vary that much. If some programmers are 10x more productive than others, why aren't they paid 10x as…
Someone once asked Napoleon how he decided where to assign soldiers. Napoleon's reply was that it's simple: soldiers are either smart or dumb, lazy or energetic. The smart and energetic I make field commanders. They know what to do and can rally the troops to do it. The smart and lazy I make generals. They
When I was working on my dissertation, I thought someone might scoop my research and I'd have to start over. Looking back, that was ridiculous. For one thing, my research was too arcane for many others to care about. And even if someone had proven one of my theorems, there would still be something original
With fat tail, I.e. power law, project times, late projects are likely to be even later,
Experts often end up where they started as beginners. If you've never seen the word valet, you might pronounce it like VAL-it. If you realize the word has a French origin, you would pronounce it val-A. But the preferred pronunciation is actually VAL-it. Beginning musicians play by ear, to the extent that they can play
Here's an interesting historical anecdote from Karl Fogel's Producing Open Source Software on the value of preparing for meetings. In his multi-volume biography of Thomas Jefferson, Jefferson and His Time, Dumas Malone tells the story of how Jefferson handled the first meeting held to decide the organization of the…
A good programmer is someone who can write large programs that have a high probability of being correct.
I called someone a plumber programmer the other day. The person I was speaking to didn't realize that "plumber programmer" is a term of great respect. The plumber is often the most experienced programmer on a team. As with literal plumbing, software plumbing connects things together. It deals with things other people…