Nitpicking: development, agile and otherwise


Earlier today I twittered as follows:

It means I wasted a couple of hours with the API this morning, but I just heard that a @songkick feature I really want is in QA…sweeet!

Thanks to my ego-tastic monitoring processes, shortly thereafter I became aware of an indirect response to that tweet, along the lines of “‘In QA?’ What a waterfall thing to say.” While in my own defense the “in QA” part was a direct quote rather than my own formulation, the response did get me thinking about development processes for the first time in a while.

Not my own personal development processes, you understand, which run along the lines of “well, it didn’t seem to break too often running locally so let’s make it public and see what happens, because I’ve already been working on this for, like, a whole hour already” but rather those “people who don’t know me well enough to come by the house and punch me will be using this” development processes. Plus, a quick search also reveals that it’s been quite a while since I wrote anything about agile development, so I might as well go with it.

So here’s the context, for those of you too lazy to click through the links above:

  • I still love Steve Yegge’s pull quote from several years ago: “anything that calls itself a “Methodology” is stupid, on general principle.”
  • I still believe that taking an agile [or “Agile,” if you must] approach to software development reflects the most productive mindset currently out there, but that the key issue is the business buying in to this overall approach to making stuff, rather than software developers buying in to this overall approach to making stuff.
  • I still suspect that there are people who believe that “agile” is a magic bullet that will immediately, painlessly resolve all the fucked up problems that they’re having, and people who promote “agile” as a magic bullet that would immediately, painlessly resolve all the fucked up problems that everybody’s having [reference the ritual of the splitting of the list].

So How Does This Apply to QA?

I’m glad you asked. Whether it’s different people defining requirements, writing code, and testing, or a single person doing all of these, there’s a flow within an iteration. If it’s a 10 working day iteration and on day six you’re still spending most of your time on “what should it do,” you’re probably screwed; if it’s day nine and you’re still spending most of your time on “how should it do that,” you are#8212;again—probably screwed.

Even when the goal isn’t to get sign off and hand off in order to cover off one’s own ass, any piece of code is going to go through stages on the way to the happy land of flawless, bulletproof production. “In QA,” in this context, means that “what should it do” has been settled [and also that a few “what should it do next” items have been added since they won’t fit the time constraints], and “how should it do it” is largely settled for the developer [for the moment, at least, though “how could it do it better” may well remain an open question], and you’re on to the question of “so, okay, are we sure it’s really doing that?”

That doesn’t mean that no more code will be written, nor that a few more “oh, crap, I just realized that it should have done that but it doesn’t yet” items won’t be added to the list for an upcoming iteration, but rather that the organization—one person, three, or a hundred—is focused on confirming that the product or feature works according to the definition that they have agreed upon as they moved through the process.

Perhaps this is splitting semantic hairs, but I’ve lived through both scenarios, I’d rather be less “Agile” and spend time “in QA” than assume that “Agile” is taking care of everything.

Reconsidering Facebook


Being a quick brain dump, since the Internet does not exist where we’re staying in Claryville, NY.

Before we left Brooklyn I was thinking about Foursquare; I think what Jon Steinberg and crew have done with Social Great is really interesting, but it’s not the direction that really excites me about the potential of the real time Web.

In case you’ve been living under a rock, Social Great tracks the Foursquare checkins across a number of cities and provides near real-time trending data: where are people (in the aggregate sense) going, what places and sorts of places are most popular now, and what trending is happening in those various cities. Really cool.

The issue for me, though, is that while this is a great way to transform Foursquare’s data, I think it doesn’t go far enough in the transformation; while it’s far less “now” focused than Foursquare itself, Social Great is still pointing in that direction. As the poster child for the “real time Web,” Twitter has set the default mindset and behavior to taking real-time input and making it into real-time output–or as close to real-time as the service can handle, anyway. We tend to assume that the value of these little chunks of data decreases like a new car leaving the lot: if you don’t catch it immediately it’s lost a huge part of its value.

But that doesn’t have to be the case. Taking Foursquare as an example, what I was interested in seeing was a map overlay of the full historical data set for my friends: if I’m trying to kill an hour or two in an unfamiliar neighborhood, being able to see which places my friends have gone to  (and which of those they’ve gone to frequently) has more value than knowing where those friends are right now. In aggregate, the little snippets of data become hugely valuable to me.

But there’s another issue here: I’m increasingly irritated by the fact that Twitter is the dumping ground for a lot of this data. Everybody makes it easy to dump their data into Twitter, because Twitter is…yes, you guessed it, the poster child for the “real time Web.” Since Twitter is input == output, though, people’s timelines become increasingly littered with context-free “I’m here,” and “I just bought this,” and “I just heard this” tweets.

It’s pretty close to a 180 for me to say it, but what since Facebook is already somewhat further along in managing distinct classes of real time data that may or may not be visible (think Facebook apps)–and they dearly want in on the real time scene, as long as we’re on the topic–so what if we let them have all this data? As long as I can pull all the data out via an API [yes, that’s a big caveat there] I really don’t care where it lives, so why not let Facebook have a shot?

Maybe it’s a terrible idea, but I’m starting to think that we really need an aggregator for all of this stuff, and one that acts as a storehouse rather than a repeater.

A Couple of Needles for a Tiny Thread


So if you’re on Twitter, you are almost certainly aware by now that Joshua Schachter (of fame) just launched a personal project called A Tiny Thread. It’s a nice idea: piggyback off of the Twitter identity system [and take note of that, identity/SSO geeks] and create conversation spaces.

