~~NOTOC~~ ====== Lesson: Don't Cross The Streams ====== //"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."// ==== Background ==== 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. 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: Person ==== When simplifying systems, remember the complete version of K.I.S.S.:\\ \\ //"Keep It as Simple as possible, //but no simpler//, Stupid."// 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.//].” //In short, Blog posts are explicitly shared and event streams are implicitly shared.// //Consider linking to the story about how LiveJournal users react when they find out their public blog is acutally public, indexed by Google, God, and everyone.// 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 slide-show 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 ==== 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.// 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. {{tag>360 blogs events flickr kiss mocks person-context streams ui}}