1.技术好,懂得原理,作为一个好的程序员,首先要有扎实的基本功,这里说的基本功不是说去背一些面试宝典,去看一些视频,去简单地看一些博客,这样就能成为一个大牛,我并不是说上述方法不对,只是希望知识有一个长期沉淀和积累的过程
2.学到的知识有过运用,实战上的运用,举例来说java的jvm调优,python的算法实际使用,而不是永远的纸上谈兵,这样是没有意义的
3.做事认真负责,踏实,愿意闭环自己负责的工作,有些程序员天赋很好,但是做事不踏实,他做出来的东西问题很多,和他合作的人,怨声载道,这样的人也不是优秀程序员,多年以后的我,认为这一点很重要,甚至最重要
4.一个愿意持续学习的人,不管你是做管理的程序员,还是做专家的程序员,一个持续学习的过程是必不可少的,现在技术日新月异,新的语言,新的特性也是层出不穷,需要大家不断地学习这样才能适应发展
5.会拍马屁,需要了解客户需要什么,领导需要什么,很多符合上述所有条件的程序员都可能无法得到重用,可能得原因就是技术宅清高,不喜欢溜须拍马,阿谀奉承,麻烦你不要不屑,很多p8,p9的程序员并不是比你牛逼,而是真的愿意去拍马屁,不管你承认不承认,这就是事实,当然,这也是优秀程序员的定义
再说一下您的提问,符合上述前四点,的程序员,一线大厂比重还是很大的,估计3:1或者4:1,毕竟大厂的程序员学历不错,学习能力都很好,接受新的知识能力都很强,也有很多人负责认真,所以这个比例不低,一线大厂留下来学历稍微低一点的程序员,肯定也有他的过人之处,否则他也活不下来,小厂的比例就会下降很多
再说符合最后一点的程序员那就更加的少了,别觉得我的回答让你恶心,事实上,很多上位的程序员首先都是符合上述四点,再会拍马屁,就会更加容易上位