一个好的程序员具备什么品质?

Cherishmily


虽然我也不敢说自己是一个好的程序员,但勉强也可以算个中等吧,至少超过 35 岁的年龄还没有失业;在我眼里,优秀的程序员需要具有这些品质:


对技术保持直接或间接的热情

好的程序员,一定会对技术报有热情;对技术的学习,一定不局限于“使用”这个层面,而是要了解原理,优缺点,适用场景,甚至要了解其中的源码,每学会一项新技术、了解一个知识点、或利用所学解决了一个问题,甚至是调通一段代码,都会发自内心的开心。

为什么要还加了一个词,“间接”的热情呢?

其实现实中不是每个程序员对技术学习有着“发自内心”的热情(这种热情需要长期保持,五年、十年、二十年...),所以要找到“间接”的热情。比如你喜欢做技术输出,喜欢享受自己被叫做“大神”的感觉,或者你追求高收入,希望拿到年薪100万+的总包...

总之,不管你是何种方式,总是要保持不断学习的动力。

良好的设计/架构能力

接到一个需求,你应该在很短的时间内有一个大概的判断:这个需求对于系统的改动量大还是小?有几种实现方案?是否需要其他系统配合?有些程序员甚至在心里已经要把代码修改点,一条一条地罗列出来了。

要达到这种程度,不仅要对项目非常数据,更重要的是要有设计和架构的能力,或者说是逻辑思维能力、抽象思维能力;如果一个程序员只能按照需求文档来开发,那么真的就变成了一个 Coder 了。

良好的沟通能力

现在很少有项目只需要一个程序员就可以实现,大部分情况都是一个团队、几个团队、甚至跨部门、跨公司的协作,所以对于程序员来说,沟通能力非常重要!

我曾经就是一个“脾气很大”的程序员,因为总觉得身边的同事能力怎么这么差,这么简单的东西怎么会不明白呢?那个阶段我很不乐于沟通,或者沟通的过程中态度很不好,直到我跳槽到了另外的公司,才发现不管到了什么地方,这种人都占了大多数,我始终保持这种态度,又能怎么样呢?

于是现在的我,乐于和他人沟通,虽然大多数时候依然心存鄙视,但是赶紧把工作干完才是我想要的结果。

优秀的程序员还应该具备良好的英文文档阅读能力、健康的体魄和浓密的发质,你觉得自己和优秀的程序员还差多少呢?

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。


会点代码的大叔


工作创业10多年的互联网IT老人,分享3点想法:

首先,要热爱编程



1、程序员是一个整体和机器打交道的工作,枯燥乏味,只有真正热爱编程的人,才能在这个行业如鱼得水。
2、热爱编程可以体现在,在代码质量上精益求精,在代码标准上书写规范,乐于解决各种疑难杂症,干过编程的都知道,程序问题各种各样,千奇百怪,没点经历过千锤百炼,真心搞不定。
3、把经验和遇到的问题总结备忘,好多程序的问题今天遇到了,可能明天还会遇到,所以要重视经验的积累,把问题总结好,下次遇到相同的问题可以快速找到解决方案,提高效率。这就是为啥程序员都爱到论坛里发帖,一是可以总结经验教训,二是下次遇到相同的问题,可以快速解决,提高效率。毕竟程序员做的工作都是要有时间节点的,做的越快绩效就会越好。

其次,尊重用户



1、好的程序员都会理解用户,更懂得理解需求。这点很难,也是很多程序员突破不了自己的关键,就是缺乏用户思维,单纯的从技术实现的角度考虑问题,没有考虑的用户的体验和便捷性。
2、好的程序员要尊重用户感受,写代码的时候也会深入思考用户体验,提出优化建议,只有懂得用户,才能给用户带来便捷,让用户更喜欢自己的产品。

最后,懂得协同



1、好的程序员知道如何融入团队,把团队的标准认真执行,无论从代码的可读性,还是注释的标准化等。
2、好的程序员知道如何理解需求,站到用户的角度思考问题,知道解决了这些需求,给用户带了什么价值,也是自己实现产品功能的最终价值。
关注@鬼谷子职场,以古鉴今,降低职场焦虑,提升职场核心竞争力!

鬼谷子职场


我在一家国企从事甲方IT工作,也接触过很多甲方和乙方的IT人员。很多人把程序员定义为coder,我觉得是不对的,其实程序员范围非常广,架构设计、项目管理、开发人员都可以广义定义为程序员。我姑且认为题目想问的是一个开发者要具备的品质。

专业性。我是一个java开发者,之前看过很多问题问java学多久可以从事企业级开发,我觉得,光懂一门语言仅仅是开发者的入门。一个好的开发者,需要很长时间的工作积累,对于java后端开发来说,会java够了吗?一个好的java开发,目前一些主流的MVC框架比如Spring家族需要熟悉,一些持久化框架比如Hibernate/Mybatis/Ibatis需要熟悉,对于一些面相互联网的开发,一些常用注册中心比如Kafka/Zookeeper需要熟悉,一些分布式框架比如dubbo要熟悉,一些常用的缓存技术Redis/Memcache需要熟悉…但是这么多技术,怎么可能全部熟悉呢?这就牵扯到第二个品质。

