Mock Technical Product Manager Interview (Google PM): How Google Docs Works

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hey everyone I think we're now live on p.m. lesson comm I'm just gonna go ahead and check and verify that we're live but in the meantime and I just wanted to let you all know that this is a p.m. lesson live mock interview where we interview great PMS to do mock interview questions and this is meant as an educational tool for all of y'all to get better at PM interviews I'm super fortunate to be here today with Ethan who got the job at Google so he's gonna be a Google product manager and Ethan was in the PM lesson course as well and used it um Ethan you want to go ahead and introduce yourself while I get everything set up as well sure yeah hi everybody my name is Ethan like stupid said I'm an incoming p.m. at Google I just had my on-site and finished up the process here in these last few months so whole interview process Pam listen all very fresh in my head before interviewing at Google I was a product manager at a series B tech start up here called Cordoba so had some PM experience prior but did not have much experience with this type of interviewing and and kind of the things Steven delves into in the course so it was new for me as well and it was very experience helped me get the job cool and Wendy so - you're you're about to start soon right yeah I start on the 13th of May so I've got a couple weeks of fun employment here I'm actually starting to have a me as much interviews yeah helping helping for whoever I can but I'm actually gonna be in the Boulder Colorado office so I gotta move them from me but yep starting in two weeks Wow exciting awesome okay so now we can kind of go ahead and get started and just - for the folks listening in and watching you're more than welcome and encouraged to participate to interact to like to do all those kinds of things as we go through the interview and we'll start off with an interview and then I'll get some feedback at the end and then I think Ethan might also have some good stuff and tips and other stuff is chat about at the end and feel free to ask questions throughout cool so I'm gonna go ahead and get into it now and so the question that we want to answer today it's gonna be a technical question and so for those of you listening technical PM questions are not necessarily asked at all companies but they are a state Google specifically and they're in general something that I would recommend preparing at least somewhat for for most tech companies because if the overall rule is like if you're want to be a PM you're probably interested in technology so you should be able to at least converse and have a conversation about it and be able to have a deeper kind of conversation than a complete layperson what so for this particular topic though it's gonna be a technical PM interview question and the question that we're asking is how does Google Docs work and and so I will go ahead and write that up on the video but in the meantime you can feel free to take your time and we'll kind of work together on figuring out generally how it works and I'm not expecting you to redesign the architecture to figure out everything but just sort of let's talk together and figure out how some of the key components of what Google Docs does functions under the hood cool okay so how does Google Docs work um so I'm gonna start how does Google Docs work okay I'm gonna start by defining what we mean by work so I'm gonna say I'm gonna think of kind of some key pieces of Google Docs functionality and then see what we want to dive into for there so I just didn't give me take just a minute to write some thoughts down Colt take your time so if I think about kind of what sets Google Docs apart and what the core functionality of Google Docs would be the first thing that comes to mind is the real-time collaborative aspect I think you know there are a lot of text editors a lot of you know email writers a lot of places you can write plain text have it saved that's all great but when we talk about Google Docs and kind of as we know it I think the real-time collaboration is probably the biggest piece of functionality that jumps out to me cuz I reasonable I also think of some other areas we might want to explore so storage I never hit a limit on Google Docs I know Google has some it's either unlimited or some very high limit that they set per user kind of for their drive storage so they must have some some creative and kind of a good way of storing that otherwise they wouldn't be able to offer that to their users so I'm gonna start with those I'm gonna start with thinking about real-time collaboration storage maybe a third one I guess would be kind of access control and what can you clarify what you mean by access control yep absolutely so I generally mean permissions right not anyone if I'm creating a Google Doc not anyone from anywhere in the world can access it with a public URL right there are steps in place to make sure that either I'm working on it or people that I've approved are working on it so I can see actually how access control what I really mean by access control is permissions because it sounds from the words access control like I might mean who's writing what but that I'm actually going to talk about in the real time collaboration piece so I think I'm gonna I think those are kind of three big pools of functionality to start thinking about the one that I hope to dive into first is the real-time collaboration what do you think what though sounds good yeah I agree it sounds like it's the as you mentioned like one of the main features of the product basically so yeah let's start talking about how that functionality works great okay I don't have a whiteboard so I'm be using pen and paper chop it so everybody can see so what do we mean I guess first I want to establish the problem space like what what do we mean when I say Google Docs facilitates real-time collaboration so much are a little diagram here okay so what I generally mean if you can see my screen here is I've got two boxes drawn for clients and what I what I mean here when I say real-time collaboration is that these clients as we know you know in web development clients usually represent an end user right so these are essentially two people logged into Google Docs working on the same document at the same time and we all know from using Google Docs or if you don't this is definitely a main tenant of Google Docs that I can be working on a document and Steven can be working on a document and we can both be typing at the same time and and our updates don't kind of wipe each other out right we both get to persist our updates so that's kind of what I want to explore here how might that work well first what are the challenges we face in doing that and and how might people go about achieving cool that makes sense and thanks to the diagram it's it's visible so we're cool yeah okay so let's say client 1 and client 2 are both working on a document and the document just says dog ok ok both users see the word dog on their document and then let's say that client one a user goes and tries to insert an X between the O and the G and at the same time client two goes in and deletes the G so basically client 1 add in an X and this is what they expect to see but at the same time client two deleted the D so this is what they expect to see so let's say we weren't worrying about like people updating the same dock what what would happen here well client one would basically just submit a an API request like a post requests right and they would say here is my new value it's do X G so they would just post that they would get the response back and they would see do X G client two would post Oh G so client one would submit a post request they would change their value and get it back client two would submit a post request change their value you get it back okay but what if they're collaborating on the same document okay this is one of the problems I want us to discuss so this is an issue of concurrency concurrency I'm defining here as like when two processes are trying to act on the same thing right to actors so here it's two clients both working on the same document both trying to update the value what happens there right and so concurrency is one element that I'm going to talk about here and the other element is updates so steal again saves it's me and Steven here we both go update the documents how does the document deal with our concurrent updates and maintain one source of truth and then how does it push those updates back out to us those are I think the two problems I want to approach here how's that yeah yeah that sounds great okay so first let's talk about concurrency so and what I'm trying to think about here is is how might Google handle this problem so there are obviously various ways to handle both of these problems the concurrency and the updates one thing that comes to mind here for handling concurrency is the idea of we can even go back to what is the point of having a server here to navigate between these two clients well the point is to maintain one single source of truth right and so what we're really talking about concurrency and pushing out the updates are just problems that arise when you think about a server as being a single source of truth so how could we go about creating that concept of kind of a single source of truth on the server well in this let's go back to this post request so let's say again I'm trying to I'm client one I'm trying to insert that X that request might look something like insert an X at index 0 1 2 right so say my post request looks something like this I want to insert an X at index 2 okay so I submit that request Stephen is working alongside and he submits his delete request which is delete Adi at index 0 ok so now as these come in let's say the delete comes in first so these essentially will be processed in a queue by the server right first and first out first action server gets it's going to perform on its version of the document which is the true source of true so let's say it gets Stephens request first so in its queue it's got first at delete and then an insert well when it deletes the D then the source of truth on the server so the source of true that on the server was do G then it becomes Oh G ok so how does that change this request well we are no longer inserting the X at index 2 now we're going to insert it at index 1 right so basically my proposal in the way I think Google handles this is by this is a concept that I'm previously familiar with called operational transformation and basically what this means is the server maintains its own state its own state of the document as we talked about source and whenever it gets requests and those requests modify the document the server keeps track of how the document was modified and changes its to-do list accordingly so basically what it would do here is instead of saying insert X at 0 2 it would say ah ok I now know that I got rid of an index to the left so I need to insert X at index 1 and that is the concept called operational transformation and that's how I think Google goes about again the concept here is as long as we have this state on the server then we at least have kind of that one single source of truth that we're gonna get out to all the clients yeah go ahead yeah we're just gonna say I think the core idea here is server is maintaining its own state of the document and it's doing so using a cube and so I think it's a great explanation and and really great detail like love the diagram I'm curious to push it a little further like what happens when an operation can no longer be performed like purse perhaps it was a delete like to deletes right like I deleted do and you delete a D or you know there's a couple other cases where there may be cases so you're you're saying we're transforming the operation into a new operation but what happens when we can't do the operation at all that is a good point um so right look um we are both okay so you delete do and I delete D yeah okay give me a second to think through that one sure so first you delete do the server processes that request that is part of its state of truth so all that's left on the server is a G and then I go in and delete try to delete the D so I think my first inclination is if it turns out to be a no uh no operation after we process that second request we could just invalidate it so if you deleted do and I go to delete D but we see that D is no longer there so on deletes I think we could end up having a no up right I really delete something it's already gone inserts I think would be different because if I go to insert an ex there's no way that you went I guess theoretically you could have inserted an ex in the same place but we can't tell if you intended to add the same ex that I intended to add so I think the best way to do this would be if they're overlapping deletes invalidate the second one but if they if we both add an ex at the same time in the same place I think you have to process both and render both so that users can then determine what to see and actually the good thing about another thing I wanted to mention about this queueing system is it gives you almost like a history of sorts right so I could then see Stephen did this Ethan did this I could show that a history module somewhere I could use it for undos command Z right I could just kind of go back to the last operation so yeah that's my first inclination and validate deletes and do a kind of superset of any inserts cool I think it's a great response I'm curious are there any other edge cases um that we need to worry about and then taking that question a little even a little bit further like given that there are probably some weird cases or you know maybe I wanted to delete only the D and I'm really shocked when the do got deleted you know how might you communicate some of these errors or potential like conflicts to the user so the first part of that question is are there other edge cases the second part is how do we communicate some of these conflicts that may emerge from these edge cases to our users and when to be decide to do that you have great questions um ok so I do want to take a few seconds education take your time of course it's a great to to listeners watching in well while Ethan is thinking too it's always great to pause during interview questions it's always recommended and one of the biggest mistakes in addition to that if you guys are watching right now we love it if you could like us or subscribe or just hit that like button down below it really gives us a positive signal that these are really helpful videos and helps us think courage whether or not to make more of these and how to best spend our time so if you're enjoying watching this video we would really really appreciate it for you to like and comment below so um yeah I'm trying to think about what other so I think everything does boil down to either an insert or a delete whether your copy pasting you know bulk deleting all these various operations still break down to an insert or it's afford delete so yeah I'm actually are there any edge cases that you were thinking of I'm really not seeing it the honest side I didn't have one in my mind I just wanted to kind of probe you to think about it further but the main question that I actually wanted to ask was the follow-up where it's like let's say that we have a delete conflict or something or it's like you know something kind of goes weird where what I expected really really was changed how like when would you communicate that to the user what tools would you offer the user to navigate sort of that you talked a little bit about control-z but I'm just curious like what else might you think about in terms of designing that product with these technical constraints in nine okay great um so yeah I think um so we talked about the real-time collaborative aspect and that's what we're focused on here so really I'm just trying to come up with some cases that I might want to communicate to the user and see if I can kind of pull a bigger communication strategy out of that so I like the case you offered the kind of delete D and delete do so I'm gonna think through that from the perspective of each user um so Steven goes in deletes do I had just deleted D on my side or been attempting yes I had just deleted D and now what I get back is just the G so one of the ways I think Google didn't occur to me immediately but now of course how does Google handle this they show you where the other users are typing right where their cursor is so I in that case hopefully see Stephens cursor blinking right there I would see uh you know I think I'd still be a little confused but I might get a Stephen deleted the DMV oh but let's say I didn't how would I then understand you know this isn't a bug this is an issue somebody else actually deleted dno again I think a history of some sort like a change log an audit history that updates live using you know some kind of server-side technology which we can speak about in a little bit the cursor the live audit log and yeah the only other thing I can think of that you might want to communicate or method of communicating to the user you might want to use might be like a note so one thing you can always do when a user tries to do something and it fails is notify them write error messaging something like that but I don't think this is a good place for that for a couple reasons one because it's not an error right it is actually collaborative editing the the fact that we couldn't process the request is an error but from a UX perspective we don't want to tell the user something went wrong right because nothing went wrong so that could detract and confidence in the product and all these things that we don't want when nothing went wrong I guess we could say something like somebody already deleted what you're trying to delete but again you know I don't think I think if we do the kind of the cursor plus the audit log correctly um I don't think you want to distract the user is primarily there to write content so I don't think you want to distract them too much you don't have things pop up all over the screen that you want to allow them to write I think if we do a good enough job with those other two features we shouldn't need a warning notification cool love it yeah I think the cursor point was something I was a little bit trying to get out there with that was that sort of question which is just like yeah in an every product we also need to consider the technical issues but we also should consider the UI elements that can help operate around those type of constraints and hope like clarify communicate to the user so it's great you pick that up on your own one thing I would like to do here I just add you know whenever I'm juggling kind of a technical challenge it's oftentimes technical challenges seem a lot worse on the back end than they are to the user so this is definitely the sort of thing I'd love to experiment with see users with it hands on see if there actually is any friction there and if there is a problem to solve because if not we won't solve it yeah it's a good point like I mean what we're talking about is technically a very small case for like you and I are maybe editing at the same time and we happen to be editing the same word like it it definitely happens at the scale Google Docs is operating at but if we were starting Google Docs from scratch I'm not sure that we would worry about that feature so much in the very beginning you know or maybe we would find another way to operate around that title constraint that's like much easier every to have to worry about it cool well I do want to touch on so this is great I do want to touch on the other few topics you mentioned about storage and permissions and just maybe briefly go through them maybe we can spend about five to ten more minutes on on this part and then we can kind of do the feedback and wrap up and have the tips at the end son okay sounds great um okay so for storage I'm just gonna kind of hit some highlights of you know things I think Google Docs does and why I think it might go about doing that cool so first of all in terms of storage first thing I want to think about is like what do we have to store right almost an informal DB schema so we definitely have to store you know for each record let's say for each each document as a record we've got like a user ID all the unique identifiers we've got but the part I really want to get to is the content so I'm going to kind of skip the other columns how do we store the content so my first thought would be plain text right it's words at the end of the day that's what a user's writing words text that's what they care about but as soon as I jump into Google Docs and play with it I start to realize there's also a formatting right so and Google definitely preserves formatting right if you build something you leave the page you come back to the page it's still molded so they are persisting that beyond a memory they're persisting and in persistent storage somewhere so my thought would be probably to use markdown to store you know I think there there are many different ways you could retain knowledge of this formatting and these sort of metadata pieces about the text but I think markdown would be the best one you know just think about what Google offers bolding italics underline in that those are generally covered by markdown so I think you could kind of have a column which is the text plus the markdown and then you can basically serve that column as a markdown document in the browser to the user another thing I want to stay with respect to storage is you know I I do think this this data I'm not going to go so far as to take a stance on if we should use a normalized or DeMuth normalized database I do think this data is relatively denormalized there aren't and what I mean when I say that there aren't a bunch of joins and linking tables we're gonna have to do to get kind of the theological data that we want all together so I think we could go with kind of document based storage which tends to be more performant at scale fetch that data more quickly etc I I think the only other thing maybe we'd want to store some sort of file structure so we remember folders files that sort of thing but yeah a little essentially be marked down with some sort of file file path metadata quote and yeah keep going if you wanted to keep it more that that was kind of is there anything else you want me to touch on storage no I think it's good I I think what I'll give you feedback at the end about that one I thought it was great a short analysis given like we're trying to be a little brief so feel great yeah cool and then the last one access control and permissions um I'll kind of talk about how it was gonna approach this one in the interview at the end as well but I think what you're trying to do here is essentially another column in that database is thing like what users have access to this right so I invite Steven when I invite Steven we go record his ID in a column of the database that says yes this user can access this document and maybe you even have another column for permission level view suggest edit but yeah you know again I think that kind of goes to storage we don't need to create some huge users table that we link to you know I think we can do this through 30 normalized data set just putting in another column cool all right I I don't have any further questions for you about that question so I'd love to kick it to feedback so we can fit in but also your general tips at the end - I overall but this is like a phenomenal answer and you clearly know your stuff so really really great job shows how you got that Google piano you so overall like really great congratulations on on this interview and everything and I wanted to comment on some of the things that I thought you did really well and in throughout that it will also comment on opportunities and improvements as well and for those listening in and watching this is a good time for you to comment ask further questions we'll do a little bit of Q&A too so feel free to chime in there and we'd love to kind of hear from you as well so the diagram was amazing so that was a really really great visual way to explain what was in your mind and one huge error for a lot of people is that they don't use the whiteboard and this clearly begged him for the whiteboard too so I'm really glad that like despite this video chat stuff seems like it held up the paper too so and I think that that just made your answers so much more clear and crisp and one thing that I liked about using that example is that you made it very personable so you were just like you and me like we're the two people and we're using a word dog right so you're not talking in the abstract you're using concrete clear examples with visual cues to identify and communicate to the interviewer what's in your brain because part of the whole problem is communicating what's up in here to the interviewer and the fact that you paused was really great I love that you even started off the whole interviewed by defining what work me so like we're kind of starting off the definitions like how does Google Docs work or like how does this whole thing function is that what we're trying to answer and kind of check me with me yeah I think you could have asked me more follow-up questions about that too so you know you could have instead of assuming you could have even taken the time to be like oh so what do you mean by that like what aspects of Google Docs are important and any other you did ask that to me at one point but just I always really encourage like asking as many questions the upfront as possible yeah I love that you handle the follow-up questions really well and you really did a good job of kind of thinking through the user perspective I remember there was one point where you weren't sure how to answer something and you did a really really good tactic that I encourage to all you listening to do as well which is like okay let me think so if I'm sitting here and I type in do G what and I get this back what you're kind of walking through your thought process with the interviewer that is like super super good and super skilled and so that sort of explaining your brain to the interviewer and really thinking from a user perspective is a really great way to think is just a p.m. in general I another couple comments I had was that I loved that you talked about the UI aspect of it I think we could have brought that in a little bit earlier so I know I prompted you for it but you know it's interesting because p.m. technical questions are never truly just technical like what they're really assessing is how can you operate understand and deal with technical constraints in a way that can relate to the product overall so adding a cursor is like a really simple thing that adds a lot of safety to the user in terms of knowing what's going on there's version history there's error messages which you mentioned also you eventually mentioned a lot of these things but these little cues really do matter and it's really cool to talk about them NPM interviews because they're sort of inspired by the technical feasibility issue that we might have with version control also thought that you you yeah I think bringing up edge cases on your own or it also just makes it really strong too so that's just further on that point and then on the last section just the last piece of feedback I thought you did an excellent job of kind of discussing trade-offs and I loved especially with the markdown you started like the naive approaches to Newton plain text and then what do we like okay so you know does plain text work okay no we need these things so then what do we add to it right and I thought that was just a super excellent way to kind of walk the interviewer along with you and I think that was something you're really really good at so overall like super positive feedback this is a stellar interview so yeah I just wanted to congratulate you and do you have any reactions or thoughts sending that feedback yeah I do um so one thing um I've actually noticed about myself in these interviews interestingly like if I get a question and I feel like I know it or I feel like I know how I want to go about approaching it I almost have more difficulty structuring my answer because you want to get to like what you know so quickly right so I think that's one of the reasons I think I skipped over some of the clarifying questions here I almost move too quickly when I know what I want to go from the start so that's one thing I'd say to the viewers is you know if you and this is one thing I want to talk about a little later you know yeah your question and you feel like you know where you want to go you've got an advantage right like you're kind of winning already at the interview so you kind of want to hold on to that and make sure you paste it right and don't jump into something that maybe they didn't either want to hear about it's a really good tip yeah so that's my first my first kind of reaction and then my second reaction I was another thing I wanted to bring up like I almost when I defined the kind of things that I thought we might want to talk about real-time collaboration storage access control I did so kind of knowing that I was gonna be stronger in the first two than the third so you know that that's that was kind of you know I intentionally used most of the time talking about real-time collab because I think you know this is one of and then I'll just kind of dive straight into my my tips through them and maybe we can maybe we can cue it off just so that we can separate the video but then and so now you know I just want to let everyone know that we're now going to kind of transition a bit into you know we just did this some mock interview with Ethan where he answered how Google Docs works and now we're really excited to have Ethan talk and share a little bit about his tips for interview
Info
Channel: Exponent
Views: 92,806
Rating: 4.9173555 out of 5
Keywords: product management, product manager, product, what is product management, product management jobs, product management training, project management, product marketing, how to become a product manager, tech product management, learn product management, product management (job title), mobile app product management, product management explained, product management in startups, product management interview, pm interview, pm jobs, product manager coaching, product management coach
Id: 3MsWDQJmYOE
Channel Id: undefined
Length: 32min 59sec (1979 seconds)
Published: Fri Apr 26 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.