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