* performance analysis/monitoring tools. Most developers are astoundingly bad at performance and then lie about it with weird unfounded guesses
* markdown to html parser or the opposite. Most developers have no idea the actual cost of involvement required for basic string parsing and wrongly believe it’s free
* network proxy. Aside from authentication this is mind blowingly simple. Most developers will supremely over engineer this
* API documentation. In a world where the average developer struggles to write an email actually describing inputs, purpose, and outputs clear enough for a stranger to follow can be quite the impossibility
It is fun to develop, rewarding and the dynamics inside the code are always interesting (input from the player, performance, graphics, etc).
Even a simple game that can take an afternoon or a day to develop bring some fresh air.
I have done this a few times and you learn so much and appreciate so much.
Other than that, I think it really depends on where you are starting. If you are a webdev, building an MVC framework. If you are a system programmer, building a basic HTTP.1/1 web server.
I would also second the recommendations to write a game. If for no other reason than the fact that it is some of the most fun programming there is, you usually get to flex muscles you'd never get to in a boring web dev job.
Repeat the above as gui applications, and on the web.
MPEG 1 codec
Minimal HTTP server of actually used features.