This neatly and rather elegantly addresses one frequent Twitter complaint: that it’s all too common for any given user to see only disconnected fragments of a conversation that’s happening on Twitter (since you may not follow all the people involved), and even those fragments that you see are likely spread in and amongst the many other unrelated tweets in your timeline.

The use case is pretty clear: instead of a jerky, erratic stream of @replies all happening on Twitter, a participant in the conversation goes to and creates a new thread, at which point an automatic tweet is generated from their Twitter account: “I started a thread: Facebook, FriendFeed, Twitter, and (inevitably) Hitler”. The first time someone comments on that thread, they too emit an automatic tweet noting that they’ve joined. Twitter becomes a way to track what conversations are happening and who’s participating, but the actual conversation happens off Twitter, in a coherent, unified forum.

Since this thing is only hours old it’s not particularly productive to dig into detailed criticism, but I’ll toss out the two points that immediately come to mind for me:

  1. Will the conversation data be open and API-accessible? I’m intrigued by the idea here, but if we can’t get at the data this feels like a dead end.
  2. Yes, it’s generally better to launch quickly with a minimal interface, and there are huge benefits to focusing on simplicity, but as it is now the interface isn’t actually very good at facilitating (i.e. displaying) conversation. Joshua (and pretty much everybody else, really) might spend some time on, a site created by a splinter faction from the Urban Baby message boards. Create an account, log in, and watch: how discussions flow, how easy it is for threads within a topic to develop and how coherent the presentation remains, and how both short and longer-form posts can mingle.

With the Facebook/Friendfeed deal bringing back another chorus of “Yes. Facebook. There can be only one….”* I’m happy to see some work and thought around constructing complementary pieces rather than a monolith. Whether or not a tiny thread takes off, this kind of development is going to lead in interesting directions.

Sure, I’m going to needle the project a little because it’s not exactly what I would have done (if, you know, I had actually had the idea for it and stuff), but it’s the kind of thinking that I love: don’t bother reinventing the wheel, just build the vehicle you want on top of it.

* I had a tough time deciding between the Highlander joke and the Borg joke, but I think this was the way to go.

The Twitter That Was


Let’s start with a couple of interesting links: first, Nate Westheimer’s post from a few weeks ago in which he notes that his own Twitter use (and that of a number of other once heavy Twitterers) has been declining over the past few months. The full post and chart are here [and you should take a look], but the key proposition kicks it off:

Like your favorite bar in the East Village, Twitter sucks now that it’s popular.

That’s the feeling I’ve had for sometime, and — as it turns out — founder @ev and investor @fredwilson agree… at least statistically.

A week or so later, Mark Schoneveld added an interesting note to the discussion that was swirling around Trent Reznor’s very public decision to give up on Twitter. [Um, again, I mean. Give up Twitter again.] As above, you should really read the source document, but here’s an elegant snippet from Mark’s post:

The direct-to-fan connection that Twitter offers can be fun at first – or was fun at first – but dealing with the mainstreamed onslaught must be incredibly difficult for artists. To keep up with and maintain boundaries of privacy and priority starts to be impossible as a point.

On the face of it this looks pretty bad: there are many similar rumbles (and not just appearing on Tumblr, you cynics), and these two examples come from pretty insightful guys who are also tied into communities that have been responsible for a lot of enthusiasm about Twitter.

I agree with Nate and Mark as far as they push it, but I also wonder whether the very real problems that they point to—problems that are unfortunately linked to Twitter’s increased popularity—signal the start of Twitter’s decline as a communication tool, or signal the start of its evolution into a tool that plays a different role in the “real time web.”

While I, too, kind of miss the Twitter that was, I believe that Twitter from 2006 through 2008-ish was one facet of something new and rather different being jury-rigged to fit into an older model of the Web. It was an exciting social communication tool in that context, but I think that where Twitter will be valuable as we go forward is as plumbing, rather than wallpaper.

We’re used to thinking about Twitter as a simple transport mechanism, a largely unfiltered input == output system: each and every tweet is picked up by a little universe of followers, and that’s the end of it. Occasionally we might check Twitter’s trending topics to see what the spammers have to say, but the value of any given tweet is seen as having a mayfly-scale lifetime, where you either catch it the moment when it’s relevant or you just let it flow past.

But if Twitter is just a transport mechanism, we’re pretty close to done.

Trent Reznor simply can’t handle tens or hundreds of thousands of people nitpicking at him in 140 character chunks any better than he can handle email or phone calls from that many people. Nate Westheimer (a really open, accessible guy in my experience, so no criticism of him) will find that his Twitter followers have changed from a community into…well, followers.

If, on the other hand, Twitter (and let’s make Twitter a portmanteau word that includes the rest of the mobile/social world) is nothing more or less than a huge data set about what’s happening right now, then we’ve got something interesting. Yes, this stuff can be rendered right now for the small number of people interested in seeing it, but it can be used in many other ways as well.

If things go as I expect (and hope), yes…any given individual will Twitter less often and there will be less of the “neighborhood bar” feel to the service, people will check in less frequently using Foursquare, and the ambient intimacy thing that has been so compelling will at the large scale become a “hey, do you remember when…” curiosity.

Let’s just accept that and figure out how to use real-time data to inform and enhance what’s happening online, rather than just enjoying the fact that we can know that something happened just a minute ago. If you immediately respond to every single thing that happens, you’re a jittery mess; if you take in everything that happens and give it a little processing time…well, let’s see what happens, shall we?