代码精进之路
范学雷
前 Oracle 首席软件工程师,Java SE 安全组成员,OpenJDK 评审成员
38234 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
结束语 (1讲)
代码精进之路
15
15
1.0x
00:00/00:00
登录|注册

03 | 优秀程序员的六个关键特质

学会选择
提高效率和用好时间
高效的时间管理
人际关系和影响力
领导型的人
团队合作的重要性
坦诚面对问题
懂得妥协和选择
敏锐观察产品的关键问题
预设风险防范措施
发现编程语言和工具的局限
深入理解问题
使用合适的工具
理解问题的核心价值
多语言使用者
熟练操控编程语言
时间管理者
可以依赖的伙伴
沉静的前行者
发现关键的问题
解决现实的问题
掌握一门编程语言
优秀程序员的六个关键特质

该思维导图由 AI 生成,仅供参考

上一讲我们从“五道关卡”的角度讨论了如何写出优秀代码这个话题。对我们每个程序员个体来说,其实第一道“程序员”关卡最重要。没有优秀的程序员,就没有优秀的代码。那么,什么样的程序员才是优秀的程序员呢?
如果去问一个程序员,得到的答案有可能是,“写的一手好代码,做过几个大项目,设计、编程样样不在话下”。如果去问程序员的同学,得到的答案有可能是,“刚毕业就去了大厂,中秋节发的月饼羡慕死个人” 。如果去问程序员的同事,得到的答案有可能是,“人挺好,干活挺快的” 。如果去问 HR,得到的答案有可能是“省钱、出活”。
你看,这些答案都没什么毛病,各有各的道理。你的答案是怎样的呢?我自己工作中见过特别多优秀的程序员,从他们身上发现了不少共性的特质,我总结为以下六项,下面一一给你介绍。

掌握一门编程语言

第一点很重要,优秀的程序员需要写的一手好代码,再简单来说,最起码需要能够熟练操控一门编程语言。
我们都会使用筷子,吃饭的时候,我们不需要有意识地控制着筷子的力度、开合和角度,也能准确地使用它。这个使用筷子的效率,是我们小时候长期练习的结果。每个人拿筷子的方法可能会有些差异,但是都不影响我们现在精准地、高效地使用筷子。
编写程序也是这样。熟练了之后,很多语法、语句在我们编写程序的时候,会下意识地就流露出来。如果我们设计一个线程类,下面的代码里,我觉得至少 class 和 extends 这两个关键字的使用是不需要大脑有意识地参与的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

