Often times when I'm looking to learn new tech or learn a new technique, I like to start a new project and build something practical that'll keep me motivated to finish it. Here are a few tips I've collected that help me get started.
Sounds easy, right? Just keep a list! So simple!
Really, what I do is anytime I use an app and feel like it could be better, I write down the app idea of what I'm using. This could be a lot of different things depending on what the app is. Sometimes I just want to understand how things work (I love trying to figure stuff out without libraries if I can) and write that idea down. It could be as simple as just something that I feel like should exist and I can't find it easily.
A big part of why I got into programming was because I wanted to make tools to make life easier for others, as well as myself. So when I feel a tool can be improved upon, it goes on the list. I just rotate thru the list and the better I get at programming, the more feasible the 'harder' ideas become.
Here's a handful of ideas that I think would be fun to learn how to build:
- Reddit clone
- This is kinda self explanatory but I always felt like the Reddit experience could be improved. It'd be a fun way to flex some CSS knowledge
- Coffee brewing timer w/recipes
- I use an Aeropress to make coffee and feel like it's kinda hard to easily find other coffee setups and test them out, while keeping time (sometimes it's precise)
- Google Drive clone
- I've bookmarked a couple of clones to see how they build it out but I'm always interested in decoupling my own dependency on external tools by building my own
- Destiny 2 apps
- It's easy to look at things you spend a lot of time doing, for me it's video games, and try to make tools to make your life easier.
There's honestly a whole lot of room for apps to be improved upon or simplified that your list could always be expanding. Since I've been keeping track of stuff my list has grown to over 50 random ideas. So far I've built a handful of them and it's incredibly satisfying to build tools that you'll end up using.