A friend of mine put it very well, that being a good developer comes down to having good taste.
There are always many ways to do things. Do I store plaintext passwords, hash, salt, split in the database, across multiple hosts, etc? Do I make my application multithreaded or just block the main thread waiting for network access?
Having taste with programming means not compromising, not doing something because its the quick solution, but writing high quality, well planned and executed code that is coherent for users, other developers, or others who interact with your product.
I'm a computer science student, and on my course we are all taught how to code, but it takes real experience with good mentors to leane the tasteful way to code.