3 types of projects to make you into a GOD of coding

Phil Choi breaks down three project tiers to build hiring-ready coding skills. Start with small apps like a to-do list or weather app, move to full-stack CRUD apps with databases and authentication, then tackle large clones with Docker and deployment. Finishing projects and writing good documentation matters more than complexity.
Chapters
You know my story. 30, no CS degree, ESL teacher, but I became a senior developer in a matter of a couple years. So when you are first starting out, you Google or you YouTube what projects to build to get hired and you'll find an insane list of projects and everyone is telling you to do different things. Do I build a to do list, a calculator or a weather app? So in this video I will tell you three types of projects you want to build and the tech stack associated with each one. So that not only do you learn everything you need to know during that building process for a job, they will shine and impress the companies looking at your resume. Let's divide the video into three parts. A few examples of starter level projects, a few examples of intermediate level projects, and if you've mastered everything from the previous parts, the challenging project that will get you job ready. What you're seeing now is my normal state. So tier one is like something easy like a to do list, simple scraper, or you know, just a simple resume homepage. So I do have a couple GitHub repositories that I've made before when I was first starting out that I'll share in the description. And you know these projects are for, for like beginners, right? Zero to two months. I'll show you the code, I'll go back here. It's so GitHub offers one free hosting website per repository. So I have this hosted here and you can actually see my resume homepage website. So I built this with svelte. So it's just a basic app I can press period here. And as you can see the code, it's just very simple. Just no server, just client, just some components and just putting it together. So I just have like a nav bar, banner services about testimonials, social and a footer that's like all the webpages and that's all you need to build up, just the structure of like you know, a header body about testimonials, social media section for people to reach out to you, and a footer. And you can use this website on many things like on your resume you can include it. Basically I have the data of this application that I was using in this website and basically I just use that in the components. Just a bunch of svelte and HTML basically. Right. It's super simple and it just tells you like, hey, my name, this is my name, this is what I can do, these are the projects I can do. And you're coding it. Right. Another thing you can do is you can do like a Python scraper, you know, choose your project more front end based or more backend based. If you want to do something more like server heavy, I would say do something like a Python scraper or maybe with Cheerio and Cheerio and Puppeteer. But this one I remember I was using, let me check the requirements here. I was using Selenium and Beautiful Soup and it was really good for me in Python. So I was running some code in the server and I was able to go to a website and like go to the website and then get all the elements off the website and get the data that I needed. Basically from there you store the data in the CSV file for whoever that needs to use it uses it. So you have like a login process. So you go to like a website, you can find the login process and Selenium can put in the values for you and then you have some kind of quick query. So I was, at the time I was really into like boxing, but I wanted to scrape the box direct website. So the box direct website kind of goes in, let me see here. It goes in like IDs. So there's like boxrec.comn/pro boxer and then there's like a number. So then you know each. There's probably a number you can just put in random number and then you get like a random, maybe you'll get some random boxer or something. So a thousand is Jeff Franklin. So you could just keep on querying it and then if there's a boxer there, get that data. If not then just skip over and like increment one. So you like do like, maybe you check from one, whoops, that's 1001 and then you can get like the manual Ortiz 99, 28, whatever, like his record. Then you can go two, okay, that's another boxer. And then you just keep on going until like maybe like 10,000. And then if there's no data there, just skip over and if there is data you can put in your CSV file and that's pretty simple pattern on the URL. And the Python scraper won't be too difficult and there's a lot of documentation on it, you can find it and it'll only run the server. There's no real like HTML for it. So if you find that more interesting, you can try this project out. And I learned a lot doing it. So these are like tier one projects. You know, you decide to be a programmer and you're ready to learn and you know, there's nothing better than building these projects, right? Your resume homepage or your Python scraper or your to do list or your weather app. But to do list and weather app, I really feel like are more like practice. You're not going to really show that on your resume or anything like that. But a Python scraper, yes. Like at a company, like an AI company, they can use you, right? So it's definitely a project like where you can say, yes, I can scrape websites or. And then like a homepage. You're always going to need a homepage to kind of like showcase your talents or whatever you need to do. So those are two projects that I feel like are very important to kind of learn. And even if you're starting out and you don't know if you like front end or back end, they're not projects that take a long time to finish, I feel. So you can kind of just finish them and then have them in your tool belt and you know, like features, you don't really have to think about the features right now, but you will learn many things. Like you'll learn how maybe, maybe they only have the box rec at odd numbers for some reason, right? So then you figure out a way, okay, even numbers I don't even need to do. So then you kind of like learn how to just find the odd numbers and loop through and only do like 1, 3, 5 and things like that. All websites and databases have like little patterns that you can follow and in the homepage it's just like client stuff and making it look pretty and, and stuff like that. So awesome. Just these tier one projects, you basically just want to showcase what you've learned and put them to use. That's the most important thing. And for like libraries and frameworks, they're not really necessary at this point, Right. I know that I showed you the homepage in Svelte, but I'm sure I could just translate that over into HTML because basically svelte is, I don't know, like a lot of the DOM writing is just HTML. Where is it? I think it's here. It's just HTML and css. To be honest, I don't even know why I didn't spell it, to be be honest. But I didn't. So that's what I did. And anyways, so just a simple HTML CSS JavaScript would have been fine here. But your goal is to learn like the fundamentals here, like whether it be Python or JavaScript or C sharp or whatever you may choose, right? And you'll learn during these projects you'll learn to start and finish the project. You'll learn the syntax. Hey, I don't know how to write a for loop in Python. Okay, look it up and then you find out, okay, like this stuff, like in the, in this felt. I didn't really know how to loop through an array inside of the dom, but I had to look this up. Like, okay, hashtag each, then whatever variable name I chose as list, or each service list as list and then I use the list, I don't know, like map or whatever inside of like react. But it's very interesting because you get into a speed bump while you're building these projects, like no matter what, like how to center a div, like the age old question or how to, I don't know, like create an element and append it to like a element inside of the domain and say you don't know how to do it at the time, but you look it up. And then through practice and repetition you kind of learn it. And so you should already know all the syntax by the time you finish your tier one, like a level one product, you know, how do you choose your project? And I've gave you two examples, right? I gave you a resume homepage and a Python scraper as your level one project. Okay, how would you start? Right? I think me, maybe I'm old fashioned, is I get a pen and paper pen and a notepad, write down what you're going to build and make it like a checklist. Okay, with here I need to install this package. I need to install this package because. And just take notes, you know, it's like taking notes, learning. And when I'm writing it down, I feel like it goes in my head a little bit better. So that's pretty important. And I remember at my old company they told me to build a chatbot. I had no idea how to build a chatbot. The cto, he said, you know what, just get a request going that goes to the server and then it responds with something. And I guarantee you just starting is the hardest part. Because once I get that going, I'm like, okay, when that response is coming, I can handle that response with this condition and if else and then in the end I got it done. Yeah, just starting is the hardest part. So when you're starting this project. Yeah like say you start on the resume homepage, it's not a mistake because just start and then you'll finish it. And then even if you feel like it's a waste of time and you wanted to do more server stuff later. At least you got this project done. And then you'll do the Python scraper or the whatever Node JS scraper, it'll be great. So I know I kind of went on a rant about like the Level 1 projects and the kind of mindset that you should have with all your projects basically, in my opinion. But get good at documentation, get good at writing like readme, get good at like being considerate about the other programmers here in this step in the beginning, because it'll transfer over into your intermediate projects and your more complex projects. Because when I'm writing my code or when I'm writing my readmes or when I'm starting my new projects, I'm always thinking, okay, if Minsu Mini joins my project, I want him to be able to start the project without talking to me because I don't like talking to him, to be honest. Just kidding. But no, I think you should have enough notes for someone to run the project to install the project and you know, as as fast as can help you just do the documentation without asking you this question, taking your time away, you should have that documented and have those good habits here in this phase of your career. And if you have that down, you can get many different like positions, like even like a project manager, right? Because you're good at documenting, you're good at understanding everything and understanding the project of what you want to build and how you're going to achieve it. And I know it's very hard, but if you get good at those tasks, those will roll over into other tasks. And this, this is what is known as a Super Saiyan that is ascended. So you know, a good level 2 project or a tier 2 project that you can do is like a simple full scale like full stack crud app, Writing the server, working with the db, working with like local storage in the client, working with client code. You can just use like Node JS Express, HTML CSS, JavaScript and just make a simple crud app like think about in your head like a journaling application, okay, that's going to have to work with the date object. So maybe you'll get into like DJS or Moment js. I think Moment JS is deprecated. But now everybody's in datejs and you'll learn how to work with dates because you need to know when that person wrote it, who wrote it, what the contents are, what the title is, and then you store it somewhere and then later on you get whoever it logs in, you get their journal posts. So I did find like a simple CRUD project. I'll include it in the description. But it's just a simple CRUD project. I think it's a Node JS Express crud. I did not write it. But it's just a simple, just a simple crud. It's uses Mongoose, MongoDB and it's to store T shirts. So it's just the back end code. Then you can like run like Postman or Insomnia or write your simple front end for it. Just get the process of like writing back end code, hooking up to the DB and getting all that done. There's a routes here and a T shirt and basically you have a GET request. One second, let me see. Here you have your routes, okay. So these are your controllers or your route handlers. And basically he has a Find all T shirts. That's the get get request. That's the Find by id. That's the get with the string with the ID parameter. Add T shirt. That's your post. And then you have, you're gonna have your update update T shirt and that's your put request. And then somewhere here you're gonna have your delete here too. Delete T shirt. Then he has the app get or they have the app get and then at T shirt. If you just hit that, you're gonna get all the T shirts. T shirt by id, Find by id, you can add a T shirt. And you're just passing these things. So then you have some kind of model that you're working with, right? So that he has a T shirt schema, he has a model, what type of T shirt it is, I guess the style. It's going to be a casual, vintage or alternative T shirt. A size, color, price and modified. If you make a CRUD project, what kind of things can you make a CRUD project out of? Right? And that's basically everything. And it's a good, good way to kind of like learn and get some domain knowledge on like, I don't know, like let's say a song, right? Yes. You know the artist of the song. Yes. You know the title to the song. But what are the things that are going to be in the DB about it? Right. You're going to store the producer, you're going to store when it was made, you're going to store what genre it is. And the more descriptive you get in your document or however you save it, the more complicated it's going to be. But the more descriptive it's going to be. Right? And the Back end can query a little bit easier by a smaller piece of data. And I think just getting started is the most important part. But writing a full scale application back end to front end is very good. Like Mern Stack is very popular. Recently Mongo Express, React, Node JS Mevin, that's like Mongo Express, View and Node js and recently there's a, you know, svelte and all these kind of frameworks, but it's a good chance to kind of get your hands dirty and get, get started writing this kind of code. So simple Crud app writing, like everything from the back end to the front end is very important in this stage of your career. And a simple crud app that's going to help you immensely. So these tier two, level two projects, who are they for? They're for like maybe four to six months experience. And you know, you're going to learn how to connect to the DB using like a Mongo URI or your postgres connection variables. And then like you'll learn like HTTP requests and like server protection with JWT token or maybe you'll even learn Socket IO. So those are kind of things that you should be looking into at this stage. And libraries or frameworks you could kind of work with are like Re, React, Vue, JS and Angular. Those were like the top three when I was first starting out or a little bit after I first started, right? Everyone was like, oh, are you doing Vue React or Angular? But then React kind of beat them all. But you should get into like some global state management with like Redux or Zstand or Recoil and then get into some like Axios or Fetch. It is an express, you know, like the Internet was basically created on, you know, communication, right? Like I think it was made by the military for communication basically, right? Like to send documents or whatever during like, I don't know, let's say like some conflict, I don't know. But basically all the Internet is, is like, you know, instant messengers, helping communication. Displaying knowledge on the Internet is like helping communicate these ideas and then all that you need like communication from the client to the server and then the server needs to have communication to the DB and then, and the DB needs to give back to the server and the server needs to give back that client. You know, it's all this communication. In a nutshell, how would I build this? I would just think of something like a song like super generic, maybe like watches, watches or electronics. And just think about storing it in some kind of table and being able to not just Store it, but get it right. So you want all the green watches, so you'd say okay, select star from where color equals green or something like that, right? And then learn how to kind of query and get the data in the right way. You have like a bunch of data and then you want to get one specific criteria of data or I guess that's like with id, but only all the ones that are like from the models of like 1980 to 1990 and figure out a smart way to get all that data. And I think that will help you in the long run of becoming a back end developer. And then if there's a lot of data coming to the front end, learn about like pagination and you know, handling all that data. Even in the back end you have to handle the pagination too because if the front end gets too heavy it becomes unusable. And last but not least, we have the tier three or level three projects. So you have like an Instagram clone, E Commerce or you can just like try to find like a big application, LinkedIn, Instagram, Facebook and try to clone it, right? And cloning will really help you because honestly in the web the code is there for you to see right when you open View Page Source or you open the Inspector and you can see it. But the way I always think about it, here's like an analogy. Yes, there's like you can, there's a French dictionary and French books. Yes, all the resources are there, but I don't know how to fucking read it right. And it's up to me if I'm gonna kind of like learn French or learn programming. I should kind of like learn everything. And little by little I'll start understanding basically you'll know the structure and basically Instagram clone is a very good project. And in the future I want to release my clone and for as a course, which would be very interesting anyways but after like one or two years I feel like you can get into React, Native, Flutter or like Microservices and look into different architectures. And one big thing I really think that you should be be looking into at this time is a docker. And Docker is going to help you run some programs that are part of like a Linux separate program and then take it down. Right? All it is is like a Linux image or a Linux virtual machine that you can pop up and then you can take out at any time. So my reasoning behind that is because like say you need to use Mongo 5.0 in a project, but then you need to run like Mongo 6.0 on different projects and you're running on multiple. Don't you wish you could like have them both installed at the same time? It's gonna be very hard. So Docker is going to help you pop one up and run it down. And then when you're working on the other, other project, you run on those dependencies. So that's kind of like my reasoning behind Docker. And Docker will help you also deploy because Docker like persists when you run the code. And it's, it's easy to deploy, you won't feel bad for learning it. And so it's a really good piece of software. So in your Instagram clone or whatever you choose, you'll learn about authentication server protection. You'll learn how to deploy your project, whether it be on EC2 or like with AWS, Vercel, GCP, whatever you want to run it on. Because you have to show the world to it, right? You have to show the world your project. And you know, libraries or frameworks you can use are Redux, zoostand, Molecular, Nest JS in the back end, or Next or Sveltekit or. I used to use this. The first full scale framework that I use is Nuxt with Vue js. And you know, you will learn how to modularize your code. And if you're using this like Next JS or Nuxt or Sveltekit or Nest JS or Molecular, there's patterns to how the creators kind of want you to code those apps, right? And usually if, you know, framework is very popular and people are using it, it's made by not just one person but like a lot of people. And it's kind of like company or like coding standards of how to write code. So I would just follow those patterns and get those in your head. And by following those patterns, if you don't even use those frameworks, you'll take what you like and then your code will be very easy because a sign of like an inexperienced developer is when you're coding and then all of a sudden they're using this pattern, they're sending a request this way and they're handling it with try, catch. But then all of a sudden they have another request and they're using dot then dot then dot catch and then it's just random every single time. But the best code is very consistent code because if I understand a little piece of it, maybe I should be able to understand the rest of the code. So your code should be very consistent and it should look like it's written by the same person. And you know, I said it earlier, but I'll say it again. Document the process. Documentation is going to be very important. Be considerate of other developers and I'll show you maybe you Instagram clone that I made, it was like serverless architecture. Here it is. So here like this is. I'll link the GitHub repository in the description here too. But this was like an Instagram clone I was making to learn how to upload photos, upload videos and to Firebase storage, use Firebase and Firestore and React Native. And I was learning how to componentize all these little things like bottom sheet opener or an action sheet opener, my alerts, my buttons and just learning how to componentize all this kind of stuff. So I didn't need to write it over and over again. Tiles for like the Instagram images, how to persist my login state with context with users. I would have my image picker and like the image picker launcher and how to use that permissions and how to handle the permissions of app transparency. Because your app is not going to get accepted in the App Store unless you have that kind of thing going on and on before they like use the camera, you have to ask for permission and then making your own loggers or like whatever you need to do, like the global state management and your screens, your form validations, you'll learn a bunch just writing this code. And I always think if you're gonna start, you gotta finish something that's super important to kind of learn the full value of why you're starting the project. Because you can start many, many, many, many things and then get to like 40% or 50%. But then actually to have that thing on your resume to actually show that's worth it is getting it all the way done right. And you know, the last 10% is gonna be the hardest part. And the people that get past that 90% to the hundred and not saying every software is gonna ever be done 100% because something's gonna get better, some new things are gonna come out and I want to implement that. But just a little lesson, finish what you start, document the process and be considerate to other developers and show me what you've got. Those are the three tiers, so I'll just go over them again. So let's just say the first level, like zero to two to three months, whatever. Make a simple resume page or a scraper. Those are two examples. But you find other ones ask me in like discord if you want to, if you want to do one very fast tier two or level two projects, you're gonna be at like four to six months, maybe eight months. And you can make like a full stack, simple project using crud. Just choose a thing, I don't know, soccer teams, playlists or whatever you want, right? Or emails, I don't know, email generator, whatever it is that you want to kind of make a CRUD for. It would be interesting. And then learn like different kind of connections to HTTP requests or sockets or long polling. Learn it and have it in the back of your head. In the back of your head, but have it in your head so you can use it later. And when people are having conversations about it, be able to go into the conversation without thinking, oh, I know, but hey, maybe I can add value into that conversation and I can gain value from that conversation too. And you know, level three, pick your poison. I mean, find a, like a big project that you know, like the reason why I say clone like a big project is because they're going to have every single feature, right? Instagram has chat, Instagram has upload, Instagram has likes, comments, whatever. You may choose settings and push notifications. If you learn one all the way, you're going to have experience in a lot of the features that you're going to be working on in the job. And you know, like I said, like Facebook, what does it have? Like chatting, uploading comments, likes, Same thing. Twitter, same thing. YouTube, same thing. So, you know, just pick a project, choose your poison and keep at it and you'll learn a lot. Thanks for joining. You know, I know it was a long video, but if you are able to build a few of these types of three projects, there's no way you won't get hired. Job market sucks right now, but once it gets back around, you'll be ahead of your competition. Once you build one of these, you can pretty much build all of these over and over again. These can even push you into building your own business by building a platform for yourself. If you want to see these projects built live, come and join the Discord and join the free JS course that will be focused on building projects from scratch. So start with type 1 projects and work your way to type 2, then type 3 and so on. This process will take some time, but by the end of this grind, you will be valuable to anyone. Let's get it done. I will be building some of these projects in my free course hosted on the Discord and the videos will be available on YouTube. If you have any questions or if you have any concerns and struggles in your coding journey, please comment below. I will be reading all of them. If I can do it, you can do it too. Coding saves lives.
More from Phil

day in the life of a software engineer | 5 hour productivity | building my dev agency 🔥

day in the life of a software engineer | 3 hour productivity | coding my 6-figure community startup

day in the life of a software engineer | 5 hour productivity | coding our sns startup app LFG

day in the life of a software engineer | 5 hour productivity | creating apps that makes big money






