0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

优秀程序员通常都有这些特质

工程师人生 来源:简书网 作者:简明PRO 2019-10-30 15:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

引子

什么样的程序员才是优秀的程序员呢?

如果去问一个程序员,答案可能是:写的一手好代码,做过几个大项目,设计、编程样样强。

如果去问程序员的同事,答案可能是:人挺好的,干活挺快的。

如果去问HR,答案可能是:省钱,出活。

关键特质

1. 掌握一门编程语言

最基本能力要素

第一点最重要,优秀的程序员必须先是一名合格的程序员,最起码需要能够熟练操控一门编程语言,进而才可能写的一手好代码。

一门熟练再熟练

掌握一门编程语言,必须是熟练再熟练,很多语法、语句在我们编程的时候,会下意识的奔涌出来。

对于编程语言,我们了解的越多,熟知的招式就越多,可选择的范围就越大,我们就有更多的活动空间和解决问题的办法。

多语言触类旁通

编程语言,基本上都是相通的。

掌握了第一门编程语言之后,第二门语言学起来就快很多,第三门就更快。

现在我们几乎都是多语言使用者,但一定要先精通一门语言,达到像用筷子那样熟练的程度。

2. 解决现实的问题

用代码表达解决方案

代码是要解决具体的问题的,我们需要通过编程语言把解决问题的办法和思路表达出来。

配置自己的工具箱

要解决具体的问题,除了编程语言,还需要更多工具。

如果做前端,需要理解HTML和浏览器

如果做后端,需要掌握数据库和操作系统

如果做云计算,需要掌握Docker等等

理解问题的核心价值

有了工具还不够,优秀的程序员还需要深入理解问题,懂得问题的核心价值。

只有理解了问题,看到了解决问题的价值,我们才能真正解决好问题,并从中获得满满的成就感。

我们一定要记住,程序员的存在不是为了写代码,而是为了解决问题,实现现实的价值。

打磨优秀作品的工匠

真正的作品,都带着我们对于现实问题的理解。

而打磨一个这样的作品,需要缜密的逻辑、突破创新和贯彻执行。通过合适的工具,把简单的、一行一行的代码,耐心的粘合、打磨成有些的作品。

思维模式不断进阶

如果说各式各样的工具是外家功夫,那么思维模式可以算是内功。

优秀的程序员,肯定是内外兼修。

如果一个程序员,可以熟练使用工具,有清晰的解决问题的思路,能明晰的传达产品价值,那么他编写代码就不存在什么巨大的困难了。

3. 发现关键的问题

能够发现关键的问题,是一个好程序员和优秀程序员的分水岭。

甄选语言和工具

优秀的程序员,能够发现一门编程语言的缺陷,一个顺手工具的局限。

所以,他知道该怎么选择最合适的工具,该怎么避免不必要的麻烦。

防范风险和设定边界

优秀的程序员,能够发现解决方案背后的妥协和风险。

所以,他可以预设风险防范措施,设置软件的适用边界。

识别潜在产品需求

优秀的程序员,能够敏锐地观察到产品的关键问题,或者客户未被满足的需求。

所以,他可以推动产品持续地进步和演化。

从被动到主动做事

能够发现关键的问题,意味着我们可以从一个被动的做事情的程序员,升级为一个主动找事情的程序员。

能够发现关键的问题,往往需要我们对一个领域有很深入的研究和深厚的积累,并且对新鲜事物保持充分的好奇心和求知欲。

跨越到优秀程序员

掌握一门编程语言,解决现实的问题,能发现关键的问题,做到这三点,你就已经是一名优秀的程序员了。如果说优秀程序员有一个评价标准的话,这三条一定是硬性指标,接下来再介绍三条软性指标。

4. 沉静的前行者

懂得妥协和平衡

首先,优秀的程序员,一定是懂得妥协,懂得选择,一步一步把事情沉静地朝前推动的人。

如果真的较起真来,每一行代码,就像孔乙己的茴香豆,都有不止四样的写法。

