"How" is about yourself. "What" is about others. Both are important, but "How" ususally comes first. The best way to transition from "How" to "What" is to trust that you have enough "How" (you probably do) and talk to enough others to understand their "What". That oughta give you plenty to do.
In the software community the rule is "don't reinvent the wheel." It's almost frowned upon if you rewrite a library when a mature and stable option exists. While it is a good rule in general, novices should not be afraid to reinvent the wheel. When it is done for learning or practice, it's totally OK to make a wheel!
Yes! The best thing I've ever done to get better ("graduating" to the next level) was to rewrite something else. Sometimes because I thought it sucked, sometimes because it was so cool that I wanted to grok how it worked from the inside out, but never because it needed rewriting. I have never learned anything reading someone else's code. I have always learned tons rewriting it.
Don't get the notion that you need to have the best idea ever before you write a program either.
I never write anything in order to get ideas. I write stuff in order to fill my tool box with enough skills and wisdom so that when I do get an idea, I'll be able to run with it.
How many of you have been in the situation where you think "I don't know what to program?" How did you handle it? What advice would you give to others in that situation?
Just write something, anything. You probably won't know where this will take you, but rest assured, it will take you somewhere you never would have found by not writing it.
Great post! Thank you, OP.