I’ve been meaning to write this post for a month now. Or maybe two months. Well, let’s make it a month and a half. And what it centers around is a topic that most normal, average “any-collars” (i.e., blue or white, if you have a collar at all) wouldn’t care too much about. In fact, I’m finding that I don’t care too much about it either. And for those who know me… well, that’s a big deal.

The catch, the trick, the surprise — the all important lady behind the curtain and the thing behind door number three — is that recently I made a simple switch. I switched — are you ready for it? From Ubuntu to Windows 7.

Now I know there was a gasp in the back of the crowd, and a kind mother who covered the ears of her darling three-year-old. But I will say this: I’m impressed with the changes they’ve made, and I have no intention of switching back.

The main motivation for switching was simply because A) my new computer came with it, and B) Windows is simply an easier platform for consuming media. Two years ago it would have been a religious war: Freedom, hope, and such and such, and an attack against a corporate conglomerate. Now I’m simply switching to what works better for me on my home computer.

But I can’t write this post without hitting on that religiosity I once had, where, for a while… maybe a week… I was a bit torn. I mean, how do you define freedom? Freedom for the programmers, or freedom for the user? At home I want to be a user. I made that decision. So I’ll take the freedom that lets me more easily do what I want even though, theoretically, that means there’s a Schwarzschild radius. (I learned that from a YouTube video!)

So.

I didn’t want to make this long. I didn’t want to compare two different operating systems. And I didn’t want to conquer or ridicule a religion. That’s unimportant. Instead, I wanted to focus on the value, and that something I once called “bad,” (Microsoft, Windows, etc., etc.) is now the foundation of my home computing experience. Pretty cool huh? ;)

Alright. I’m done with this post. It’s time to get up and go do more important things, like eat cereal.

Update: As I was editing this post, my computer had a hard crash. I mean, a REALLY hard crash. Not even a blue screen. I didn’t like it at first, but then I thought for a second: maybe that proves the point. Maybe you take your good with the bad, and the freedom is just choosing which ones you want. Hmm. Good to know.

I’d like to express this articulately some day, but for now I’ll just stand on the shoulders of greatness — and then correct him:

Given enough eyeballs, all shallow bugs are shallow. — Linus Torvalds Tim Coulter

Maybe it’s an economy of scale thing. e.g., When is there ever enough competent, manageable, able-to-fix-your-problem eyeballs?

Life is unexpected. Yep. If no other theme better permeates these Flash Forwards (of which there are only two), it would be that we should wholeheartedly embrace the uncertainty of the future. Unfortunately, that future at times means we cannot attend to our blog posts, and sometimes that’s a travesty. Here, however, I’m finally catching up.

The Dr. Coulter I meant to introduce you to — or at least one incantation of him, of possibly many — would look something like this: Aside from his stunning good looks, brilliant personality, admirable intelligence and, let’s rightly admit it right here and now: his deeply poetic romanticism (to which all the women swoon), Dr. Coulter would be a computer science or software engineering professor, likely more teacher than researcher, somewhere respected, holding a Ph.D. in microsociology.

“But why do they swoon? Charlie, tell me why they swoon!” — Knox Overstreet

Okay. I admit: I’ve embellished on some points. ;) But the real kicker was supposed to be the microsociology.

I stumbled upon microsociology when I was thinking about an MBA, back when I wrote The Prestige. Many schools in New York City focus on finance, and beside their MBA programs offer classes in economics. A few clicks on Wikipedia gets you to sociology, or better, macrosociology, dealing with human interaction on a wide scale (such as with economics). A few more clicks gets you to microsociology, the inverse, dealing with human interaction on a more personal scale.

Microsociology, to the extent I understand it, extremely interests me. I like paying attention to personal communication, almost overly so, to the point where I reflect on it as it happens; in fact, I wouldn’t mind researching it for its own sake. However, I want to keep using the degree I received from Florida Tech, and I still want to focus on software, namely testing. Thankfully, microsociolgy fits right in; that is, if we swap some humans for computers.

Some might not call this microsociology and instead call it human-computer interaction — which it probably is — but I don’t intend to focus on haptics interfaces or better UI design, etc. At least, not directly. Instead, I hope to research the more personal side of computing (i.e., “What makes users angry,”) and try to use that research to improve how we develop software and what bugs we decide to fix first.

My hypothesis is that, based on human social expectations with other people, we may place similar expectations on computers. And if so, the bugs that “break” these expectations may be the most damaging, eliciting the most emotion from the user. Perhaps the reason we personify computers at all (I’m sure we’ve all proclaimed, at one point, “it’s thinking”) is because we have unconscious expectations that they (they???) are thinking entities. And that they’re stupid. And that they don’t do what we tell them to do. And maybe — and this is only a hypothesis: If we study this phenomenon, it may help inform our design decisions up front as well as help us decide which bugs to fix after the fact. And if James Bach is right, and a bug is truly “anything that bugs you,” then we may really be onto something.

