In creative fields, the act of planning involves pretending to build something rather than actually building something. Planning in these fields thus suffers from the limitations of imagination, including all software bugs related to the difference between natural language descriptions and hands-on experiences. All planning is pretending. But there are two types of planning. You don't get to choose your favorite. The task you're trying to accomplish determines the right way to plan. The two types of planning are: 1. Planning like engineering. 2. Planning like war. The first type of plan is a linear sequence of steps. This type of plan works for tasks where the majority of one's time is spent doing predictable things. Importantly, being predictable does not mean all tasks of this form are simple. Tasks of this form may be simple or complex. Simple examples include housework, grocery shopping, a daily todo list, laundry, sorting your email inbox. Complex examples include building a house, a car, or a bridge. What distinguishes these are tasks where you can easily predict how the majority of your time will be spent in advance. For these tasks, we can simply sit down and pretend. Why compare this to engineering? From the outside, software engineering appears to be mostly "known knowns." Hence the engineering metaphor. On the ground however, in the day to day trenches of life at work, our field is almost entirely "unknown unknowns." Bugs, stack traces, undefined behavior, failing tests, silent errors for which no test yet exists, unconsidered edge cases, and the ultimate enemy: complexity. Because only complexity makes the other problems a threat. When we see a project from above, like a senior manager, we prefer Jira, scrum, and tackling large projects one pre-planned step at a time. These tools are a lens that focuses the mind exclusively on the known knowns. The unknown unknowns (or, once an obstacle has survived long enough: known unknowns) are at least 90% of any software developer's day. Imagine Gary Kasparov organizing his strategy for a game of chess using Jira, or Napoleon using scrum to plan his attack on the Prussians. This would not be a matter of preference. To treat the unknown as known is to guarantee defeat. Chess and war are not improvised or unplanned. But their logic requires a different kind of planning. One is not after an entrenched position, but mobility. Unconventional methods are permitted. And there is a single goal that organizes all behavior: defeat the enemy. The principles of team organization I believe in are exactly the principles found in histories of war. For instance, the fact that small semi-autonomous units operating with thin lines of communication consistently steamrolls a large monolithic organized force, as we see from countless examples including Napoleon vs the Prussians, Mao Zedong vs Chiang Kai Shek, the American continental army vs the elite British army, and every war in which Afghanistan has earned and re-earned the name "Graveyard of Empires."