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’ve been doing a little introspection on my work habits lately and I’ve noticed how they differ in different settings.
For instance, I’m starting to find that in many cases, I would rather walk over to a local expert in my office than search for what I’m looking for on Google. The local expert is usually within my vicinity, many times in the same room, but Google is always right there, right at my computer. My question is: Am I a technical extrovert — a fancy name for a social butterfly in a field of (stereotypically) moths; or am I habitually lazy, consistently bugging the person who knows?
I would rationalize myself as an extrovert, and it turns out Myers-Briggs would too. But lazy?
Some habits at work are:
- Ask someone before searching Google.
- Walk to the person who will know the answer rather than talk over AIM or IRC.
- Talk to people in meetings (or spontaneously create them) instead of use email.
- Take notes on paper because I will forget many of my coworker’s “quick fixes,” like what command to use, or how to use it.
Put those in contrast with my habits at home:
- Google my error messages extensively.
- Research how to solve my specific task.
- Try out my hypotheses or find examples.
- In many ways, learn by doing.
And put that in contrast with my undergraduate career:
- Remember every word the professor said, taking notes that I probably won’t read.
- Learn by doing, especially when given specific homework assignments.
Is the difference in behavior the time pressure of the work environment? The effect of having knowledgeable people directly in my vicinity? An attribute of my extroversion? The result of having an authority figure?
I don’t know. And whatever it is, it’s ingrained, because I don’t think about it — or, I have to work to think about it when in context. But maybe that’s why they call it work.
Regardless. It’s clear I’d rather walk and talk than sit and research.
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.
On the heels of James Bach’s Buccaneer Scholar, a new idea, book and blog where he details his experience with exploratory thinking and learning, comes my own wrestling, not only with how I learn, but what I should learn. Due to recent events I’ll make clear in a few weeks, this question has begun to capture all of my spare CPU cycles — and it won’t quit.
The crux of the question, I think, is this: When I was thirteen, I set a goal to go to college, get a degree, and work for Microsoft (then the most popular software company in existence). While in college, I latched onto open-source software and the free software movement — happily ditching Windows for Gentoo, Mandrake, then finally Ubuntu — and gleefully traded Microsoft for a slightly newer and more exciting company called Google. Google had free food, funky office chairs, and they fit the goal I previously made when I was thirteen. My sense of self was intact, no harm done.
When it came time to interview, though, things were messier than I expected. I was still trying to finish school — to graduate, move out of the dorm and wrap up all the extracurriculars that consumed most of my spare time; and I was, on the more personal side, simply trying to grasp what was happening as I made the transition from college life to real life.
It was all too fast. Not only was I not accepted by Google (that’s a story for another time), but I didn’t know where else to go from there. In magicians terms, I made all but the prestige of my childhood goals, and I was left like a confused audience member contemplating whether I should stand up and applaud.
But, prestige aside, I realized my longstanding goals ended after college, and whether or not I was employed by Big Popular Company mattered little to anything but my ego. Even if I did achieve my goal, I’d still be left with the same question: What happens next?
When I learn, I need to know the big picture. I like to know where I’m going, why I’m going there, and in general, how to get there — but not always. I know the devil’s in the details, but I like figuring out the details as I go along.
Looking back, I had more or less achieved my goal — college, degree, employment — but I didn’t have the big picture telling me where to go next. I still don’t. I’d assume even James’ Buccaneer Scholar, with his exploratory state of mind, would have some type of charter, though I can’t believe he’d always know where he is going. James, I’d like to hear you expound upon that if you haven’t already.
This leads to the more practical dilemma: Of my interests, which path do I choose? The following is a list of career paths I could be interested in taking. Though I run the risk of taking the totally incorrect approach to, well, life, of these career paths, I can’t help but be interested in their prestige. Here goes:
- Independent test consultant.
- Product Manager/Test Manager for large software engineering projects.
- Ph.D in Software Engineering or Cognitive Science, researching and teaching software engineering and/or software testing.
- Software Developer for cutting-edge, Web 2.0 technologies (I am that now).
- Entrepreneur for my own software development company. (I’ll probably need an MBA).
- Entrepreneur for my own software testing firm. (Again, an MBA).
- Tech Journalist for popular blogs and magazines. (I’ll probably need to study journalism).
- Politician. (I’ll probably need to study political science, though this brings me to my next interest…)
- Something in the arts, say, acting.
And as an aside, this whole process feels like one big game of Twister.
James Bach just started a new blog called How I Learn Stuff where he depicts the life of a Buccaneer Scholar. I’ve yet to fully understand his use of the term, but the posts and comments there are quite moving. This is likely a blog to watch.
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:
- 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?
- 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.)
- 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.
I’ve tried to write this post many times. I’ve tried taking different strategies, from telling a story-based account that led me to an idea, to being blunt and direct about what I was trying to say. I even tried using big words that act as “intelligence flags” for those who don’t understand the message. Though I made three tries, I was satisfied with neither.
Instead of trying to talk around a topic that doesn’t seem to have a whole lot of discussion — nothing that I can divine, anyway — I’m instead going to say it very cheaply.
Given these premises: …
- Bug reporting systems are communication tools that aide people in talking about software defects, problems, bugs, etc.
- Bug reporting systems intentionally or unintentionally become huge silos of information that don’t play nice with other software.
- Bug reporting systems encourage communication that is formal, dry, and sometimes (most of the time?) uninteresting.
- Bug reporting systems are not people focused.
… And, given this observation: …
- Bug reports and blog posts are essentially the same technology. They are, at their core, a block of text followed by inline discussion.
… I’ve come to this conclusion:
- Bug reporting systems are rather old technology, and their creators can learn a lot from the blogging movement.
What if bug reporting systems had trackbacks, for instance? Or a meaningful RSS feed?* Or maybe, “What’s new?” “What’s interesting?” or “What’s the hottest bug that we know of right now?” What if a bug report displayed who was talking about it (e.g., who linked to it) or performed the mundane task of figuring out which bug reports were related (again, who’s linking to it)?. Wouldn’t that make things easier? If there was a better interface — rather than the top of the bucket — that management could peer into, wouldn’t that solidify the role of the testing organization and help management keep track of their software’s status day-to-day?
Isn’t that bug advocacy?
This all stemmed from our use of bug reporting systems at The Open Planning Project. In short: One Big Bug Reporting System is unmanageable given many users and many avenues of input. Eventually, the silo will become too big. Multiple bug reporting systems are unmanageable given software systems that are tightly integrated. Eventually, a single bug will affect each system, and multiple people — whose hands are somewhere within each bug reporting system — will have to respond to it.
I almost hate to say it, but online bug reporting systems are the oldest Web 2.0 applications I know. So why have they fallen so far behind?
* Our system, thankfully, has an RSS feed, though my impression is most bug reporting systems are behind the times.
PS: I could be convinced that all I’m really suggesting is that Y generation testers will start advocating bugs to management through current Web 2.0 technologies, such as blogs. However, I wouldn’t be disappointed if some bug reporting systems learned from the blogging movement, evolved a bit, and became more open to information sharing across a large, interested audience.
My current open-source favorite is Trac. No guarantees, but there may be a new plugin on the horizon.
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.”
Brian Rice, in his keynote speech at StarEAST 2006, made a great point: He said “Talking to developers is like talking to monkeys.” What he meant — at least, what I thought he meant — was that software testers and software developers have trouble communicating. Although he was only trying to be funny, I think he was making a much more direct point.
I don’t think software developers and software testers are speaking the same language. Both developers and testers have the same goal — that is, they are trying to engineer good software — however, I think there are many cases where they don’t understand each other. Brian, mentioned above, was blaming the developers for the communication problem; he was jokingly saying that developers have a lower cognitive ability, and that testers are, in fact, the better, evolved human form. Although some testers may believe they care more for the software than the developers do, I don’t think this problem has only one side to blame.
Take this example for instance: Two people are asked to communicate; one person in English, and the other in Chinese. They must only communicate through text, they must never use an interpreter, and they cannot — by any means — meet in person to judge facial expressions. Do you think these people would have communication problems? If I had to guess, I’d say so.
Although this is an oversimplification of the problem, I think it is parallel with what companies are asking developers and testers to do. Developers and testers must, by all means, talk about a bug through a bug tracking system. These systems are great for management, in that they provide ways to audit bugs, analyze metrics, and promote insight into the status of a software project; however, I don’t think they are that great for the people actually doing the work. Could these bug reporting systems, with all their benefits, be getting in the way of tester-developer communication? Could these systems — for the sake of auditability, metrics, and insight — be causing unwanted side effects to those actually communicating? Although I have no definitive answers to these questions, I’d like to cite this example as some proof that bug reporting systems may be doing more (or less!) for communication than we actually think they’re doing. We might — if I’m at all on to something — need to rethink the way we do this.
What do you think? At the end of the day, I’m simply one man — and in fact, I’m just a student. I’d love to hear from people who have different — if not contrasting — views on the topic, who’ve actually spent some time getting work done. If there is anybody out there who’d like to comment on their experience, I’d love to hear it.