我觉得优秀的程序员与一般的程序员最大的区别在于创新与设计思维。
我看过一个视频(来源忘记了),讲的是 coder 和 programer 的差别。一辆卡车由于超过了桥的限高(超出很少),不能驶过,coder 二话不说 call 来直升机,把卡车运过了桥,卡车着陆的时候,由于碰撞有轻微的损伤; programer 托着下巴,想了几十分钟,然后放掉了车胎的一些气,车刚好能驶过桥,车完好无损。
但具有创新和设计思维能力的程序员会由于知识的限制,并不一定能成为优秀的程序员。
我认为优秀的程序员必备的条件是: 会思考、爱学习。