Programming is beyond learning the syntax
As a programmer, you should know about programming libraries you use in your applications. It doesn’t matter you are working on java, c#, scala, python etc. Lets say you are using HashMap in your application. If you don’t want to know how hash map works, you will never understand how it works internally? how hashing works? And hashing is one of the great approach in programming which can drastically improve performance in your application. Then you don’t know how they improved performance in new hash map(which basically use binary tree). That says you will never think of using hashing anywhere. This can be used to improve congestion at parking system in real world. It is very small and simple example. I don’t say just read collection or internal classes, do more than that. Programming is beyond learning the syntax. Read various algorithms(ex. graph, tree, search etc) , learn about various data structures. When you learn these things, you will be able to relate real world problems with your learning and would be able to come up with the best solution. Now How learning these makes you a great programmer ?
As a programmer, you would not just want to write solution to given problem. You would want to write best solution. It should give you best performance in various cases. Now performance depends on memory management, data structures, algorithms, concurrency, data format, IO operations. If you analyse these all are inter related. We have few algorithms where we need to use certain data structure, that directly associated with memory. We need to handle concurrency as well in our code. So you learn a lot when you read about various algorithms, data structures, behaviour on various inputs, different data formats etc. And you having good understanding of these, you can write best code. Learning programming would not be very challenging for you after this.
All the best !!!