Manhattan Metric

Software and Science in Equal Measure

Read Before You Write

A wise professor once told me, “When taking a test, read through the entire
thing before you start working. Once you begin writing, you stop thinking.” I
took this advice to heart and, throughout my university career, it was an
essential strategy of mine. I’m sure it was responsible for more than a few
passing grades.

If one views life as nothing more than a big exam and applies a similar
strategy, then it follows that you should spend your youth reading, learning,
taking it all in. Later in life you can focus on creating, but if you don’t
first spend time reading and thinking, what you produce will not be as good as
it could have been.

HDD, TDD, and Other Acronyms

If you are a follower of software development “fads”, you might recognize this
philosophy as being very similar to Rich Hickey’s notion of “Hammock Driven
Development”, the notion that you
should spend time thinking a problem through from start to finish before
beginning to code. You might also recognize that this is almost the complete
antithesis of Test Driven Development, and other “agile” methodologies, that
recommend that you start working immediately, gather feedback, and adjust on the
fly.

Just as you could extrapolate the “read first” strategy to an entire lifespan,
the agile-methodology-as-life-plan approach also exists, often called by names
like “fail fast” or “Ramen profitable”. Just as Silicon Valley is enamored with
agile development, it is similarly drawn to those who catch the entrepreneurship
bug young, start companies quickly, and fold them nearly as fast.

I’d be willing to make the bold assertion that those engaged in the startup-mill
of Silicon Valley are not learning as much by failing as they might by careful
study. That’s not to say that they are not learning. A failed test, marked up in
red, will still teach you what you don’t know. To borrow from a parable about
fish and fishing, giving someone a rod with a hook on the end is not the same as
teaching them to fish. Sure, they might learn what works and what doesn’t,
eventually. Yes, they will still have more to eat than had you given them a
single fish, but there is a value in study that seems to have been forgotten in
the Valley.

Democracy & Capitalism: Red, Green, Refactor

Why, then have TDD, agile development, fail fast, and their ilk garnered so
much attention by otherwise educated and successful individuals? The answer lies
in that famous Churchill quote on government: “…democracy is the worst form of
government except all those other forms that have been tried from time to time.”
Indeed, a democracy is far worse than a benevolent dictatorship led by a wise
and just leader, but far better than the rule of a despot. Likewise, capitalism
is much less efficient than a collective cooperative in which everyone works
toward a common goal, instead of competing with each other, but only if the
correct goal is known ahead of time.

What all of these systems: agile development, democracy, and capitalism, share
is the ability to hedge against making a bad decision. Have a bad government?
Fine, then change it in four years. Making a product that no one wants? Nothing
a quick bankruptcy can’t fix. It should come as no surprise, then, that those
advocating these systems have their interest in extracting the rare successes
from a milieu of failures.

Of course, in business this makes complete sense. A business is, after all, an
artificial construct. The only limits on how many software businesses you can
try are the time it takes to file the paperwork, find funding, and hire
developers. In an environment where incorporation paperwork is trivial, venture
capital flows freely, and talented programmers wander the streets looking for
their next gig, fail fast is the best way to guarantee success.

A Life Unlived

We are each given one lifetime, but that lifetime is composed of numerous days
and failure on any given day is unlikely to doom one to a lifetime of failure.
That’s not so much an attempt to be poetic as it is a mathematical approach to
choosing a life strategy. Building a successful career is not like building a
successful business because, while both are ultimately a game of numbers, the
numbers involved are different.

Certainly, examples of success can be found for both the serial entrepreneur and
thoughtful student lifestyles, but any fad can point to a handful of successes
given a large enough sample size. Figuring out how you, as an individual, can
have the greatest chance at personal success is different than recommending a
strategy to a group of people in the hopes of yielding the greatest number of
success stories, and therein lies the rub.

The answer, I think, is as boring as it is obvious: moderation. It would be just
as unwise to spend an entire life hopping from one failed venture to the next,
as it would be to while away the years reading but never doing. The prudent
course, it seems, would be to focus more energy on education in your youth and
to sacrifice some potential learning in favor of producing tangible results as
you age.

Of course, this is also at odds with the Silicon Valley narrative of the
fresh-from-college (or even dropped-out-of-college) entrepreneur, sleeping in
the office, chasing down investors, and hustling to make that first million.
Older software engineers are supposed to become managers or consultants, with
only the rare exception deciding later in life to go the start-up route, or so
we’re told.

Again, though, one must wonder what motivates such a narrative. Recent college
graduates are less likely to have familial responsibilities, are more amenable
to spartan living conditions, and don’t yet have the wisdom to appreciate why
“work-life balance” exists as a concept. That’s not to suggest that young
entrepreneurs are being exploited by the system. When you have so little to
lose, a fast failure is less likely to leave you gun-shy. If you’re playing a
numbers game, you want founders who will get right back on that horse, not ones
who will react to a failed venture by returning to the work-a-day world of a
steady income and healthcare coverage for their dependents.

As for me…

No one can guarantee success, either in business or in life. Attempting to plan
for life, with all its attendant ups and downs, is a folly so great that only
the truly foolish do not attempt it. Still, I feel that I have personally
reached the point where it is time to get to work. Enough reading. Time to start
solving.

If you understand this as an elaborate excuse for why I have not blogged more
before now, you wouldn’t be wrong. I can’t guarantee that I will stick with this
writing thing, but I am making changes to increase the odds that I will. I’ve
narrowed down the feeds in my reader and unsubscribed from a handful of mailing
lists. I know that there is a chance I will be less informed, less likely to be
the first to know. There is even a chance that I will become, as so many do with
time, “out of touch”.

It is also possible that I will have a hand in creating the next thing that gets
everyone talking, and for that, at this point in my life, I’m willing to take
the chance.