优秀程序员的六大关键特质包括熟练掌握编程语言、具备内外双修的能力、善于发现关键问题、沉静的前行者、沉着冷静的态度以及高效的时间管理能力。此外,优秀程序员还需要成为团队中可以依赖的伙伴,具备领导型的特质,以及良好的软技能。文章强调了软技能对于程序员的重要性,如影响力和人际关系的影响,以及时间管理的重要性。优秀程序员需要在团队中不断成长,同时也要学会高效地管理时间,将精力投入到最有价值的事情上。文章提供了一个自测题,鼓励读者对照自身情况,找出自己的优势和需要改进的地方。整体而言,本文强调了优秀程序员需要具备的技术和软技能,以及如何在团队中成长和提升自己。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《代码精进之路》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • Sisyphus235
    程序语言是人和机器的沟通语言,和汉语英语等自然语言的工具属性是一致的。不同的是机器更容易被理解,确定性更强,我们也更可能精确理解二进制背后的逻辑,而与人沟通的不确定性更强,每个人都不同。前者是硬技能,后者是软技能。 沟通是工作最重要的部分,与机器沟通先存储大量不变的知识再结合实际任务处理,与人沟通要理解对方的特点和当下的心境再共同完成任务。

    作者回复: 这个角度很赞👍

    2019-01-09
    38
  • pyhhou
    感觉自己的硬实力还是不太够,然后时间分配上也不知如何是好,小公司没有一个很好的技术框架,也没有经验丰富的前辈加以指导,对公司整体的业务也不太清楚只清楚自己手头的任务,而且自己的任务的需求一直都在变化,太多的技术都觉得可能需要用上,但是学起来却不知从何下手,有些时候知道需求,但是从来没做过类似的东西,不知道每一步具体该怎么实现会遇到哪些问题,写代码之前的学习时间都比任何一个环节都要多,学完了还得思考怎么去用,毕业工作不到一年,自己一直处在这种迷茫的阶段,望老师指点

    作者回复: 我们都是这么过来的。先从手头的小问题开始,一点一点的把学到的用上。 比如说,我们以后讲标识符的命名,学完了,你就看看手头的代码,命名是不是合理的,能不能改进。 在后面,我们还会讲这么编写安全的代码,比如检查外部数据的有效性,也是可以立即用上的。 每一篇,我们都有一个检查清单,你也可以对照对照自己的代码,看看自己什么地方做的好,傲娇一下;什么地方,还可以更好,改进一点。 不用着急,每次进步一点点,很快就变成优秀的人了。 最怕的是,停下来,没好奇心了,没怀疑精神了。

    2019-01-09
    23
  • beiler
    您好,请问会讲一下包的名字划分解决方案和模块归类的方法吗?

    作者回复: 这个问题没有讲到。你可以参考JDK的包的命名和模块归类。包名可以使用倒置的域名加模块名,比如:java.net, java.lang, com.sun.net, sun.security.ssl。模块的归类大原则是按照功能划分,工具类的,放在util下,比如java.util。需要注意的是,公开接口和内部实现,尽量使用不同的包,这样便于管理。比如,javax.net.ssl是公开接口,sun.security.ssl是内部实现。

    2019-02-22
    6
  • 堵车
    这篇文章讲到优秀程序员的对工作的选择。我记得前两年,我的工作就是不断地写业务,改代码,满足领导的奇思妙想。称之为小步快跑,多版本试验,快速迭代。两年时间里,没有沉淀任何东西。所以这样的环境不适合成为优秀的程序员吧?

    作者回复: 环境很重要,我觉得更重要的,还是自己要有改进环境的意识。小公司的存在很多很多的问题,可是这些问题,也正是我们的机会。把问题解决掉,就是自己脱颖而出的机会。 有时候,我们常说一句话,就是,每一次危机都不应该浪费。 什么意思呢,就是危机虽然让人头疼,但是危机来的时候,就是我们打怪升级的时候,就是我们学习应对危机的时候。 解决小公司的问题也是这样的。 如果刚毕业,我们就从解决一些小问题开始,比如怎么把代码写的更漂亮,然后琢磨琢磨让其他的人代码也漂亮,然后再琢磨琢磨让整个团队的代码更漂亮,然后再琢磨琢磨让整个公司的代码都漂亮。然后,再解决更大的问题。

    2019-01-12
    5
  • 轻歌赋
    才参加实习,公司比较小,没有质量管理,是的,没有。完全是代码能跑就行。来这已经3个月了,虽然项目代码都能写,而且时不时还能使用一些新学到的jdk的新工具包写代码,但是仍然感觉对自己写的代码的稳定性不敢保证,虽然很少错,可是还是很担心。想问问老师,如何在身边没有其他评审的情况下,提供一些自己检查代码逻辑bug的方法呢?而且对业务分析不熟悉,经常会出现建表少了某个字段的情况,请问老师有没有什么相对系统化的设计方面的知识可以学习呢?

    作者回复: 每一篇结束,我们都会总结一个检查清单,你可以使用这三个清单检查代码。 有了三个检查清单作为基础,你可以扩展这个清单,遇到好的经验就加上去,过上一段时间,你就能积累大量的好习惯。 另外,认真检查编译器的警告和IDE的警告,这些警告,一般都是验证了的编码经验,你消除了警告,就学到了新东西。 编码规范,也有IDE插件,比如阿里巴巴Java编码指南的插件。找找看有没有你喜欢的插件。 专栏的小伙伴们,能不能帮着推荐些设计的书籍?

    2019-01-11
    4
  • 秦凯
    “解决现实的问题“的观点特别认同,个人也认为程序员应该具备的是用计算机解决现实世界问题的思维,将现实世界的问题转化为计算机可解决的具体方案。而将方案落地的过程应该是,使用计算机、编程语言、数据结构与算法、协议等底层抽象工具封装成一个具体的用户可使用的工具的过程,这个具体的工具本质上是对用户问题解决方案的一个封装。

    作者回复: 赞! 要盯着用户有效需求。 我们后面还有一小节讨论需求问题。

    2019-01-10
    4
  • Dream
    优秀的程序员,还需要一个优秀的上司,我习惯每次在编码前把思路理顺,发现潜在的问题和风险,其实正在编码可能占用不到工期三分之一的时间,但是目前领导一看前期根本没在编码,就觉得比较闲,拼命的压缩工期和增加任务,有点疲倦了

    作者回复: 是的,团队的氛围很重要。😄过程而不是目标导向的上司太操心。

    2019-01-10
    3
  • Neal
    要做自己才能做的事情真是醍醐灌顶,项目中总是前后端兼顾,导致自己后台进度一直很慢,很累,现在我终于放下前端,专心于后端的迁移工作上,渐渐发现,前端没了我也没什么要紧的。

    作者回复: 我自己花了很多年,才懂的。

    2019-03-10
    2
  • 刘滨涛(陆逾)
    优秀的程序员能在团队里正能量影响他人,协同他人一起创造价值。不仅仅解决业务需求,也能去创造或者开发一些对公众有益的东西。能力越大,责任也就越大。

    作者回复: 责任越大,意味着大家越需要我们。 这就是竞争力的一部分,对吧。

    2019-01-17
    2
  • 小峰
    突然发现我师傅就是一个这样的人。

    作者回复: 👍厉害了,你的师傅!

    2019-01-12
    2
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部