But, of course, life is unexpected, and the beauty of the future is, to quote greatness, “[that] you never know what you’re going to get.” Still, this research would be exciting in it’s own right (assuming it hasn’t already been done), easily earning its candidacy as my next Flash Forward.

Note: Flash Forwards are only flashes. I’m hoping someone corrects me on the things I take for granted, as I have a tendency to unintentionally hurt books I read, and my microsociology books are currently unscathed.

Update: See comments thread for more discussion.

A recently-made mockup of The Open Planning Project’s website, released only within the company, shows an about page with a sub-heading and description that says we as a company are “driving best practices.” I haven’t made my distaste for this phrase known yet — and by no means is this post an announcement, though I wouldn’t mind if they read it; but I am a bit surprised we use the term. Though some have said it better (well, one at least), here’s my impression of the phrase and how it appears to be used in our context:

  1. First, I agree fully with James Bach. Bias aside, best practices are like best friends: You never know when you’ll have a falling out. That’s sad, I know, but since I was little, I never wanted to choose a “best” friend because I thought it devalued the qualities of the other friends I had. Perhaps I’ll choose one when I’m old?
  2. Through conversations with coworkers, most on the programming side, there seemed to be this implicit understanding that “best practice” really meant “the best practice we know of right now.” This still doesn’t pass the context argument, but there seems to be an understanding that “best,” here, is not absolute over time… though it sometimes seems to be touted as so. There also seems to be this notion of, “Most bridges are built in way X, and therefore, way X is the best practice.” This might actually hold some weight in the development side of software engineering just as I assume the phrase holds in some contexts within structural engineering — I mean, let’s not forget Tacoma Narrows. But in testing, I’d assume stakeholders’ interests (among other variables) are too fickle and disparate to choose one “best” way of managing them. (I’d love to hear more from structural engineering folks to see how this phrase is used, if at all.)
  3. In my company, “best practice” feels like a marketing term. This is one of James’ arguments. If the quality of the software produced is a measure of the practice (this isn’t always the case), I wouldn’t say our practices are “the best.” That said, if there’s truth in advertising, maybe there’s a context — perhaps a geospatial one, an area where TOPP excels — where we really are leading the practice. Does that mean we’re the “best”? I don’t know.

I talked to the CEO of an optics-based software company recently, and he described his product not as the “best” product on the market, but as the best for a certain context — in his case, the high-end precision optics market. Not the low-to-mid end, where software is of lower quality but is much cheaper. I felt his description and use of the term “best” worked because he gave a context, though he was sampling over a single variable, quality, which to each person is fairly subjective — that is, if you subscribe to Jerry’s view, described here.

As humans, though, we seem to place the label “best” by ignoring variables we think are uninteresting, all with the intent of rallying behind a common leader. At one point, the software industry was led by IBM. After that it was Microsoft. Now it’s probably Google. Which is the best, you ask? That’s like asking which is the best car company. Maybe what you’re really asking is, “Which company hasn’t turned into an 800 lb. gorilla?”

I’ve probably belabored the point already, but the word “best,” in my opinion, is simply one person’s perception of the environment in which things exist, sampled at a certain point in time. They choose variables that they’re interested in, explicitly or implicitly, then find a leader amongst those available. What they don’t take into account when assigning their label is the concept of time, or that over time perceptions change. Or maybe they take time into account, but the “best” label simply doesn’t hold as things change. And we all know how fast the software world changes…

But again: The variables they sample over may not have value to others, even if the label holds, for them, over time.

My last analogy, simply because I had to hit home while making a cheap shot at Britney Spears, is that maybe the concept of “best” in “best practice” is just as fickle as “’til death do us part” in 50% of American marriages. Perhaps we assign the term too quickly. Or, maybe, we’re just looking for social status in a world that rewards that sort of thing.

Wow. That title almost crosses the line.

I wrote the following at about 2:30 a.m. the other night so I wouldn’t forget it the next morning:

  • A boundary is a theoretical division between two entities.
  • All boundaries are theoretical. Those that mask themselves as physical can always be viewed more closely, to the point where the whole of the boundary is divided into sub-boundaries. Where there’s this division, there’s a theoretical boundary.

For instance:

Draw a line in the sand. The line is a physical boundary, right? Zoom in, as if with a camera, until the edges of line are outside of your field of view. What do you see now? Sand, right? Tiny pieces of sand. Each with its own boundary, distinct from the others. Zoom in more. Now you see a grain of sand. And even more. Atoms. And now, what boundaries are there?

