If you wanted to step up from small pieces of code, you could get a book like this and write all sorts of useful code.
(That’s a great book, by the way.)
However there is a very wide spectrum for programming, and some people are very advanced in the form of programming they do. That should also be acknowledged. The work I do automating tasks by writing Python scripts is very different than the work done by people writing operating systems or other difficult tasks.
I like to think of it like running. If you run, you are a runner. End of story. If you work at running, you can enter a big race like the New York City Marathon and you will be with a range of runners from the very best in the world to people who will finish many hours later. The first and the last are all marathon runners, and the last are as real a runner as the first.
Same with programming. If you program, you are a programmer. You are as real a programmer as the person writing new code for the Linux operating system. Just like you can always get better as a runner, you can always get better as a programmer. It just depends on what you want to put into it and what you want to get out of it.