If you want to be good (not even great) the learning and growing is a life time process.
I am a definite NOVICE programmer....I learned FORTRAN, BASIC ans PASCAL back in the 1980s while in high school and college (aerospace engineering degree), and then I did some rudimentary MATLAB and MATHEMATICA programming in biomedical engineering grad school, all programming came to a screeching halt when I started my 3rd year of medical school in 1996 and all of my time was spent working at the hospital and memorizing medical trivia just to survive.
But now, as an internist in his late 40s with an 8-year-old daughter who loves math and science, I am FASCINATED by what computers can do and what computer programming has become. What used to be a handful of common languages that people used has turned into dozens of commonly used languages (and hundreds of less commonly used languages) for purposes ranging from simple "Hour of Code" projects where you get BB-8 to roll around the desert and pick up scrap metal to full iOS and Mac OS X application development.
I'm learning Python right now, mostly because I asked around like the OP about what I should learn first, and people usually told me to learn Python, Ruby or JavaScript FIRST, then move on to C and/or Java, and THEN to either Swift or Objective C. And the more I've read on this and other forums, the more online courses I've taken, the more books I've read and the more tutorials I've done, the more I realize that bjet767 is absolutely correct...like all disciplines, it's a lifelong learning process and the people who are great are the ones who are fully committed to learning and practicing all they can. Sure, you can probably learn to COPY what other people are doing and apply it to your own CLONE of some other simplistic app, but are you really going to ever make anything great doing that? Also, will you ever be able to solve any original problems if you only learn by mimicking other programmers? It seems to me that the trick is to devote at least an hour or two per day, EVERY DAY, to learning and practicing programming. Master one language as much as you can (I've chosen Python), to the point where you can solve most programming problems you encounter. THEN, when you feel you've achieved relative mastery, move forward and try to learn 3 more things: XCode, Swift and Objective-C. But if you look for short cuts and ways to quit corners, I think you will only be cheating yourself and your knowledge and understanding will suffer. Study it like you'll be taking some kind of licensure exam at the end...then you will UNDERSTAND it, and that's really what this whole thing is all about.
Sorry for the stream of consciousness, but bjet767's comment really struck a chord with me, as I believe it's true for every discipline, not just programming.