Is it safe to say a physical boundary is really boundary of boundaries, that in itself is a boundary of boundaries? If not, then where do we draw the line (no pun intended)? To me, we draw that line when we make a theoretical division between the items that make up the boundary. At this point, we care less about what’s really physical — each piece of sand, each atom — and instead care about the theoretical: i.e., the line you shouldn’t cross. That’s the boundary.

Part of me now wants to replace the word “theoretical”, above, with the word “cognitive,” though I’m not sure the effect is much greater.

I have a feeling the basis for this view of boundaries is rooted in one of the major philosophies. Something like, “We can not properly understand the utility of a chair unless we recognize that the physical object is in fact a chair.” In other words: until we give that physical object boundaries, hence the theoretical.

Note: This probably isn’t an orignal thought. Recognition goes to the original attendees of WHET with whom these musings started.

I’ll admit I could be reaching a little far on this one. Even so, I think the relationship is there.

I’m in Oregon new helping my dad recover from a broken hip. While chasing someone out of his backyard, he jumped a fence and broke his hip upon landing. Though the circumstances of me being home are less than ideal, I was able to gain some insight while driving with him.

We went to the doctor’s office. Dad had to get his sutures taken out — for those who don’t know, metal stitches — and he led me there turn by turn. I didn’t think at all about where I was going, he just told me the way.

A week or so later, we went again, this time for a prescription refill. Dad was fully prepared to lead me there again, but unexpectedly after a couple turns, he received a phone call from an important person. Because his focus was elsewhere, I was on my own.

What I realized from these two driving trips was how related memory and attention are to cognitive engagement. Because there was no need for me to pay attention the first time (Why should I? I had Geeves in the passenger seat.) I had trouble getting there the second time. I did end up at the right place, but I had to rack brain for the slightest amount of recall.

And here’s where the possibly far-reaching transfer comes in: Geeves represents a very detailed manual test script. I don’t think, I just do exactly what it says. Driving directions a la Google, however, are more like a checklist: With Google, I have to pay attention to all the idiosyncrasies of driving not needed when there’s someone else leading me. Questions like,  Have I gone too far? Have I not gone far enough? Where am I in relation to where I need to go? Did I make the right turn? — all unneeded questions when your only task is to “keep going straight until you’re told to turn again.” And again. And again. Now jump through the door.

Quick side note: A GPS device got me across country a year ago, although the only thing I remember is getting pulled over. :)

Johnathan Kohl last Tuesday wrote on his blog about the word “Agile”. He compiled a ton of different but related ideas: all about the word “Agile” and what it might mean. What I think he’s saying — and, in fact, showing — is that “Agile” (capital “A” or not) is like a box of chocolates: (at this point) you never know what you’re gonna get.

My friend, Christian Baudin and I are working on a project together, and I would admit that “it’s cool” to call our project agile (we, at this point, have no idea whether we’re calling it capital “A” Agile, just agile, or anything at all). Looking at our de-facto process — the possibly-unamed thing we simply fell into to — may just be called chaos. However, I would admit that, from a student’s perspective, being able to have “agile” as an experience — and possibly as a resume builder — is pretty alluring.

On the other end, Christian and I continually argue, hammering out whatever kinks stand in our way. We see these arguments as good things and we value them. However, I’m finding that, when relating our concerns to the Agile Manifesto, mine are more to the left where his are more to the right (read this as different; not degrading). I think, if I were to make some intuitive guess, we’re both arguing for a middle ground — to allay both concerns — and to come out with a project that satisfies all involved. If that happens — if our chaos actually works — then is there a need to coin it some way?

I’m sure that, because the programming team, the testing team, the marketing team, the sysadmin team, and the (you name it) team, are just Christian and I, our concerns can be ironed out in a short amount of time. This is how we manage it. I’d guess that a larger project with more people may need a totally different type of choas, because the project in itself is different. This is what I’d call context-driven (which I think might become the next “Agile”).

Although I’d hate to admit that a term with so much spotlight — that is so dear to people’s professional hearts — may be a marketing term, I don’t see any other reason to make a name for it. Yes, we need a word we can all use in our professional lingo — in order to communicate — but as Jonathan’s post makes clear (at least, makes clear to me; I’m inferring), any word that could have money behind it will. It’s like looking through a phone book and seeing “Reliable, Dependable, and Trustworthy.” Or, maybe, pulling a card from a hat. Or eating a chocolate.

An ending question: Could “Agile” be a description given to a process (or group) by a third-party, or a very large mass of people? For instance, take the word humble: I can never trust a humble man who states to others, “Yes, I am a humble man,” just as I can’t trust a company who states to customers, “Yes, we’re agile.”