Something that interests you, but you have no clue how to implement. Forces you to start from square one and possibly pick up radical new ways of perceiving software. Also serves as a major confidence boost once you get it halfway working.<p>In my case it was a synthesizer. "How do I make sound from numbers?" sent me down a rabbit hole that forced me to grapple with DSP math, bit fucking, and manual memory management: stuff you never encounter doing the usual CRUD nonsense.<p>And most importantly, it was fun. If your project feels like work, drop it. I will never waste my free time messing with webdev, architecture, testing, etc because those things are boring and suck and I'm not being paid to care.
The ones which I was motivated to work on the most, that kept me going and learning.<p>What you should build depends on what you want to learn. I built a full-stack app to learn server-client, a B2B application forced me to learn DevOps. Now I'm back to algorithms and Go by working on <a href="https://cuelang.org" rel="nofollow">https://cuelang.org</a><p>What would you like to learn?