Product Sashimi

*I wrote this post for the [Communitech blog](http://www.communitech.ca/category/blogs/). It’s cross-posted [here](http://www.communitech.ca/how-product-sashimi-gives-startups-some-wasabi/).*

Say you’re about to start designing a software product. You’ve got a few ideas and a blank whiteboard. You’ve gathered together people who understand the problem you’re trying to solve and the people who will value the solution.

You *could* brainstorm a bunch of features and start building them, but how do you know which features will actually be used and which will end up buried in some menu, untouched?

To avoid that, you need to get your product into the hands of users in order to get feedback (and revenue) as soon as possible. “Product Sashimi” is the term coined by [JB Rainsberger](http://jbrains.ca) for a set of techniques that help you thinly slice your product to deliver the simplest thing that could possibly work. Delivering a simple product early means you can find out directly from your users what additional features they would find valuable so you don’t have to build the ones they won’t.


Continue reading Product Sashimi

Tenth Anniversary

Ten years ago today, I posted [my first blog post](http://flyingsquirrel.ca/squirrel/archive.php?article=1).

Okay, technically, that was on my old, hand-coded blog, and I’m lame even after almost 4 years, I haven’t imported my old blog into this one, but woo! 10 years!

Equally technically, I was posting something like blog posts on my old homepage, starting around 1998 or so. They weren’t archived or anything, I’d just insert a couple paragraphs between <hr> tags on whatever I happened to feel like writing about at the time, replacing whatever was there before. No, not a blog, but my blog was an extension of that.

My ideas about blogging have changed quite a bit. I originally wanted a place I could write anonymously about whatever I felt like. Then I decided that blogging anonymously was horribly pretentious and nobody actually cared. Now I’ve got [Twitter](http://twitter.com/flying_squirrel) satiating most of what used to drive me to blog. That’s my current excuse for why I don’t hang out here quite as much, anyway.

Ten years. That’s a long time.

[Neil Gaiman beat me by a week](http://journal.neilgaiman.com/2011/02/now-we-are-ten.html).

CS444

When I started at my current employer (about 18 months ago), I got it in my head I should take advantage of their training budget and proximity to uWaterloo (like the kids are calling it now) and take a course.

For one reason or another (sanity, mostly; also scheduling), I wasn’t able to take [the compilers course](http://www.student.cs.uwaterloo.ca/~cs444/) in my 4th year. Compilers is one of the big project courses. In terms of workload, it’s well behind [real time](http://www.student.cs.uwaterloo.ca/~cs452/) (the train course) and [graphics](http://www.student.cs.uwaterloo.ca/~cs488/), but it’s still nothing to sneeze at.

When I was an undergrad, I think I would have probably preferred to take graphics. But as you get older, you mature. Or something. Yeah, graphics is cool and fun, but I think it would be a harder sell to get my employer to pay for it. Particularly when your employer has its own [proprietary language](http://99-bottles-of-beer.net/language-oscript-526.html) to maintain.

> For my part, I want to encourage people to make their own languages, because doing it makes you a world-class programmer. Seriously. Not just a better programmer, but a best programmer. I’ve said it before, and I’m sticking with it: having a deep understanding of compilers is what separates the wheat from the chaff. I say that without having the slightest frigging clue what “chaff” is, but let’s assume it’s some sort of inferior wheat substitute, possibly made from tofu. –Steve Yegge, [The Next Big Language](http://steve-yegge.blogspot.com/2007/02/next-big-language.html).

I don’t know if I’ll actually make my own language, or move to the compiler team at work, but I do know that understanding this stuff is really, really useful and fundamental to software development. There’s a lot of computer science-y stuff that’s not especially useful, but compilers are everywhere.

2010 in review

2010! All in all, I think it was a good year. Personally, I mean. I have some issues with it geopolitically, but I don’t think we need to go into that. And, for a change, it went by without any significant job turmoil. That’s something!

* Back in January, I got myself dragged into the long-running Northdale neighbourhood debate in the city of Waterloo. Not something I enjoyed greatly, but I felt I had to dip my oar in. I even [presented to city council](http://www.flyingsquirrel.ca/index.php/2010/01/13/my-delegation-to-waterloo-city-council/) about it.
* I was [interviewed](http://www.flyingsquirrel.ca/index.php/2010/03/25/local-transportation-stuff-and-the-100/) by the (now sadly podfaded) The 100 Podcast about transportation issues and the LRT. That’s kind of cool.
* I made a failed attempt at live coding for [Kwartzlab’s latest 5+5 event](http://kwartzlab.ca/blog/dw/2010-07-05/55-v2-rocked-out). Fun, though. And I’m glad I did it.
* [[Kwartzlab]] continues to be a great thing in our community, that I’m happy to be a part of.
* I ran an [[Ubuntu]] Global Jam, two release parties and helped host a LAN party with Eric. I started holding [Ubuntu Hours](http://wiki.ubuntu.com/Hour) in Kitchener-Waterloo and IRC meetings for Ubuntu Canada online. In the end, [txwikinger](http://blog.txwikinger.me.uk/) and I became the new “contacts” for the [Ubuntu Canada Local Community](http://ubuntu-ca.org) organization.
* I joined the office dodgeball team, leading to a number of minor injuries.
* I went to [Bill](http://thesidekick.ca) and Tara’s wedding. Eric and Alex get married tonight.
* I co-presented on unit testing with [Alexei](http://twitter.com/az1) at the local [agile software development group](https://waterlooagilelean.wordpress.com/). More live coding!
* Speaking of the Agile P2P, a number of us got together to start a technical [book club](http://agileclub.wikispaces.com/), starting with [Uncle Bob](http://www.objectmentor.com/omTeam/martin_r.html)’s [Clean Code](http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882). A number of agile development luminaries, including Uncle Bob, have joined our conversations.
* My blogging output flagged a bit, with everything else going on. I took out some of my local politics frustrations on the [[Waterloo-Wellington Bloggers]] Association, but that site is now defunct, merging with [Wonderful Waterloo](http://wonderfulwaterloo.com). That site has asked me to contribute as a blogger, but I haven’t pulled together a post yet.
* The new season of Doctor Who was awesome! I thought so, anyway. Also, I now have a ridiculous amount of Doctor Who toys.
* Ellen is still awesome.
* I became an uncle. My sister Erin’s son Grady was born in October.

The Marshmallow Test

As I was leaving for work yesterday, there was [an interview with a guy on The Current](http://www.cbc.ca/thecurrent/episode/2010/12/15/death-of-anticipation/) on CBC yesterday morning about the Marshmallow Test.

Basic premise is you sit a kid down in a room with a marshmallow and tell them that they can eat the marshmallow whenever they want. However, the experimenter tells them, if they can wait 15 minutes until the experimenter comes back, the kid gets another marshmallow. [[wiki:Deferred gratification]].

The [[wiki:Stanford marshmallow experiment|original Marshmallow experiment]] followed its subjects for twenty years. It found that the kids who were able to defer gratification were more likely to do significantly better in school, have more friends and were generally considered more competent. Whether or not you can hold off stuffing a marshmallow in your face for 15 minutes when you’re 4 years old is a strong predictor of success later in life.

Anna Maria Tremonti (the host of The Current) wanted to focus on what this means for kids today (*Kids today!*) with their twitters and facebooks and ended up glossing over the most significant thing in the interview.

The marshmallow test is predictive, but it’s not fatalistic. Impulse control can be learned. It can be taught.

More than that, we have this image of self-discipline being stiff-upper-lippedness. Stoic resistance to pleasure. But the kids in the marshmallow test who were successful were the ones who were able to “strategically allocate their attention.” They were able to use distractions–singing songs, running around the room, study the ceiling tiles–rather than agonize over not eating the marshmallow.