logo
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.