The Projects That Got Me Into Google (tips for software engineering projects)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] what's up Irby how's it goin so in this video we're gonna do something really fun which is that we are gonna take a very close look at the software engine and projects that I had on my resume and under my belt when I applied to Google about two and a half years ago and when I got hired at Google and we're gonna try to see what things I did in those projects that were really good what things I did in them that weren't too great and hopefully the video will sort of give you some ideas for your own software engineering projects maybe give you a few pointers about what things to try to accentuate what things to avoid and so on and so forth I do have to say that the title of the video is a little bit hyperbolic at the end of the day these projects did not actually get me into Google there's far more that goes into getting into Google than just you know having a few projects on your resume but they are a contributing factor however at the end of the day the coding interviews and the coding interview performance that you that you have is gonna be the main determining factor and whether or not you get into a company like Google so by the way if you're prepared for your coding interviews I have to plug my company I'll go expert I'll go expert do I encourage you to check it out would that said let's dive into the projects so the first project that we're gonna be looking at is the one that I'm most proud of and just my sort of favorite project overall it's this visualization tool for pathfinding algorithms I actually showed it very briefly in a video I made recently about you know my first line of code to getting hired at Google let's take a much closer look at this project so first of all I guess a little bit of background path finding algorithms are algorithms that help you find the shortest distance or the shortest route between two points so you can imagine that if you are on Google Maps looking for directions there's probably some sort of path finding algorithm happening in the background to give you the best route for point A to point B and back during my coding boot camp because I did this in the middle of the three months immersive part of the boot camp me and my friend over there got really into path finding algorithms and we said hey let's learn about Dijkstra's algorithm which is sort of famous path finding algorithm and we would see all these YouTube videos where there were animations for these path finding algorithms the animations were not amazing but they were cool and it was kind of interesting to visualize them and so we said hey maybe we can do something like much cooler much better we actually worked on this project sort of together like we each did an independent version of what you're about to see like he has his own thing but we were kind of doing it like in tandem but yeah it took us about like two or three weeks to do this and so let's dive into it so this is the home page of the project you've got this tutorial here that kind of tells you what the project is we're just gonna skip it for now and then you've got this grid and on the grid you have two nodes the starting node which is this little arrow here that you can move around and then you've got the target node or the destination node and then you can click around on the grid to add these walls and by the way I'll put the links to all of my projects in the comments so that you can kind of play around with them at your leisure if you want but so once you've positioned everything as you want it to be positioned you can pick your algorithm here in the top left corner so you see you've got Dijkstra's algorithm this famous path finding algorithm a-star search another famous one and a bunch of others and once you click it you can visualize it so here you visualize it you kind of see like the you see the algorithm in action you see how the algorithm works you see how it's finding the target node and finally once it finds the optimal path that will kind of show you you see in this kind of cool animation how or where the the optimal path is to get from the starting node to the final node and then the cool part is that you can kind of move the final node around to kind of see okay this is what the the optimal path would be if I you know moved the nodes or it's like if I add walls for instance like if I add walls here and then suddenly I move this around oh whoa the path no longer goes through here because there's a wall and then you can play around with this some more like you can kind of very visually see how a star works a star if you don't know is an algorithm where the algorithm knows where the target node is so it's much more skewed towards the target node that's why here you kind of see like if we visualize it again it's kind of like almost like like blasting at the wall because it knows that the target is right behind it whereas if you look at for instance again Dykstra's Dykstra that just goes around the starting node sort of like equally everywhere right because it doesn't know where the target node is it's just looking everywhere to find it but it will give you the guaranteed shortest path and then there's some of the other cool things that we did we we had this thing where you could add like another target so we have this other target that we can put in the middle so for instance we can put it like here and if we run let's say a star again we'll put just some walls here like this you can kind of see the starting node will first try to find the other target and then it'll try to go to the final target so this is kind of like what uber pool might be when you've got a driver that needs to pick up two passengers and it needs to know like what the optimal path to go from one to then the other would be so that's that kind of cool then another thing that we had was this bi-directional swarm algorithm where basically both nodes are trying to find themselves it looks really cool and again you can you can move it around and like you can kind of see it update in real time and everything another thing that we have here that's really cool is the ability to make mazes and patterns so for instance if we use this recursive division algorithm we can create a very sort of visual entangled maze of walls in front of us and with the animations and the CSS and all that it just looks pretty cool and then of course you can move the target node so for instance I don't know let's move it you know here you can then visualize an algorithm let's go with the gree best for search and it just looks very visual right as the algorithm goes through all the walls and then again the fact that you can move it here at the end and that it computes every time and everything in real time is very fun to play around with this sort of brings me to what makes this project good because overall I do think of this product is a very good one and I'm not trying to Pat myself on the back or to do like a weird flex or anything but I do think that compared to some of my other projects that aren't as good this one is particularly good and I think there are really five reasons and these would be so five pointers that would give you for your own projects the first thing is that this is a very very visual project I mean it's a visualization tool and visual projects will almost always play in your favor because human beings tend to be visual creatures that remember visual things more than other things the second thing that's really good about this project is that it has a lot of wow factor it's pretty impressive especially when people see like maybe the the bi-directional algorithm in action or when they see the maze or when they see that the algorithm recomputes in real time and I think that projects with wow factors with an impressive aspect to them will always be even more memorable the third thing is that it's an interactive project that also helps because people will remember it more when they can sort of play around with it so something like a game or a website is almost always gonna be like a good thing to have in a project because of the interactive nature the fourth thing is that it's easy to get and to be honest here this is maybe one thing where I could have improved this project maybe I could have made it even more palatable for people for like newcomers maybe I do take it for granted a little bit but I think that a project that is easy to understand is almost always gonna play in your favor or rather a project that is hard to understand is almost never gonna be good and then finally the fifth things that this project taught me a lot it taught me a lot about path finding algorithms which in turn helped me for the coding interviews because there was more well-versed and data structures and algorithms and also it taught me a lot about you know creating a web app and CSS animations if you can have a project that really teaches you something you're almost always gonna be better off than a project that doesn't really do anything for you and that's more of a waste of time for you okay so let's look at my second project now this is another visualization tool not for path finding algorithms this time but for sorting algorithms it's pretty simple pretty self-explanatory you've got this screen here with an array that's made up of these little blue rectangles or blue blocks you can generate a new array by clicking the button in the top left corner here and you can change the array size and the sorting speed so you can have a very small array with just a few blocks and you can kind of see the numbers that each block sort of represents and then you've got the four very popular sorting methods here let's start with merge sort so I think that this is another example of a very very good project again not trying to pat on the back or flex or whatever I swear we're getting to less impressive projects but I think this is a good one and I shouldn't say impressive I could say just a good project because again if we go through the five things that I mentioned during the path finding algorithm project this project sort of checks off all five of these things that was a merge sort quicksort um so first of all very visual right this is obviously very visual you kind of like can see the algorithms in real time so this is very visual and it's got again some wow factor I would say the wow factor is probably a bit less than with the path finding algorithm keep sort maybe because sorting algorithms are just sort of more accessible to people whereas path finding algorithms are more like you know all over the place and more they seem like more difficult maybe but it still has some wow factor so that's two things right visual wear factor it's very interactive again like the person can play around with it by moving the array and everything the fourth thing is that it is very easy to get here I would say this project is even better than the path finding algorithm you cannot not get this project like really there's a one screen because have stood like a resize the array and click sort that's it let's look at bubbles four by the way sort the fifth thing is that this is also a project that's very useful it teaches me something like this taught me so much about sorting algorithms this is how I learned quicksort I will say also what's really good about this project is that it was very fast to make there's took me about a week to make after the coding bootcamp now let's look at my third project and this is where things start to get really interesting because this project is very very different from the first two that we looked at for this project I paired up my friend Hussein I mentioned him earlier on in the video he went to the same coding boot camp as me and we decided to create this small programming language that we called oak as well as an interpreter for it in JavaScript its meaning that you could sort of write out code in that programming language run it in JavaScript and it would spit out you know the expected output and then here if you go on this repli'd you can kind of see we've got the grammar defined for the programming language this explains what a variable keyword in the programming language is how a function call works what a loop is written as in the programming language from to width that was our for loop and so then if you scroll down you can kind of see all of our code for the interpreter there's something like seven hundred lines of code for the interpreter and then if you go all the way down to line 700 something you can actually play around with it here let's see nested from two loops uncomment this code out if you run this code it'll spit out these three four loops here from 1 to 3 with I from 1 to 3 with ok from 1 to 3 with K and they prints them out we have fizzbuzz so we defined fizzbuzz that's sort of a good test to see if you've got an actual programming language and you can run it and you can see fizzbuzz all the way to 35 we were very proud because we had a recursion we've got a recursive Fibonacci and we can print using a from to loop the first 15 through the nacha numbers so that was our project very different from the first two projects that we looked at and to be honest I think this is not as good of a project it was a good complement to my other two projects probably wouldn't have been great if I had done like any visualization tools for algorithms but if we go down those 5 points right that we mentioned earlier this project is certainly not visual not at all but that's fine not all projects can be visual in terms of wow factor it is pretty impressive technically speaking but only if you really get what's going on like only if you actually take some effort to understand like all the code that goes behind it and like what you know an interpreter for programming languages and if you do then yeah it is pretty impressive but you know it doesn't have this sort of a wow factor that the other two haven't I would argue that it's probably because it has no visual third is it interactive not really I mean it is interacted like you can comment out the code here and stuff but it's hardly interactive not nearly as interactive as the other two number four easy to understand unfortunately this project is not super easy to understand you have to actually read through the big introduction you have to kind of parse this grammar here you have to realize that we wrote an axial interpreter for it what is an interpreter realize that you can uncomment out code and run it it's not as easy to understand as say the sorting visualizer and then finally number five did this project actually teach me something yes it did I learned a ton about how to create a new programming language at least at a very sort of basic level but even there compared to the algorithm visualizers I wouldn't say that it taught me as much or as useful of things algorithms are super useful for coding interviews so that's like really one of the best things you could kind of learn from a project and I'm curious what do you think when you compare this project to the other two what are your sort of unbiased thoughts about the project are you as impressed by it do you think that it's as good you know what are your thoughts finally you let's look at my fourth project this is the project that I'm the least proud of but I think that there are many valuable lessons to be learnt from this project so I'm very excited to share with you and to share these lessons with you ironically this is the project that took the most amount of time and the most amount of effort to build out this was actually the capstone project on my coding bootcamp meaning it was the last project that we did we were given three full weeks to work on it I was in a team of five people four really talented people working with me so basically the project was we created our own version or a clone of this very popular Chrome extension that you may have heard of called momentum this is the Chrome extension look it's got three over three million users and basically this Chrome extension replaces your new tab on Chrome with a sort of special tab that has a new very aesthetically pleasing image every day it has a new quote everyday sort of motivational quote it has like a to-do list and a few other things now the reason that I say that this wasn't a great project is because if you go down the list of those five things that I've mentioned over and over again throughout this this project doesn't really check off many of them is it visual not really does it have a WOW factor or is it very impressive unfortunately not at all to be honest Chrome extensions even though they're not super easy to make they don't come across as difficult is it interactive it is it is something that someone can sort of download and actually use but realistically speaking will a recruiter or will a hiring manager or a software engineer at a company will they actually go in the chrome store and download and try out your extension that has very few downloads you know very few users or realistically no so I would argue here that unfortunately that it loses all of its interactivity because there's such a friction or such an obstacle for people to use it is it something that is very easy to understand yes the product is easy to understand but unfortunately the way that it's made easy to understand kind of diminishes it it's the way that we I would have to kind of pitch it to people was we created a clone of momentum it loses some of the appeal because it's like okay so you just like copied something unfortunately because it loses some of that move to it and then finally did it teach me something yes there definitely taught me stuff it taught me a lot about you know creating like a web apps running components back in components database components but all the other four points kind of pull it too far down for this stuff in a great project unfortunately here I would argue the the the biggest mistake that I made because I was one of the big proponents of doing this I kind of let my product manager hat and my sort of entrepreneur hat take over I'm someone who at heart loves to kind of build great products and I think momentum is a cool product so I was really excited about that but I lost track of the main purpose of this project which was to be a software engineering project for us and unfortunately from a software engineering point of view this was not the best project to convey you know technical skills or technical complexity or you know coding skills or what have you that's gonna be it for this video I really hope that you enjoyed this little deep dive into my projects hopefully you were able to get something out of it let me know what you thought in the comments below be sure to subscribe if you haven't already turn on the notification bill and posting three times a week you don't want to miss out on that content and I will see you in the next video smash the like button
Info
Channel: Clément Mihailescu
Views: 1,326,528
Rating: 4.8851085 out of 5
Keywords: software engineering projects, software engineering portfolio, software engineering projects for beginners, software engineering projects with source code, coding projects, coding project ideas, coding projects for resume, coding project for beginners, programming projects, programming project ideas, programming projects for beginners, programming portfolio, web development projects, projects for software engineering students, projects for software engineer portfolio, google
Id: n4t_-NjY_Sg
Channel Id: undefined
Length: 17min 46sec (1066 seconds)
Published: Tue Aug 27 2019
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.