我在一家国企从事甲方IT工作,也接触过很多甲方和乙方的IT人员。很多人把程序员定义为coder,我觉得是不对的,其实程序员范围非常广,架构设计、项目管理、开发人员都可以广义定义为程序员。我姑且认为题目想问的是一个开发者要具备的品质。
专业性。我是一个java开发者,之前看过很多问题问java学多久可以从事企业级开发,我觉得,光懂一门语言仅仅是开发者的入门。一个好的开发者,需要很长时间的工作积累,对于java后端开发来说,会java够了吗?一个好的java开发,目前一些主流的MVC框架比如Spring家族需要熟悉,一些持久化框架比如Hibernate/Mybatis/Ibatis需要熟悉,对于一些面相互联网的开发,一些常用注册中心比如Kafka/Zookeeper需要熟悉,一些分布式框架比如dubbo要熟悉,一些常用的缓存技术Redis/Memcache需要熟悉…但是这么多技术,怎么可能全部熟悉呢?这就牵扯到第二个品质。
扎实的基础与快速学习能力。不是所有的时候,项目中使用的技术都是我们扎实掌握的技术,但是很多技术都是触类旁通的,很多技术实现当时不熟悉,但是如果相关的技术有过实践经历,其实上手起来也很快。
持续集成的意识。代码是开发者最基本的交付物,但是很多时候由于种种原因,导致开发者没有对自己的代码进行持续集成。我见过企业级的应用,一个class类写了几千行,所有的业务除了原子的增删改查服务全写在controller里面。我一直对这种写法嗤之以鼻,可扩展性呢?可复用性呢?我觉得一个好的开发者是要有持续集成的意识的,逐步优化自己的代码,就像一遍一遍的审核自己的文章一样去推敲。好的代码是艺术品。
编码规范性。上面几千行的类就是编码规范性的反面教材。还有个例子,曾经一个朋友跟我吐槽,他接到一个项目,所有对象命名全是拼音首字母缩写,为了便于管理,项目组还给了他一沓对象命名的表,没这张表谁也不知道某个对象是什么意思。规范对象命名只是编码规范的其中一个要求,阿里曾出过一本阿里编程规范,虽然不必要遵守里面的每一条要求,但是还是有很多值得去参考的。
逻辑思维能力。一位架构师曾经和我说过,这世上没有一个项目是真的是由于技术能力不够最后垮掉的,技术问题都可以补,但是逻辑能力不够,对项目的伤害是没办法弥补的。所有的选型、集成、调优都对开发者的逻辑能力有极大的要求,我们常常开玩笑某某的方案是曲线救国,就是说这个人绕不过某个弯导致采用了个更复杂的方案。
暂时想到的就这些…