6.1.1. What Makes a "Good" Project?
Whether your project is "good" or not depends on why you're building it and what you hope to achieve.
There are three main goals you probably have in mind:
- To build something for your resume or to show off to potential employers.
- To learn a new technology or improve your skills.
- To build something for you or for fun.
Or ideally a combination of all three at once.
Your projects should ideally showcase a skill level above that of your other experiences. If your projects are less impressive than your other experiences, then they really won't add much value you as a candidate.
Projects as Portfolio Pieces​
If your goal is to build a project for your resume or to show off to potential employers, then you should aim to demonstrate you can build real software, or build to demonstrate specific skills you want to highlight to the employer.
What is real software? It's software that people use, a app they can download, a website that has traffic, or an open-source library that others depend on.
Building real software demonstrates a maturity that is not found in students who mostly only build toy projects or school assignments they promptly abandon after the semester ends.
If you don't deploy or release your project, you are not demonstrating skills in knowing how to deploy, monitor, or maintain software. Which are all critical skills for real software engineers.
Projects as Learning Exercises​
If your goal is to learn a new technology or improve your skills, then a "good" project would be one that allows you to learn with the least amount of time and effort.
If your goal is to learn and not to show off, then you don't need to build a full app or even finish it. The goal is to learn, not to create a polished product.
Do not waste your time rebuilding common parts of the tech stack over and over again, like rebuilding your login page for each new project you start. Unless you're doing something tangibly different with your previous work, this is a waste of time.
Build a small proof of concept, a simple demo, or even just a few scripts that give you confidence in your understanding of the technology.
To clarify, these projects can still be good for your resume, but they do not necessarily demonstrate the same level of maturity as a project that is built to be deployed or released.
Projects for Fun​
If your goal is to build something for fun, then a "good" project would be one that you enjoy working on and that keeps you engaged.
Your project doesn't have to be useful to anyone else, but it should be something that you find personally rewarding. This could be a game, a piece of art, or anything else that sparks your creativity and keeps you motivated.
What Makes a Project "Bad"?​
Your projects need to match the level your presenting yourself at.
If you we're applying for a senior engineer role, but had a project that was a simple todo app, then that optically reflect poorly on you. It might suggest that you don't have the skills or experience expected of a senior engineer.
The same goes for students. If you're a student applying for internships, but your project is something like:
- A basic calculator
- A simple todo app
- A LinkedList implementation
Then those projects are not going to impress anyone. They are too basic and don't demonstrate the skills or maturity expected of a student looking for an internship.