可是,最终的程序,只能选择唯一的一种。优秀的程序员都有在不断平衡、不断妥协中推动事物前行的能力和修为。

警惕现实中完美主义

如果一个人说要一个完美的代码、完美的算法,完美的程序、完美的产品,我立刻就会非常紧张。

完美是不存在的,所以我们才追求完美。

对完美的过分追求,可能是一个代价高昂,收获甚小的行为。

很多时候,我们不需要完美的东西。

如果我只是想看看泰山山顶的日出,你就不要问我是爬上去的还是乘索道上去的了。

对完美的理解,也是千差万别的。如果你的完美和我的完美发生碰撞,一定有一方需要妥协,我们才可以共同迈出下一步。

而且,完美也可能意味着不承认缺陷,不承认未知。

这样,我们可能在心理上就不会对代码的未知风险做出充分的预判,留出足够的安全缓冲空间。

坦然面对错误

我们写的每一行代码,都可能存在问题。

有时候,我发现别人的代码的问题;有时候,别人发现我的代码的问题。

我们最后都会明白,要坦诚地面对别人的问题,也要坦然地面对自己的问题。

在解决问题和帮助别人解决问题中,我们把一个产品变得越来越好,问题越来越少。

5. 可以依赖的伙伴

其次,优秀的程序员是他人可以依赖的伙伴。

优秀的团队合作者

如果我们把软件开发看成一个循环的流水线,参与其中的每个人,都要接受来自上一级的输入内容,在当前环节和同事合作,创造面向下一级的输出内容。

优秀的程序员,知道团队合作的重要性,是一个优秀的团队成员。

他在团队中能够快速学习、成长,变得越来越优秀,也能够帮助其他团队成员变得越来越优秀。

成为领导型的人

优秀的程序员是一个领导型的人。

他能够倾听,持续地获取他人的优秀想法,以及不同的意见。

他能够表达,准确地传递自己的想法,恰当地陈述自己的意见。

他是一个给予者,给别人尊重,给别人启发,给别人指导,给别人施展才华的空间。

他是一个索取者,需要获得尊重,需要获得支持,需要持续学习,需要一个自主决策的空间。

他能够应对压力,承担责任,积极主动,大部分时候保持克制和冷静,偶尔也会表达愤怒。

他具有一定的影响力,以及良好的人际关系,能够和各种类型的人相处,能够引发反对意见,但是又不损害人际关系。

他知道什么时候可以妥协,什么时候应该坚持。

上面的这些,通常称为“软技能”。

软硬技能并重

如果说,编程语言、花样工具、逻辑思维、解决问题这些“硬技能”可以决定我们的起点的话,影响力、人际关系这些“软技能”通常影响着我们可以到达的高度。

因为,无论我们是加入他人的团队,或者组建自己的团队,我们只有在团队中才能变得越来越出色,做的事情越来越重要。

所以,我们需要成为优秀的团队成员,接受影响,也影响他人。

6. 时间管理者

最后我想和你分享的一点是,优秀的程序员是高效的时间管理者。

时间面前人人平等

时间总是我们最大的障碍,优秀的程序员更是如此。

没完没了的会议,没完没了的讨论,没完没了的学习,没完没了的需求,没完没了的 bug,时间拦住了我们的雄心壮志和大好宏图。

时间面前,人人平等,没有人一天的时间比别人多一秒。

优秀的程序员会更好地管理时间,或者提高效率,或者用好时间。

时间用在对的地方

你有没有听说过这样的故事?

一家工厂的发动机坏了,请了很多人都没有修好。无奈,请了一位工程师,他听了听声音,在发动机上画了一道线,说:“打开,把线圈拆了”。果然,发动机就修好了。

不管这个小故事是真的也好,假的也好,类似的事情在软件公司时时刻刻都在发生。

有经验的程序员三分钟就能发现的问题,外行可能需要折腾好几天。持续地提高我们的硬技能和软技能,可以让我们做事情更快更好。

坚持把时间用在对的地方,用在价值更大的地方。事情总是做不完的。

