Good programmers know what to write. Great ones know what to rewrite (and reuse)
To solve an interesting problem, start by finding a problem that is interesting to you.
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter.
Release early. Release often. And listen to your customers.
Smart data structures and dumb code works a lot better than the other way around.
Equally, the Internet interprets attempts at proprietary control as threats and mobilizes to defeat them.