Yet a man who uses an imaginary map, thinking that it is a true one, is
likely to be worse off than someone with no map at all; for he will fail to
inquire whenever he can, to observe every detail on his way, and to search
continuously with all his senses and all his intelligence for indications of
where he should go
—E. F. Schumacher, Small is Beautiful
There's an idea I first saw at Django Conf that I really liked, the opening
keynote is called "Django Sucks" and it's about everything that is wrong with
Since then I've been promoting the idea on every conference I've been and many times
I fantasize about giving the "X Sucks" talk myself.
I'm part of more than one community in the utopian spectrum, 2 weeks ago I gave
a talk at Bob Konf titled Programming by any other name where I showed how the future is
already here, we just have to find it and help its creators gain adoption,
here's the other side of that talk:
As a temporary member of the software utopians, an activity we share is
to imagine alternative realities in which every wrong decision was instead
replaced with the "right" one, with the benefit of hindsight, of course.
The word "right" in quotes because it may have yet to be tested in the real
world and may require the suspension of disbelief on many aspects of reality.
We may call this activity "counterfactual porn".
I say temporary member of the software utopians because I'm also a member of
the software builders, people that build software that real users
are willing to use (and pay for) to solve real problems.
One of the utopians' hobbies is to look down on systems that exist and
solve real problems, pointing at its flaws.
These flaws are in contrast to systems that only exist as an idea, paper,
or at most as a small prototype that proves a single point and solves a
single problem carefully crafted to make it shine.
But there's a gap that utopians never seem to cross.
The gap from early prototype that at most proves a point or shows a new
idea, to the point where that single thing is part of a whole that people
can use to solve a large variety of complex problems.
Some utopians dared to cross the gap, General Magic, Pharo, Racket, Genera to name a few.
These Pioneers turned settlers faced the fact that "If you build it, they will come" is usually not true.
Those products were (and some are) things that you can get and use, but for
some reason they failed to catch on.
Here utopians usually appeal to the "No true Scotsman fallacy", if not to the simpler
"people are stupid/don't know what's good for them" and go back to the
confortable possition of throwing stones at things others build and maintain.
When someone takes the failed idea (or prototype) and adapts it into something
that people actually use, taking into account the limitations of reality,
society, economics and people's behaviors, the utopians proceed to complain
about how the new thing is a bastardized version of the original idea and how
if they were to do it they would stay true to the original.
The exercise of actually doing either is almost never attempted, or is
attempted and quickly abandoned.
In some cases it's completed and for "strange" reason it fails to gain adoption.
GOTO No true Scotsman/People are stupid.
The implementation, its users or some aspect of reality are always blamed, the
idea must be kept untouched.
I usually go around preaching ideas by thinkers I admire, I think it's really
useful to consider them to improve the systems that builders create.
Pure Ideas are important, people stopping at prototypes too, but as much as
I believe we need to learn more from history and study great thinkers,
researchers and their ideas, I also think we should at least respect and listen
to people building finished products that have to face the harsh reality of
productive usage of working software.
While we are at it we could also listen to the users of such systems, which we
love to talk about, but almost never talk to, let alone let them tell us
something that may shape our ideas.
Ideas are only impactful when they get turned into things that real people can
use to solve real problems.
During this process, pure ideas have to be adapted at each step, the end result
is usually not as pure as one would wish, but that's the price to pay to get
from idea to reality.
This involves at least 3 kinds of people, Utopians/Pioneers, Builders/Settlers
and Users/Citizens, you need the 3 to collaborate, communicate and respect
each other's roles and constraints.
If you are of one kind and think you could do a better job at being the other,
then before telling them, try showing them, all the way. You may learn that
it's not that easy.
If you don't want to show them, then collaborate and listen, you may learn
something new that may improve the chances your idea gets adopted.
The process from idea to adoption also involves 3 different timescales, short,
middle and long term (similar to operational, tactical and strategic levels
Execution has to work at each level individually but to achieve the long term
vision, the short and middle term need to be aligned with the long term, even
if in between it has to take some detours/shortcuts.
When the 3 roles collaborate and are willing to adapt the idea to consider each
other's constraints and plan for the 3 timescales as a whole, they may have a
better change to achieve the utopian objective, even when during the process it
doesn't look like it.
The alternative is to stay forever at the idea level complaining at people
trying to bring it to reality.
PS: I may not be only talking about software