Ryan Singer's Product Development Tools at Mind the Product San Francisco

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] [Applause] haha what a place it looks even better from here Wow well this has been an amazing day I was really happy to get the invitation from Martin and I saw that Kathy Sierra was on the bill and I've been a close fan since I remember I think 2003 2004 was a period when we were intensely passing around every blog post that she wrote at 37signals and saying this is this is the website with all the answers she really gets it you know so it's been great to share the stage today and I'm really happy to be here so what I want to share with you today are some very specific tools that I've had to come up with well basically to help me stay sane because as you know in the product management role it's not just like you know get the to Do's and then design the the design you were supposed to do and then come back to it the next day you know we're actually responsible for making up those two do's and figuring out what everybody should do so it can get a little hairy yeah and I've been working on a lot of projects over the years been at 37signals now base camp for 12 years and also done a lot of side projects and over the years dealing with the same stresses again and again I've come up with a few very specific tools that I want to share with you and I hope that you can use them when you start your next project or even if you return to whatever you're working on right now and in order to sort of put these tools into context for you I want to tell you about a pattern I've noticed on every product I've worked on there's always this phase in the beginning there's a sort of honeymoon light bulbs and aha and a wonderful beginning to each product it's this kind of aha period where we have a kind of sum product concept in our mind and we have a business model we've got some definition of why this is going to be valuable we know we have the technical ability to build it we've got everything together and we've got this like product idea you know like for us at Basecamp in 2003 2004 it was this simple notion hey we're working with clients and it's a little hard to manage the client work what if we had something like a password-protected blog and we would just give the password to the client and all everybody on the team could go to it and then when we had some work for the client project we'd post it there and they would comment and then everybody would know what was happening and it would all be on the record and we'd package each of these little password-protected blogs up and call it a project and we'd call it Basecamp ah right and we thought oh this is gonna be great right and then you draw a few sketches you know like this will connect to that and you're like done this is gonna be easy right and because the concept is so clear and then you know and III still haven't learned since then I still have the same illusion every time I start a new project you know the idea is so crystal clear you know and then what happens is eventually somewhere along the line a day later a week later a month later I I'm in this situation like this where I'm kind of lying awake at night and I'm thinking you know but what did we test the mobile version of that template for the new message screen or you know that bug that just came up today are we gonna remember that because that's more important than the bug that I heard about yesterday and and where am I gonna put it in right we know how to build stuff we've got good design people we've got a great business idea but it doesn't matter even if we've got all that stuff figured out there's still this like it just gets daunting yeah you guys know the feeling yeah okay so every time I kind of come to this point in a project or a product I'm working on I end up using the same tool and I had used it so many years in a row that I decided I should tell you about it okay and it's a very simple thing it's just it's just a map and it's a map of the different capabilities that need to be present and I'm actually going to give you a sly nerdy way to define what this map is and then after we have a good sense of what it is and how I use it I'm gonna walk you through very specifically the steps you go through to get to it okay and basically this map is like when I close my eyes this is how I see the product okay and this is a little example I'm gonna walk you through this is a project I'm working on for a non-profit this nonprofit has branches throughout North America and each of these branches runs more or less autonomously and they all need some way that they can put some payment form online when they have a new project that comes up that they need to gather some money for yeah from in a fundraising way and so different projects come up and they also would like to put on some kind of membership forms so people can become members and pay with their credit cards and we looked at all kinds of nonprofit donation fundraising management enterprise things and they are all monolithic and didn't fit our needs and were too complicated and just weren't right so I decided of course we'll just build it ourselves and so started working on that and there's a few different kind of key areas to this and the the the way that this product is mapped out I'm gonna use to sort of a little nerdy definition here what I want to do is I want to identify the capabilities that the product needs to have that are orthogonal to each other it's a nerd word orthogonal but we actually it's a word that we use at Basecamp when we're talking about work all the time it's like one of our main vocabulary words actually and you know orthogonal means that you have two things and they can move independent of each other yeah versus something that's coupled where they have to change or happen together so I want to find things that are orthogonal because in practical terms as the one who's managing the work orthogonal means when I'm working on this I don't have to think about that yeah and when I'm working on this I don't have to think about that and when this is done I can completely wipe it out of my mind because these other things are unrelated yeah so that's orthogonal capabilities what I'm doing here is I want to focus on the things that are part of the domain right the domain it's the actual situation that comes up in life that the product is meant to address yeah and the reason I mentioned that is because you often see people mapping things out and they say well we'll do all the email templates and we'll do all the mobile templates and we'll do the database tables right but those are implementation things yeah and what we want to figure out is what are the individual capabilities that we learned from focusing on the domain that I can work on orthogonal II okay I'm telling you it sounds maybe it sounds a little theoretical or technical at the moment but this is the sanity okay and here's why because if I'm able to identify something that's separate from something else and work on it I get to this wonderful state called done there's a whole thing that I got to think say I don't have to think about that anymore right it's wonderful yeah so for example you know in this case we have these two areas on the top there's this forms area so this means different projects are arising at different times so we need to create new donation forms that say if you give money for this project it will go in this bucket labeled money for that project right and everything will happen as it should and these forms and projects for fundraising change over time but regardless of what you are a member of or what you're paying for the situation still comes up that you remember and you need to cancel your membership update your credit card change the amount this kind of thing right and whether you're changing your watch what project you're changing your membership for is a separate matter from the ability to create projects yeah so we identify those separate them out and I've got this area here called members service and so I can work on that independently finish it up when it's done meaning design is done programming is done testing is done any kind of operation support I need if I have to tell support people about how to what to do in the future launches everything related to this one capability done yeah then I can keep going and I can keep doing each of these different capabilities and checking them off one after the other because they're orthogonal okay this is the road to sanity it really is and here's how it plays out in detail because okay that's a little high level how does it actually work out let's say I'm working on this member self-service capability okay if this were just a set of five things that I needed to do to check it off then I could just do those things but of course we're talking about product development and in software it's always complicated there's a lot of things there's a lot of edge cases error states everything right so I'm still gonna break this out a little bit further I'm gonna say within this member self-service territory on my map I was a few capabilities that I could say are still orthogonal to each other within that yeah so instead of like the state lines these are sort of the county boundaries or something like that and you know I need the raw ability to do a self-service lookup how can some member get to their membership state in order to operate on it and then maybe they need to change an account their change their amount and that's one flow maybe they need to change the credit card that's another flow or cancel that's another and I can work on these independently and so what I'm going to do after identifying these things is I'm going to represent them as to-do lists and these to-do lists are full stack to-do lists okay they include every single role that there is so that done means done and we started doing this I don't know maybe four or five years ago at when we were we had a particularly thorny project at then we were called 37signals and we started this technique and man it has made things easier because what happens normally is somebody starts off a project and you've got a designer there you've got a programmer there and then you say well here's the design to do's and here's the programming to do's and then the designer does the design to do's the programmer does the programmer to do's but you get to a point where for this whole project half the design to do is are done in half the programming to do this are done where are you on the project like I don't know we just a bunch of stuff right or maybe we do agile sprints or something like that we work 2-3 weeks at a time but what were we working towards do we have some piece of the thing that we can actually say is done yeah what we do what I actually hand wrote these just because I wanted it to be kind of tool agnostic so if you use Basecamp to do it that's what we do if you use a sauna a fuse on the outliner it doesn't matter whatever your task tracking system is we've got design programming all of that together in one bundle and that means that anytime I'm thinking about where we at on the ability of people to change the amount of their membership right every time for some reason that comes up as a support issue or the customer asks about it or there's a question about it when we're talking about design ideas I can say this is exactly where we're at on that one thing and here's how close we are to done okay so that's the two do's and this kind of gets me from here to here yeah I have this this map of all the different areas and all the different things that I need to be aware of and I know right which things are done which things are not done and if something's not done I can even peek and look into it and say 10% done right so it is a wonderful state of mind and that's why I'm trying to share this with you so what I want to do next is talk through a couple examples of specific techniques you can use to kind of arrive at this in the project that you're doing and let's see so there's one technique that comes up very often and it's like this when the moment there's always this moment that first strikes when I realize it's too much you know like we were talking about in the beginning yeah there's that moment when it's like it's it's just gotten it's gotten today's the day it's too big I have to do something yeah and the the next step then is I just I do a simple brain dump but I do it with this is very important we need to bring some domain expertise into the process okay so this means you all know what a domain expert is right yeah so this is the person who who knows about the business that your software is for the problem your software is for whatever it is there knows about the real-life situation that it's meant to address yeah and that can be a person who's designated in the team that you're working on or you know sometimes it's just yourself because you have learned enough about the problem and you can put that hat on and say now I'm being domain expert okay and from that point of view I'm just gonna think through I'm gonna dump out all of the different capabilities that need to be there from the point of view of the domain yeah so what are all the things the system has to do I've got to be able to create these forms I've got to be able to link the forms to funds meaning the money for the form goes into a bucket with the right label on it yeah I need to be able to notify expired members or members need to change their amounts or the accountant has to reconcile payments with the deposits that come in from stripe or whatever it is that I come up with and you'll notice that these are kind of haphazard I mean they're not structured it's not like member and then all the things related in a membership it's just like everything we can think of but from the standpoint of capabilities needed according to our domain knowledge yeah then when we have this whole list there then even though it's a mess I mean this is like a long list of random stuff yeah and it's certainly not all-inclusive because there's edge cases error cases conditions blah blah blah right tons of things we haven't even thought of but I've got this feeling now that I've got my hands around what the system needs to do in total right and there's some facts in front of us and we can talk about which things we think need to be there and whether we debate about if it's really necessary or not we can just include it there yeah and then the next step after I've got this dumped out is to do some clustering and here's where we come back to this orthogonality thing again this is a bit of an art but I think it is one of the most important arts that we're responsible to master as product managers it's learning to identify which things are coupled together versus which things and change independently of each other yeah this is a fundamental skill that is extremely valuable to develop so I'm gonna go through this list and I'm just gonna group them up and there's different techniques for doing that but they're you know the basic point is which of these things share some state happen at the same time have you know intertangled requirements with each other or whatever it is yeah and I'm gonna come up with a few groups that make sense to me and make sense to either my domain hat-wearing self or the domain expert who sitting next to me yeah and so we've got some groups so for example the second group here creating the forms you know defining the funds we need publicly facing forms all these things these make sense as a bundle and I'm just gonna give these names it doesn't matter what the names are they're just for my own map but I'm gonna say here's one thing here's another thing here's another thing and now I've gone from this big list that I can't really handle down to a small list that I can hold in my mind and I'm gonna go a step further and represent it as a map because it helps me just to draw out this territory line and think this outer line represents everything that I need to know and then inside of that here the boundaries that I'm going to work inside of yeah so that's kind of a main technique for arriving at the map and then there's one other specific technique that I want to share which is very often when we're getting together in a meeting or if we are trying to talk through something like this it's easy that we get to this place where we are just sort of lost in the clouds you know it's like have you ever been in that meeting where you spend at 45 minutes debating what the right word is for something right or you come in and you've got a really solid product idea and then the designer is just running with it saying well you know we'll do a modal pop-up and that'll have a carousel and the carousel will have an animation and the animation will trigger a push notification and you know and it's gonna be awesome right and then the developer saying yeah and then the forms will make an abstract form interface to make any form ever so that we never have to make a new form and and you're like and and and you need to pull it back you know and then how do you pull it back it's actually really hard to do so are two things whenever we get to this cloudy place that we can focus on that pin to bring us back down to reality and those two things are first is time okay so what is happening at 2:00 p.m. on a Tuesday why is somebody opening this thing up what are they trying to do okay and I know that there are user stories and journey maps and all kinds of UX tools but you're these this is going too far into one direction it's enough that we just focus on time in the domain processes people are going through specific moments where they're trying to do things but then we need something else in addition to time we want to focus in on affordances this is a word you should know from the user interface world right the capability it's like the teapot that pours water has the capability to pour water the affordance is the handle yeah and the wonderful thing about it a handle or an affordance is that it's extremely concrete yeah so if we talk about affordances and software it's the buttons it's the labels it's the fields it's the navigation links it's all those things right and if we get ourselves down to time and to affordances we come to a place where we're so concrete about what we are talking about because we are embedded in a situation talking about clicking on a specific link with a motivation to achieve a specific outcome right is we talk about so much theory but if we can just bring these two things together in a session together it's very helpful and I want to demonstrate to you a technique I use for doing that so this is a little shorthand for writing out flows and the technique basically is I'm gonna draw the place that we're at I'm gonna draw a bar underneath and I'm gonna list the places that things that we can do and then we're gonna connect it out and talk it through so here's a short example okay let's say we're working on a product and this is a marketplace for cake sellers and these cake sellers make cakes for special events and you're going to browse cakes and find the cake for your event and then buy it and this marketplace is going to connect you with the person who makes that cake okay and we are having a design session here and we're talking through what does the product need to be what we need to include what are the capabilities all this stuff and instead of having this abstract conversation we're just gonna get down to business and we're gonna say well there's some place where I'm going to browse cakes okay and on that browse place I'm gonna draw a line underneath this and this symbolizes that everything below here are things on the page of interest that I can interact with okay and okay we could talk about all the different things on the brow screen we could sketch a quick wireframe if we wanted to but let's say there's two things of interest in our conversation right now there's a way to filter the cakes so I can say birthday cakes versus graduation cakes or whatever it is and let's say there's also a way I can somehow click click on a cake for detail if that's a cake that I want to order yeah and I'm just gonna draw some arrows to connect these so I'm gonna say if I choose to filter from the brow screen that's going to take me to some kind of a view or state called the filter screen or pop-up or whatever it actually doesn't really matter what it is and from there we're gonna have some kind of a form where we'll have fields to do that and let's say that's a separate conversation we're just gonna interest right now is the fact that we can submit that filter and then when we submit that that's going to take us back to the Browse action and we're gonna see different cakes right okay and then from the Browse action now I want to click on a cake that is appealing to me so I'm gonna click on the cake and then from there I'm looking at a cake detail page yeah so here's cake detail and underneath the cake detail page we've got a few things that need to be there we need to have let's say photos of the design that we're ordering and let's say there's going to be a price and maybe I need some kind of a commitment that it can be delivered by because this is going to be for an event delivered not be buy and I'm gonna have a Buy button here and already we get to have a very interesting conversation what happens when I hit the Buy button is it Add to Cart is it create an account like what's going to happen there and because we're talking about time and affordances we're going to come down to the exact point what the heck are we gonna do right what is the system so let's say we start talking it through and we've got our domain expert present the business people or whoever it is and we realize that this is about events and when you get an event you're not buying five different birthday cakes for five different years or something like that we're gonna optimize we're interested in the one cake purchase okay we can say all right that's the product concept one cake good so buy it's gonna take me straight to something called a checkout view and on checkout I'm gonna have let's say we'll just basically say those beasts from some credit-card fields and below that we're gonna have a buy now that really buys it okay and then we can talk through what happens when they buy the cake they buy the cake and then the cake maker needs to know about the order so there's gonna be some sort of let's say mmm new order email that goes out to the cake maker okay and that email is going to have we could talk through it I mean we're with a half-hour talk I'm kind of cutting out some details right but let's just say there's a new order and let's say there's an action to accept that order and then from accepting that order that's going to take us to some sort of a screen that the cake maker can view which is like an orders index or list of orders or something like that yeah and then from there we're gonna have a variety of things that they can do which is say that the order is made or refund the order or whatever it is that they need to do yeah and from this view now I can look at all the things that we've sketched out we can make trade-offs we can debate different sequences and different requirements and capabilities and all of that and I can still draw some boundaries so here again I can just make some make a dotted line here and say you know these things browsing filtering looking at the detail for a specific cake this is all just this is all just browsing yeah this is one kind of high-level capability that we need to have and over here this checkout is actually kind of a separate concern you know we could say that that's actually orthogonal to browsing yeah that's like how we receive the payment whether we ask them to create an account or not all the stuff that happens once they want it so let's say that lets say that checkout is is another area there yeah and then looking down at the bottom this kind of looks like fulfillment yeah there's a whole area related to fulfillment so let's just make a note of that and say down here we're going to do order fulfillment fill and yeah and now I've kind of gone through a different process that is a bit more concrete where we can have more conversations about what's really needed and what's not and notice we didn't have to talk about pop-ups we didn't have to talk about modal we didn't have to talk about web versus mobile we didn't have to talk about any of those things our database tables we're talking about what needs to happen from a standpoint of capability and now we've got a few capabilities that are orthogonal to each other so I can say okay concerning this product that I'm working on we've going to have a whole section of work that we're gonna call browse that we're gonna attack and that's one area we're gonna have another area that we're gonna call checkout and we're gonna focus on that right and then after that we're gonna have another area called fulfillment notice it's not about I'm not pulling out I'm the outliner or not what is it called OmniGraffle or you know Adobe Illustrator or whatever to make the image because it's not about that it's about finding the boundaries and the names of things and just getting the getting the idea right so now I've got a few areas that I could have teams working on independently that I could track independently I could start breaking out two dues for these things and I'm gonna be able to sleep at night when I work at this you know so that is what I wanted to share with you today and I've got a little bit of a we've got we've got three minutes so okay we'll just throw in one extra little detail which is that you may find once in a while that I it's so easy for people to imagine what is being drawn out in a flow diagram like this so you know sometimes if you have a bunch of designers together and you say yeah we'll have a pulldown for that and a radio button for that everybody can picture it but sometimes that's not the case so you could also feel free to to do a slightly more kind of wireframe II version of this which is where I'm gonna say you know we're gonna have a Browse page and from this browse page I'm gonna have let's say a card for every cake yeah and then we're gonna have some filter UI on the top here and there's going to be an affordance there for filtering we tap that affordance we're gonna get taken to the filter view and maybe it's unclear what we really meant by filters so let's just like sketch that out and say okay is it it gonna be that we're choosing an event type is it that we're choosing a kind of a style or what is it that we're gonna work with and then we can actually start to think through the affordances again by thinking of what needs to be on this screen the affordances we start to figure out what's the data models gonna be what the requirements are gonna be what kind of information we're gonna gather from the cake maker in order to make them filter a bowl right all those things so we could figure out that how we're gonna do that and that takes us back and maybe we've got from the cake from the individual cake thumbnail that's going to take us to the cake detail page and so on yeah so that's another way you can do it but if I want I didn't want to get into sketching because we get into wireframe land and wireframe land gets we often lose the focus right on time and affordances so to wrap up these are the things that I talked about we talked about sanity that's the goal we're capable of building everything we have good people and we're skilled but how do we keep it all straight and sleep well at night the main tool I'm using to do that is this map and it's orthogonal capabilities from the domain then in order to actually track this in order to execute on it we're making full-stack to-do lists so every to-do list is integrating design programming testing QA operations support whatever needs to be there so that the thing is done right and we talked about done what I want thing done is yeah just having a whole area that every time the customer says hey how about people changing their memberships you say huh I'm not even thinking about it it's already done yeah we're focused on two other things it's a wonderful thing and then specific techniques how to do it doing a brain dump with a domain expert getting all the capabilities just list it out clustering them based on whether or not they are interrelated or if they're independent from each other and then working with time and affordance to ground things and make trade-offs and get really concrete and get everybody onto the same page when we are having those unpleasant wandering meetings yeah so I hope these tools are useful for you if the talk was interesting and you feel like you want to reflect on it a bit the slides are online at felt presence comm slash MTP and I'll be around for the rest of the day I would love to hear if this like means anything to you if you think that you could use it if it's interesting to you it's the first time I've talked about it so let's talk later especially over a beer and I'd love to hear from you and and see what you think so thank you all very much [Applause] [Music]
Info
Channel: Mind the Product
Views: 9,070
Rating: undefined out of 5
Keywords:
Id: EwU05QDezLU
Channel Id: undefined
Length: 30min 18sec (1818 seconds)
Published: Thu May 31 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.