We often hear that building small to moderate size projects make you more confident as a programmer than reading books or taking courses.<p>Suppose a newly minted programmer who has taken an introductory course on Programming and/or Computer Science somewhere and knows the basic constructs of a programming language.<p>What projects can such a person build? Is there a list that is suitable for a beginner like that?
I can talk about webdev part, dunno about other areas.<p>When I started, I built simple utilities with just HTML/CSS & JavaScript. When I had a solid understanding of these three, then I dove into frameworks and complex stuff.<p>Here are some ideas<p>- Calculator, could be command-line or in a website<p>- To-do app<p>- A pomodoro timer<p>- static webpage (with just HTML/CSS), then learn about accessibility, responsive design, design system.<p>- REST API with node (e.g. Express js)<p>- Consume public APIs in JS frontend (or you can use React too)<p>- Building a full stack app with your CRUD API, can also add auth, image CDN etc<p>Basically, gradually raising the complexity with every project or within it by adding a new feature<p>I recently wrote about building projects as beginner (even more ideas here) : <a href="https://mnsh.me/blog/beginner-ideas" rel="nofollow">https://mnsh.me/blog/beginner-ideas</a><p>Good luck!
CRUD todo that increases in complexity.<p>- Jquery TODO List to learn about the DOM, basic logic and CSS and HTML structure.<p>- JS Todo list with data saved in browser storage<p>- PHP todo list with data saved in a file or database
- PHP todo list serving JSON that talks to a front-end client.<p>IF you can make this you will be great.<p>Do not listen to anyone telling you PHP is this PHP is that.<p>It's built for the web. It has the most mature tooling for web development.
Small/silly things I did early in my career that are milestones in retrospect:<p>1. Compiling my Linux kernel - still relevant 25 years later<p>2. A multi-threaded socket server<p>3. Implementing each of the OO design patterns<p>Other things on-the-job that developers do early in their careers that teach a lot but foist technical debt on to others:<p>1. Automating any thing that you are asked to do manually (be careful human factors-wise)<p>2. Picking an overwrought solution to a problem (e.g. template metaprogramming or some darling language)<p>3. Unit tests for your code in whatever framework that suits. Even just a single test for sanity check purposes<p>Things that I wish some new hires would do:<p>1. RTFM (particularly, know their way around API documentation: usage, return codes, errors, exceptions)<p>2. When advised to RTFM actually do it
Building projects is definitely an excellent way to boost your skills! I'm going to shamelessly plug our site, <a href="https://www.frontendmentor.io/" rel="nofollow">https://www.frontendmentor.io/</a>.<p>We handle the project ideas and designs, so you can focus on the coding. We try to make it as close to a real-world development workflow as possible. We've got five different difficulty levels and as you get to the Intermediate, Advanced, and Guru levels, there a many full-stack options, if that's something that interests you.<p>Hope you find something you like and best of luck!
I would say start with stuff that runs
on the command line and needs few or
none external libraries.<p>A command line game would be fun! Tictactoe, wordle, text adventure game (you move N E S W from room to room, to solve a puzzle plus some other actions)
One possibility is implementing pull requests on open source projects.<p>They would then gain skills such as<p>- Reading other peoples code<p>- The actual process of git cloning and branching<p>- Code review<p>- And the joy of building something other people will use.
Here are some ideas:<p>- Command Line Music Player<p>- Homepage/Startup page similar to Homer.<p>- Discord Bot<p>- Mastodon client<p>- Simple Markdown editor