扎实的基础与快速学习能力。不是所有的时候,项目中使用的技术都是我们扎实掌握的技术,但是很多技术都是触类旁通的,很多技术实现当时不熟悉,但是如果相关的技术有过实践经历,其实上手起来也很快。

持续集成的意识。代码是开发者最基本的交付物,但是很多时候由于种种原因,导致开发者没有对自己的代码进行持续集成。我见过企业级的应用,一个class类写了几千行,所有的业务除了原子的增删改查服务全写在controller里面。我一直对这种写法嗤之以鼻,可扩展性呢?可复用性呢?我觉得一个好的开发者是要有持续集成的意识的,逐步优化自己的代码,就像一遍一遍的审核自己的文章一样去推敲。好的代码是艺术品。

编码规范性。上面几千行的类就是编码规范性的反面教材。还有个例子,曾经一个朋友跟我吐槽,他接到一个项目,所有对象命名全是拼音首字母缩写,为了便于管理,项目组还给了他一沓对象命名的表,没这张表谁也不知道某个对象是什么意思。规范对象命名只是编码规范的其中一个要求,阿里曾出过一本阿里编程规范,虽然不必要遵守里面的每一条要求,但是还是有很多值得去参考的。

逻辑思维能力。一位架构师曾经和我说过,这世上没有一个项目是真的是由于技术能力不够最后垮掉的,技术问题都可以补,但是逻辑能力不够,对项目的伤害是没办法弥补的。所有的选型、集成、调优都对开发者的逻辑能力有极大的要求,我们常常开玩笑某某的方案是曲线救国,就是说这个人绕不过某个弯导致采用了个更复杂的方案。

暂时想到的就这些…


SuperVer


作为一名从业多年的IT人,同时也是一名计算机专业的教育工作者,所以我来回答一下这个问题。

近些年来随着互联网的快速发展,程序员群体日渐庞大,程序员的岗位划分也越来越细,比如Web程序员、移动端程序员、大数据程序员等等,不同的程序员岗位有不同的任务要求,当然也需要程序员有不同的知识结构。从当前产业互联网发展的大背景来看,未来从事程序员岗位依然是不错的选择,发展前景也比较广阔。

对于一名优秀的程序员来说,除了要具有较强的开发能力之外,通常还具有以下几个特点:

第一:较强的沟通能力。按照历史经验来看,程序员的工作效率与其沟通交流能力有比较直接的关系,沟通能力强的程序员往往能够在较短的时间内完成开发任务,同时能够促进整个开发团队的开发进度。通常,沟通交流能力强的程序员往往也更容易实现岗位升级,以便于在一定程度上延长自身的职业生命周期。

第二:较强的资源整合能力。程序员的资源整合能力能够在很大程度上决定程序员的工作边界,资源整合能力越强的程序员往往能够承担更多的工作任务。程序员的资源整合能力主要体现在三个方面,其一是技术资源整合能力;其二是行业资源整合能力;其三是平台资源整合能力。

第三:较强的学习能力。IT行业的技术迭代速度是比较快的,对于程序员来说,只有具有较强的学习能力才能够不断获得技术进步,从而推动自己不断完成岗位升级。产业互联网时代是平台化时代,当前随着云计算、大数据、物联网、人工智能等平台的陆续推出,程序员自身的技术体系也需要技术更新,这就要求程序员具有较强的学习能力。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网、大数据、人工智能等方面的问题,或者是考研方面的问题,都可以在评论区留言,或者私信我!


IT人刘俊明


首先感叹一下大数据果然强大,居然能发现我是程序员。然后我对这个问题的看法如下:

一,思维严谨。

二,不浮躁。

三,热爱计算机或者重视计算机,当作主要事业

计算机知识很枯燥,没有二三这两条很难精深。有了精深的知识加上严谨的态度,就在程序大道铺足了道路


是贤哥


您好,很高兴回答您的问题

1.尽量不要写重复的代码,否则别人改的时候会非常痛苦。

2.不要大量嵌套,4、5层的if、else谁看谁头大。

3.持续学习,否则工作5年后和2年工作经验的年轻人没啥区别,不要成为35岁后被大家抛弃的程序员。

4.多运动、多喝水、多睡眠,可以有效缓解猝死、秃顶、肥胖。


竟诚4314


程序员是个充满乐趣的职业,但同时也是一个辛苦的职业,加班加点是日常工作,当然也要看项目需求。程序员要具备非常强的学习能力,因为随着科技的发展,技术的更新换代是非常快速的,需要具备专业的技术功底和较强的责任心,这是非常重要的一点,因为一行代码可能造成非常大的损失。同时程序员也是非常可爱和可敬的,互联网时代他们功不可没,致敬!


码农行者


我怀疑头条给我一个单片机硬件的人推荐这样的问题,虽然我们也有C语言代码,但是和你们完全不一样啊


生活会0美好


底层原理,代码规范,英语,数学。


分享到:


相關文章: