The most frequent question I get is “What should I build?”. It’s a valid question and I had this doubt for a long time. I was always jumping around from one thing to the next, never motivated enough to go past the initial enthusiasm of starting a new project.
What I found out in my two years of self-learning is that any project is a good project, as long as you finish it. I often recommend simple apps such as a To-do List or a Budget App. Particularly if this is your first project.
If you haven’t built something before you need to start with something easy. You need to complete something. The biggest cause of lack of motivation is not having built anything, not having anything to show for, after months of learning.
You start saying to yourself: “Ok, I’ve been doing this for 6 months, but now what? How will people know what I know? How can a recruiter know I have these skills?”. The answer is only one: Complete, functioning projects, with code that can stand on its own, for people to use.
So why start with a “boring” app like a budget app (I think budget apps aren’t boring but ok, I’m a geek). Well, you should be able to complete it in a few weeks and have something you’re proud of.
Once you build an app, nobody can take that away from you, it’s out in the world, it’s part of your history, your portfolio, you can say to yourself: “I’m a developer!!!”. Even if you’re not a professional yet. I had this moment about a year ago and I’ll never forget it.
You might be thinking: “Oh, but anyone can build a budget app“. And you’re correct (kinda). The objective isn’t to change the world with a breakthrough app nobody has thought about. Or even to create a fantastic budget app that will change people’s finances.
You’ll only be able to create things that are slightly above your skill level, so it’s safe to say if you won’t build simple things you’ll never build amazing things either.
Building Interesting Things
Now, of course, if you have an interesting idea, by all means pursue it. If you can think of an application that nobody thought about before, great! It will definitely stand out in your portfolio and impress recruiters.
But if you don’t, it’s way better to make a to do list than to make nothing. Trust me, I’ve made that mistake and it’s like night and day when you change that mentality. And if you look at the work of most people that built something impressive, they invariably built unimpressive stuff first. Just look at artists, writers, engineers, inventors and search for their humble beginnings.
Another path to build interesting things is to start with simple projects and add functionalities to it. Example: My first app was a shift tracker for my girlfriend. All it did was register and display her shifts so she could keep track of how much she would earn in her next pay.
Once the app was completed I started creating all sorts of reports (I love working with data). How many shifts did she do in a month? How many shifts per week per hospital (she’s a nurse)? How much money on weekends? Generating all those reports gave me a lot of knowledge of SQL, Linq queries and how to ask interesting questions from databases.
And guess what happened next? The coding exercise that got me the interview for the job I got was asking for a report like the ones I built. And because I built complex reports it was a breeze to complete the coding exercise in less than an hour, impressing my recruiters.
Build Real World Stuff
Most jobs out there will deal with products, employees, orders, employees, clients, warehouse, transactions, records, inventory and so on. So why not build systems that deal with this type of data?
The good thing is that there are many tutorials out there on how to build these things in many languages. And I GUARANTEE you’ll have many ideas as you build it. “Oh, I could do this other thing, or I could implement this extra tweak, or I could style it this way”.
Trust me, these thoughts will come. Don’t act on them yet. Write them down. Start working on them when you finish the tutorial. It’s good to have tutorials as references. You’ll need them when you’re building your own apps.
You’ll literally copy and paste solutions from your tutorials to create your own solutions. Most coders don’t start anything from scratch most of the time. You should only start things from scratch when you’re taking your first steps and you need to understand every single line of code.
Just to give you something specific, my suggestion is that you build a budget app. It will have connection to a database in the cloud, it will be online for people to see and secured by authentication, also in the cloud. I promise this will be challenging but achievable.
The shift app I built for my fiance has the same idea, but it records shifts instead of transactions. It’s secured by Firebase Authentication, the database and hosting are with Azure. The back end is a Asp.NET Core C# Web Api and the front End is Ionic-Angular.
Send me your project ideas and I’ll keep you accountable!
- A habit tracker, where you get to register and report habits of your choice.
- An activity tracker: Same idea, but for this one you need to create a timer, and it will log the hours you spend doing something
- A wine catalogue: Display data about wines fetching data from an API and allowing users to search and visualise. It can be a catalogue about anything that has free APIs: football players, movies, you choose.
- Basic ecommerce with product catalogue, authentication, user session, checkout.
- Employee, client, student or product manager. Where you can register new items, search, filter and generate reports.
All of the options above can be implemented using a local database, where the data gets erased every time you refresh the browser. A step above would be a remote database.