一般的工程师,都有一种打破砂锅问到底的精气神,这是好事。

可是,这顺便带来了一点点的副作用,很多人有一点点小小的强迫症,很多事情,喜欢自己动手整个清楚明白。

可是,事情又特别多,很多事情根本就顾不上。怎么办呢?

做只有你才能做的事

是的,有很多事情,只有你可以做,只有你做得最快最好。

其他的同事也是一样的,有很多事情,只有他们能做,只有他们做得最快最好。

选择最合适的人做最合适的事,这不仅是领导的工作分配,也可以是我们自己的协商选择。

做好时间清单的选择

事情做不完,就需要面临选择。

要坚持做需要做的事情。

不需要的、不紧急的、价值不大的,我们可以暂时搁置起来。

一个人,能做的事情是有限的,能把最重要的事情最好,就已经很了不起了。

学会选择,是我们进阶道路上的一个必修课。

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30785
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    软通国际亮相2025沙中开源与AI科技峰会

    2025年11月11日,由沙特程序员协会(parmg)主办的"2025沙中开源与AI科技峰会"在利雅得盛大启幕。
    的头像 发表于 11-14 17:45 1282次阅读

    Wincc7.5工程师站与操作站配置方法

    在博途里Wincc或许有这两个概念及定义,但是在Wincc里面没有这个概念和定义,有的只是“多用户项目”和“客户机项目”这两个概念。也没有向网上说的可以直接通过所谓的“工程师站”可以向“操作
    的头像 发表于 11-14 16:46 1732次阅读
    Wincc7.5工程师站与操作<b class='flag-5'>员</b>站配置方法

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 420次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 473次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    AI技术在工程设计的应用

    在不需要硬件交互的纯软件项目中,ChatGPT和Gemini等大语言模型(LLM)可以帮助程序员以前所未有的速度加速开发进程。这种辅助通常包括在开发人员编写代码时提供补全建议,或在排查错误和语法错误时提供故障排除建议——这些都是
    的头像 发表于 09-23 16:21 551次阅读
    AI技术在工程设计的应用

    户外网线需要具备什么特质

    户外网线由于长期暴露在复杂多变的自然环境中,需要具备一系列特质来确保网络的稳定性和可靠性,以下是户外网线应具备的主要特质: 一、物理防护性能 耐候性: 抗紫外线:户外网线需具备抗紫外线能力,防止长期
    的头像 发表于 06-18 10:10 768次阅读

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法论的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序员开发
    发表于 05-13 16:45

    计算机网络排错思路总结

    明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。
    的头像 发表于 04-01 17:32 646次阅读
    计算机网络排错思路总结

    如何在 树莓派 上编写和运行 C 语言程序

    ,一本很好的书是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。这本书对经验丰富的程序员和想学习C语
    的头像 发表于 03-25 09:28 936次阅读
    如何在 树莓派 上编写和运行 C 语言<b class='flag-5'>程序</b>?

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1523次阅读
    零基础入门:如何在树莓派上编写和运行Python<b class='flag-5'>程序</b>?

    阿里云升级通义灵码AI程序员,全面上线

    和JetBrains IDEs两大主流开发环境,这意味着开发者可以在自己熟悉的开发平台上,无缝接入并使用这款AI工具。 除了支持主流开发环境外,通义灵码AI程序员还引入了多项新特性,如多文件代码修改和上下文感知等。这些特性使得AI能够更好地理解开发者的意图和需
    的头像 发表于 01-09 11:16 956次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    学习硬件的第一节课:学习读懂原理图

    常重要的。无论硬件设计得多么复杂,不管有多少设计真正硬件的实践经验,这些图和符号都是迅速有效地理解复杂硬件设计的关键。它们还包含了与嵌入式程序员设计和硬件兼容的件的相关信息,并教会程序员如何成功地与硬件工程师沟通软
    的头像 发表于 12-16 16:04 3665次阅读
    学习硬件的第一节课:学习读懂原理图

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册