A good programmer working intensively on his own code can hold it
in his mind the way a mathematician holds a problem he’s working
on. Mathematicians don’t answer questions by working them out on
paper the way schoolchildren are taught to. They do more in their
heads: they try to understand a problem space well enough that they
can walk around it the way you can walk around the memory of the
house you grew up in. At its best programming is the same. You
hold the whole program in your head, and you can manipulate it at
will.
That’s particularly valuable at the start of a project, because
initially the most important thing is to be able to change what
you’re doing. Not just to solve the problem in a different way,
but to change the problem you’re solving.
Your code is your understanding of the problem you’re exploring.
So it’s only when you have your code in your head that you really
understand the problem.
It’s not easy to get a program into your head. If you leave a
project for a few months, it can take days to really understand it
again when you return to it. Even when you’re actively working on
a program it can take half an hour to load into your head when you
start work each day. And that’s in the best case. Ordinary
programmers working in typical office conditions never enter this
mode. Or to put it more dramatically, ordinary programmers working
in typical office conditions never really understand the problems
they’re solving.
Even the best programmers don’t always have the whole program they’re
working on loaded into their heads.But there are things you can
do to help:
The danger of a distraction depends not on how long it is, but
on how much it scrambles your brain. A programmer can leave the
office and go and get a sandwich without losing the code in his
head. But the wrong kind of interruption can wipe your brain
in 30 seconds.
Oddly enough, scheduled distractions may be worse than unscheduled
ones. If you know you have a meeting in an hour, you don’t even
start working on something hard.
The optimum is not the limit you can physically endure. There’s
an advantage as well as a cost of breaking up a project. Sometimes
when you return to a problem after a rest, you find your unconscious
mind has left an answer waiting for you.
You can magnify the effect of a powerful language by using a
style called bottom-up programming, where you write programs in
multiple layers, the lower ones acting as programming languages
for those above. If you do this right, you only have to keep
the topmost layer in your head.
And of course you can’t safely redesign something other people
are working on. It’s not just that you’d have to ask permission.
You don’t even let yourself think of such things. Redesigning
code with several authors is like changing laws; redesigning
code you alone control is like seeing the other interpretation
of an ambiguous image.
If you want to put several people to work on a project, divide
it into components and give each to one person.
Even more striking are the number of officially sanctioned projects
that manage to do all eight things wrong. In fact, if you look at
the way software gets written in most organizations, it’s almost
as if they were deliberately trying to do things wrong. In a sense,
they are. One of the defining qualities of organizations since
there have been such a thing is to treat individuals as interchangeable
parts. This works well for more parallelizable tasks, like fighting
wars. For most of history a well-drilled army of professional
soldiers could be counted on to beat an army of individual warriors,
no matter how valorous. But having ideas is not very parallelizable.
And that’s what programs are: ideas.
It’s not merely true that organizations dislike the idea of depending
on individual genius, it’s a tautology. It’s part of the definition
of an organization not to. Of our current concept of an organization,
at least.
Maybe we could define a new kind of organization that combined the
efforts of individuals without requiring them to be interchangeable.
Arguably a market is such a form of organization, though it may be
more accurate to describe a market as a degenerate case—as what
you get by default when organization isn’t possible.
Probably the best we’ll do is some kind of hack, like making the
programming parts of an organization work differently from the rest.
Perhaps the optimal solution is for big companies not even to try
to develop ideas in house, but simply to
buy them. But regardless
of what the solution turns out to be, the first step is to realize
there’s a problem. There is a contradiction in the very phrase
“software company.”The two words are pulling in opposite directions.
Any good programmer in a large organization is going to be at odds
with it, because organizations are designed to prevent what
programmers strive for.
But often it
requires practically an act of rebellion against the organizations
that employ them. Perhaps it will help if more people understand that the way
programmers behave is driven by the demands of the work they do.
It’s not because they’re irresponsible that they work in long binges
during which they blow off all other obligations, plunge straight into
programming instead of writing specs first, and rewrite code that
already works. It’s not because they’re unfriendly that they prefer
to work alone, or growl at people who pop their head in the door
to say hello. This apparently random collection of annoying habits
has a single explanation: the power of holding a program in one’s
head.
Whether or not understanding this can help large organizations, it
can certainly help their competitors. The weakest point in big
companies is that they don’t let individual programmers do great
work. So if you’re a little startup, this is the place to attack
them. Take on the kind of problems that have to be solved in one
big brain.
Ethics and Artificial Intelligence: Driving Greater Equality
FEATURE | By James Maguire,
December 16, 2020
AI vs. Machine Learning vs. Deep Learning
FEATURE | By Cynthia Harvey,
December 11, 2020
Huawei’s AI Update: Things Are Moving Faster Than We Think
FEATURE | By Rob Enderle,
December 04, 2020
Keeping Machine Learning Algorithms Honest in the ‘Ethics-First’ Era
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 18, 2020
Key Trends in Chatbots and RPA
FEATURE | By Guest Author,
November 10, 2020
FEATURE | By Samuel Greengard,
November 05, 2020
ARTIFICIAL INTELLIGENCE | By Guest Author,
November 02, 2020
How Intel’s Work With Autonomous Cars Could Redefine General Purpose AI
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 29, 2020
Dell Technologies World: Weaving Together Human And Machine Interaction For AI And Robotics
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
October 23, 2020
The Super Moderator, or How IBM Project Debater Could Save Social Media
FEATURE | By Rob Enderle,
October 16, 2020
FEATURE | By Cynthia Harvey,
October 07, 2020
ARTIFICIAL INTELLIGENCE | By Guest Author,
October 05, 2020
CIOs Discuss the Promise of AI and Data Science
FEATURE | By Guest Author,
September 25, 2020
Microsoft Is Building An AI Product That Could Predict The Future
FEATURE | By Rob Enderle,
September 25, 2020
Top 10 Machine Learning Companies 2021
FEATURE | By Cynthia Harvey,
September 22, 2020
NVIDIA and ARM: Massively Changing The AI Landscape
ARTIFICIAL INTELLIGENCE | By Rob Enderle,
September 18, 2020
Continuous Intelligence: Expert Discussion [Video and Podcast]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 14, 2020
Artificial Intelligence: Governance and Ethics [Video]
ARTIFICIAL INTELLIGENCE | By James Maguire,
September 13, 2020
IBM Watson At The US Open: Showcasing The Power Of A Mature Enterprise-Class AI
FEATURE | By Rob Enderle,
September 11, 2020
Artificial Intelligence: Perception vs. Reality
FEATURE | By James Maguire,
September 09, 2020
Datamation is the leading industry resource for B2B data professionals and technology buyers. Datamation's focus is on providing insight into the latest trends and innovation in AI, data security, big data, and more, along with in-depth product recommendations and comparisons. More than 1.7M users gain insight and guidance from Datamation every year.
Advertise with TechnologyAdvice on Datamation and our other data and technology-focused platforms.
Advertise with Us
Property of TechnologyAdvice.
© 2025 TechnologyAdvice. All Rights Reserved
Advertiser Disclosure: Some of the products that appear on this
site are from companies from which TechnologyAdvice receives
compensation. This compensation may impact how and where products
appear on this site including, for example, the order in which
they appear. TechnologyAdvice does not include all companies
or all types of products available in the marketplace.