Try to do the stuff you've been doing but without the resources that have been at your disposal. Build a simple Twitter clone API using only C APIs. Roll your own HTML layout renderer in Open GL. What if NGINX and Apache didn't exist? What would you do then?
Watch "Halt and Catch Fire" as an engineer. Listen to the problems they're solving and try to solve them yourself.
At the end of the day, hacking is about creative problem solving.
Thanks for suggesting Halt And Catch Fire. It looks great.
It is profoundly important for engineers to periodically rekindle their sense of wonder if they wish to stay relevant and it sounds like what you are asking, if so that is super awesome.
Unfortunately for different people it is different things. So you might have to flail around and try a few things first before you get where you want to be. The good news is that it has never been as easy to try different computing things as it is today.
One piece of advice though is to be mindful of tooling. Which is to say think about the tools you use and if they help or hinder your wonder. Nothing puts the kabosh on wonder like slogging through a click and type interface for an hour for each attempt at making progress. So think about tools as well as what you're using those tools for. Perhaps take a week to try different ways of editing source code for example to find one that is the most frictionless.
Finally, before we get to some suggestions, YOU MUST change how you 'score' your progress internally. On thing I have seen again and again is people who have been coding professionally for a while their 'score' is "projects completed in unit time" the bigger the number the better they feel, that was how their boss scored them and they adopted it for their own use. There are learning curves on things and if you score your self by completions you will become disillusioned. But if you can allow yourself to adopt a score of 'interesting things learned' over unit time, then you will be much more likely to be successful. Trust me learning that you don't like functional programming is just as important as successfully blinking an LED on a demo board.
Here are some things which have helped me or people I know.
Raspberry Pis - It is a very inexpensive computer that people look at for teaching but it is also a great little server and can run everything the "big" internet servers tend to run so if you wonder about how email systems, dns, and web servers interact? Or ways to build a "server farm" of multiple machines? You can experiment with your own "server farm" which sits on a couple of dinner plates rather than a noisy 19" rack in your basement.
Machine learning - there are lots of interesting courses online for free and a ton of data you can use to train algorithms. Building a small Neural Net is easy[1] and can trigger a lot of wonder.
Arduinos/Embedded systems - have gotten much more approachable and nothing says fun like having your hat respond when someone says something around you :-). I love going to Maker Faire and just basking in all the creativity of imaginative ways people have applied computation to problems that don't need it.
Software defined radios - the idea of writing code which becomes decoded data at the output is quite fascinating to me and I've been having a lot of fun with it lately.
[1] http://www.wildml.com/2015/09/implementing-a-neural-network-...
Go (Google) has been on my list of languages to try for a while, I should use it in a project this weekend...