What are the basic skills required to be a good programmer?
When this question came up on Quora.com, lots of good and useful answers were given, but they all seemed to be external answers. For me, with more than 60 years of programming experience, the one thing that made me a better programmer than most was my ability and willingness to examine myself critically and do something about my shortcomings. And, after 60 years, I'm still doing that.
I also examine my strengths (longcomings?) because I know that my greatest strengths can quickly become my greatest weaknesses. I've watched many programmers who examine themselves critically, but then work to improve their greatest strengths, to the exclusion of their weaknesses. That strategy takes them a certain distance, but the nature of computers is to highlight your greatest weaknesses as a programmer.
Computers are like mirrors of your mind that brightly reflect all your poorest thinking. To become a better programmer, you have to look in that mirror with clear eyes and see what it's telling you about yourself. Armed with that information, you can then select the most useful external things to work on. Those things will be different for you than for anyone else because your shortcomings and strengths will be unique to you, so advice from others will often be off target.