Let's face it, you are never going to get hired without a good portfolio of projects. Until you have a few worthy projects under your belt, you aren't the kind of programmer anyone wants to hire. I'm going to help you fix that.

When most people think of project ideas, they dream big and complicated. As an amateur programmer, you will never get anything big done because you don't know how to handle smaller projects. Think small, simple, and self-contained. Once you've gradually scaled up in project size, then you have the option of creating larger projects. I'm going to feed your brain with some projects ideas you can get done in any amount of time between the next 4 hours or the next 3 weeks.

A Personal Blog

A simple blog

Creating yourself a blog helps with promoting yourself; making your work and ideas seen. You can easily setup a blog in Wordpress or Ghost but why not just make your own? Building a blog from the ground up is a fun exercise that will get you familiar with implementing a REST API, authentication, dynamic page content, and databases while not taking more than a couple weeks to finish.

In my experience, the least painful way to do this is with NodeJS. Most of what makes your presentation and user experience great is proper use of JavaScript, so you should get very familiar with building out web applications with it. Create your blog's API with the ExpressJS framework; use either MySQL or MongoDB for storing data; and create the blog's layout with ReactJS while making API requests with a library like Axios or the Fetch API.

Personal Portfolio Web App

A personal portfolio

There is no doubt you'll need a personal portfolio to get hired for a good-paying job. You're a developer and need not pay someone to do it for you, you might as well build it yourself. You'll need a place to showcase your work and really try to sell yourself. Once you're finished, you can continue to add to it by including your latest projects on it. The care you put into presenting your work to others will immediately make an impression with your prospective employers.

Similar to a personal blog, I recommend using JavaScript for your client and server. I'm not a JavaScript purist, and I don't encourage purism in any way, but I find using JavaScript for the one language of the entire tech stack in web apps so much easier than PHP or other solutions. JavaScript is one of the most sought after skills in the tech industry currently because everyone needs a website and will pay you handsomely for helping them.

Pong

Pong

Pong is the simplest game you can create. Creating pong in your browser or as a standalone application will give you experience implementing simple game mechanics and physics. My 14-year-old brother managed to create pong in Swift in about 80 lines of code. This should tell you how simple it would be to get this project under your belt and realize if programming is for you. If you have a good experience, you might want to step it up a notch with a 2D platformer.

Simple Platformer

A simple platformer

A 2D platformer is a great option for a short-term game project. You'll get to work with game physics, tiling, textures, cameras, collisions, entities, and optionally sound and particles. There are many tutorials for how to implement this kind of project but I recommend figuring out your own way of doing it.

Compared to Pong, a 2D platformer can be much more complicated depending on how you choose to implement it. Using something like C++ and SDL2, your game might end up being 1000 lines of code or more (not counting comments nor whitespace). If you plan on implementing your game in your browser with JavaScript, it will take less code and less time. The technologies you choose to get your project done is completely up to you.

Windows Renderer

Handmade Hero Game Renderer

This project, though relatively short, requires sifting through a lot of Windows documentation on MSDN. If Windows makes you want to die, this project probably isn't for you. The goal is to render some kind of animating pattern using C++ and the Windows.h header file. This project will teach you a lot about how Windows programming works and also some basics of graphics programming.

Fortunately, you do not have to go into this alone. Casey Muratori shows how to do this in the first few episodes of Handmade Hero. Handmade Hero is an Internet series where one of the researchers for Gears of War and Destiny shows his viewers how to make a game completely from scratch until the day he ships the product.

Chat Client and Server

Irssi IRC Client

Creating a chat application complete with a client and server is a great project to teach yourself about networking and network programming. You are encouraged to implement this project as a Terminal UI or desktop application in C or Java to gain an understanding on how networking in programs works.

The entire project is about 500-700 lines of code in total, more or less depending on how you create your interface. If you choose to create an interactive terminal program, you'll soon run into the problem of text messing up if another user sends a message while you're typing. This kind of problem can be solved by using some TUI library such as NCurses on Linux. That way, all text has its own place on the terminal screen which doesn't interfere with other text.

Graphical Calculator

iOS Calculator App

A calculator is often one of the first projects many beginning programers complete. Creating a graphical calculator in your browser or with some graphical library such as GTK or QT is a great way to get experience creating simple, useful, graphical applications. Creating a simple web app or desktop app to accomplish this task should only take about 200-400 lines of code depending on the language you use.

Task Manager

Silicon Valley Scrum

The Scrum workflow has become widely popular in the business sector over the last decade. If you've ever watched Silicon Valley, you might remember the scene where Jared creates a scrum planner for the rest of the guys. You can keep yourself organized in your project management by creating a web app similar to that shown in the show and maybe resembling Trello.

Same drill with JavaScript, create yourself a REST API and a client to make requests to it for updating the content dynamically. This project will only take about 400-800 lines of code depending on how good you make the interface look. Creating a planner could also be useful to you practically for the purpose of organizating your completed and uncompleted tasks while creating some of the projects on this list.

Local Weather

A weather app idea

A local weather app is another simple project and this challenge is also featured on FreeCodeCamp. Creating a local weather app in your browser or on your desktop will give you experience working with geolocation APIs and dynamic content. Geolocation is important for advertising and localization of services. This project shouldn't take more than 300 lines of code and a few hours to complete, depending on how skilled you are at the technologies you use to create it with.

Picture sharing app

Instagram

You probably spend too much time on Instagram, so why not make your own? Surprisingly, this is not an insurmountable task and can be completed relatively quickly. Again, this project is very similar to a blog, the only thing that really differs is allowing multiple users to sign up and create their own "picture blog" on their profile page. Implementing a user search would also be relevant to the task at hand.

This project will be roughly twice the size or more in regards to codebase size and effort compared to a personal blog. Focus your efforts on making your critical infrastructure rock solid and bug-free. If you allow people to create anything on your site, be it accounts or content, you are opening the possibility of some faulty code becoming a gateway to your site being defaced or worse. Hackers only need a simple oversight to pop a shell on your server. Be careful and put care into your work.


Conclusion:

This is not a to-do list. You don't have implement every project on this list. This list serves as a few words of advice to get you applying and honing your programming skills. If these projects seem too easy to you, then I recommend trying out some challenges on ProjectEuler or the 4chan /g/ board's list of harder challenges shown below.

I wish you safe travels and happy hacking!