This is an old revision of the document!
Lesson: Don't Cross The Streams
<box round green>
“Whatever you do, don’t cross the streams!”
“Why?”
“It would be bad.”
“… What do you mean, 'bad?'?”
“Try to imagine … every molecule in your body exploding at the speed of light.”
“Right. That’s bad. Okay. All right. Important safety tip. Thanks, Egon.”
</box|– Dr. Egon Spengler to Dr. Peter Venkman in Ghostbusters>
Background
<box 25% right round red> Mocks lie.
They are wishful thinking.
Though good for brainstorming, they aren’t design and they aren’t real code. Never make a feature decision based solely on a mock. Always engage an engineer or architect when evaluating new data-flow designs.</box>
One product manager working on Yahoo! 360° made the following observations:
- Event Streams, like Facebook’s Newsfeed, are a reverse chronological list of events
- Blogs are a reverse chronological list of postings
So, he suggested that the product could be simplified by combining these into a single feed to make it easier for the user to manage his social output. He even made a mock-up, manually cross-posting his Flickr photos into his blog to show what it might look like. This was a significant form of self-deception. He selected only certain events to fold into the combined stream, and even those he grouped with more semantic understanding than was possible with software.
Context Error
<box 25% right round blue>When simplifying systems, remember the complete version of K.I.S.S.:
“Keep It as Simple as possible, but no simpler, Stupid.”</box>
The product manager’s observations were correct as far as they went, but he neglected to consider the correct social contexts for the streams in question:
- Event Stream events are system generated and wildly vary in social importance, depending heavily on where they were generated and how they are consumed.
- Blog posts usually have their context explicitly set by their creator and usually represent a context of the form: “This is something thought was important enough to create this post and to share with [everyone | friends | group | etc.].” [Side note: Live Journal Story on Delete Link]
In short, Blog posts are explicitly shared and event streams are implicitly shared.
To see how this is a particular problem, consider how the product manager’s blog-stream hybrid would have actually worked in the case he falsely mocked up. Every photo uploaded Flickr.com would also appear as a blog post, with nothing other than the title (usually some gibberish like DSC000123.JPG) as the posting name. This creates two places to comment on the photo (Flickr and the Blog) and those two sites aren’t talking to each other, so the owner would still have to manage two comment sources. Bleh. Consider how photos actually end up in blog posts: explicitly included and usually resized with text before, beside, and after the image, as laid out by the user. In the case where a user wanted to share a collection of photos in a blog post, they arrange them into sets or albums on photo sites and then embed a slideshow viewer in their post so people can see the photos in a prepared context, instead of in upload order.
Action Taken
The product manager was unconvinced by the reasoning above, and added his idea to an upcoming user experience research project to test the concept with users.
==== Results ==== <box 25% rounded right >Funny thing is, blog posts are summarized in the event stream! Making the explicit implicit is usually OK, where making the implicit explicit is not.</box> The users we asked had a very negative reaction to the proposal. It highlighted for them the implicit nature of the event stream and started asking for ways to turn it off completely, since it would interfere with their understanding of how a blog should function. So, after hearing the warning from the users, they decided not to cross the streams. Catastrophe avoided.
360 blogs events flickr kiss mocks person-context streams ui
