Fear, Uncertainty, and Doubt

Of all the monsters that fill the nightmares of our folklore, none terrify more than werewolves, because they transform unexpectedly from the familiar into horrors. For these, one seeks bullets of silver that can magically lay them to rest.

The familiar software project, at least as seen by the nontechnical manager, has something of this character; it is usually innocent and straightforward, but is capable of becoming a monster of missed schedules, blown budgets, and flawed products. So we hear desperate cries for a silver bullet…

– Fred Brooks, No Silver Bullet

Software is full of failure, and will be until we can learn how truly to build it. Fear of failure is fear of death. In fear of failure, we seek order.

– Richard Gabriel, Mob Software

Eventually, people begin to realize that dealing with fear is not good; instead we need to be adults, taking calculated risks and living with the consequences. We need to drive out fear in the organization (think Deming) and instead live with uncertainty. This brings us to what we called (again, lack of a better term) “second generation” methodologies that are a backlash to the first. XP is a great example – the whole point is simplest process that could possible work, combined with just enough safety nets that you can live with a little risk. Stop living in fear that the developers won’t hit some meaningless deadline for a huge piece of work, and instead have a simple working system up in weeks and add features as you go. Duh.

As I said before, these second-generation methodologies are, for the most part, just a backlash to the first. They are saying “well, heck, too much process didn’t work. Let’s take away and take away and take away process untill we have something workable.”

So, second generation languages are still caught up in fear – that is, driving it out. That’s half the sales pitch. If we just take those gates down, maybe pave the road, we will get home faster.

Pothole Methodologies

Perhaps the persistent tendency to harden insight into unquestioned doctrine arises from our need to feel secure, to gain a hold on our situation and stave off the fear that things are dangerous and beyond our control. It’s an attitude that naturally appears when dealing with illness, aging, and mortality, the greatest of fears; and the fact that we really aren’t in control, that we can’t wield power over such awesome eventualities, just makes us crave answers and solutions all the more.

– Jeff Wilson, White Ashes at Killing the Buddha

To truly learn a new language, you have to learn the different things. When you find something difficult, something that doesn’t make sense, you don’t avoid it, you embrace it. This is where the actual learning takes place.

– Raganwald, The challenge of teaching yourself a programming language

Ordinarily we are swept away by habitual momentum. We don’t interrupt our patterns even slightly. With practice, however, we learn to stay with a broken heart, with a nameless fear, with the desire for revenge. Sticking with uncertainty is how we learn to relax in the midst of chaos, how we learn to be cool when the ground beneath us suddenly disappears. We can bring ourselves back to the spiritual path countless times every day simply by exercising our willingness to rest in the uncertainty of the present moment — over and over again.

– Pema Chödrön, Comfortable with Uncertainty: 108 Teachings, pg 8

Doubt is not a pleasant condition, but certainty is absurd.

– Voltaire

New Job, No School!

I’ve been working for over 6 years for large corporations, but last week I accepted a job offer to work at a much smaller company — I’ll be employee 6 (or 7, if you count the intern). I’m really excited, my family’s excited, my current co-workers keep telling me I’ll be missed, and my new co-workers can’t wait for me to start, so it’s a pretty good time. And just because that’s how life goes, I’ll also earn my B.S. in Computer Science after 10 years of full- and part-time study.

But why mention it here? A few reasons:

  • The new job is with .Net, and my background (so far) is in J2EE. I like the thought of seeing the other side, and doing a balanced compare-and-contrast. To borrow from Neal Stephenson, “nothing teaches you about your home country like visiting a different one.” [My first impression of the differences is that Java aims to be open, but at the cost of consistency, completeness, and cohesiveness; .Net is more consistent, complete, and cohesive, but closed. That’s very general, so flame away.] Outcome: new posts.
  • My copy of the pick-axe just came in. I’ll spend the week between jobs learning some .Net, of course, but also firming up my Ruby skills. Meta-programming, dynamic typing, closures, continuations…So many neat things to learn about! Outcome: new posts.
  • I think it’s safe to call me an autodidact. Going to school was frustrating because there are so many neat things to learn, and I have to follow the curriculum. [What a whiner!] In any case, no class means I can brush off G.E.B., maybe Zen, finish Flatterland, and some other things. Outcome: probably new posts.

I’m really looking forward to the new job, and to no school. All within a few weeks of each other. It should be a good summer…