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

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

3天内不再提示

如何成为一名专业的程序员

工程师人生 来源:工程师吴畏 2018-11-30 10:21 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

“专业”,在百科里有下面这三种解释:

学校里的学科

生产部门里的业务部门

有知识修养的专门职业者;职业画家[演员等],职业选手;内行,专家

标题中的“专业”,指的是第三种解释。请注意这个词——“有知识修养”,有知识还不够,还要有修养。

职场里各行各业,唯有“专业人士”,才能够受人尊重;人们寻找帮助时,首先想到的也是对应领域里的“专业人士”。我们说一个医生很专业,除了他医术精湛之外,还有他心系患者、尽心尽责的医德,同样的,对于程序员,我们除了要有犀利的技术之外,还要有对应的职业修养。

业余选手 vs 专业主义

面对同样一件事情,业余程序员(Amateurs)和专业程序员(Majors)往往有不同表现:

1)看到烂代码时

A:WTF!!! 这代码谁写的!

M:让我来重构它

2)项目进度紧张

A:哎,时间那么紧,考虑不了那么多了,先把功能做了再说

M:我得找经理商量,这么短时间是不可能把这个功能完全做好的

3)被同事打断时

A:要么马上被从工作中带走,“啊,怎么啦”,要么很不耐烦,“少烦我,没看我这正忙么”

M:“稍等一下哈…”,然后记下当前工作的上下文信息,让自己重新回到工作时,能尽快进入状态

4)业余时间

A:终于有时间好好睡个懒觉了

M:终于有时间学习新知识了

……

最近阅读了一些关于程序员职业素养的书籍,发现专业的程序员,大都有下面这些特质:

主动学习

专业的程序员懂得不断精进自己的专业技能,抽出时间来学习。就像《欢乐颂》里的赵医生一样,带上你的Mac,找一家安静的咖啡厅,待上一个上午,看最新的医学文献。程序员也要这样做,必须不断地更新自己的技能,提高自己的“基线”。

这里的基线是一个很重要的概念,用吴军老师的话来说就是:

每个人的基线都不一样,民间科学家的基线,决定了他们就算奋斗一生,最多也只能到达中科院科学家的基线。

我们只有通过不断地学习,才能用知识把自己垫高,站的更高,才能看的更远。

个人品牌意识

《软技能——代码之外的生存指南》里,作者提到,程序员要学会自我营销,在业界打造自己的个人品牌。而在工作中也一样,对公司和同事来说,你的名字就是一个品牌。别人一提到你的名字,就会想到这人的代码写的怎么样、看他的代码累不累、实现的功能质量怎么样、Bug多不多…

专业的程序员会努力打造和维持自己的个人品牌,在同事心目中树立一个品牌的形象。

代码洁癖

专业的程序员不会仅仅满足于实现功能,他们还会主动优化自己的代码。

他们会闻到自己代码里的坏味道,对变量命名、函数、注释等进行重构优化。

专业的程序员遵守童子军军规——“让营地比你来时更干净”,他们知道“破窗”的危害,他们有代码洁癖。

不畏惧任何代码

专业的程序员在开发之前,会阅读相关模块的代码,因为他们知道,文档会撒谎,但是代码不会。不管代码写的多难看,他们都知道,那才是反映系统真实运作机制的“文档”。

如果代码写的非常一般,他们会对其进行一小步一小步的重构,每次重构之后都会运行单元测试,以确保自己的改动没有对原先功能造成影响。

如果这个模块之前没有足够的单元测试,那么在开始重构之前,专业的程序员会主动补充测试用例,因为他们知道,如果自己连测试用例都写不出来,就根本谈不上理解了这个模块,也就根本没资格去动这块代码。

如果代码根本无法正常运行,在很多情形下都有Bug,那么专业的程序员不会浪费时间去重构,他们会选择重写。

重构,是在不改变代码外在行为的前提下,对代码作出修改,以改进程序的内部结构。 —— 《重构》,Martin Fowler

在这里墙裂推荐大家,把《重构》这本书放在自己座位旁边,你不必一下子把这本厚厚的“重构字典”看完,因为它就是一本字典,在你需要重构的时候,去里面检索就好,有兴趣的同学可以前去看看我对怎么使用这本书的一些感受。

敢于说不

专业的程序员懂得主动掌控自己的工作,如果有一个需求最早也要在周五才能完全,但是领导要求必须在周三之前,他们不会说,“好,我尽量”,因为那不仅是在欺骗自己,还是在欺骗经理,最后伤害的是整个团队。他们会跟经理商量,如果要在周三之前完成,哪些功能是无法实现的,让经理作出取舍。

与此相反,不专业的程序员,往往会屈服于经理的权威,最终交付一个代码质量极差、还带有很多Bug的功能。

《程序员的思维修炼》中提到了德雷福斯模型,这个模型对“新手”的定义就是——只会按照指令列表做事,如果你不懂得说不。把别人交给你的每一件事都接下来,那你和“新手”也没什么区别了。

不要以为你说“不”会辜负了经理的期望,相反,答应一件自己完成不了的事情才是对经理最大的辜负。学会说不,恰恰是你靠谱的表现。人们都喜欢真实的人,经理也不例外。

谨慎承诺 言出必行

专业的程序员不会轻易许下承诺,如果承诺,那必定是他自己能够完全掌握的事情,而不是承诺需要依赖他人的事情。

比如你的模块需要依赖Peter的模块,你就不能承诺既把自己的模块开发完成,还可以跟Peter的模块完成对接,因为对接可以完成地前提是Peter能够按时交付他的模块,而这不是你能控制的。你能承诺的只有跟Peter一起坐下来,讨论一下对接的方案,然后每天互相汇报一次各自的开发进度。

专业的程序员还懂得及时汇报风险。有些事情确实很难预测,这时候你就要去调整别人对你的预期,尽早向你的承诺对象发出预警,跟他沟通有没有更好的解决方案。Peter就经常干这种事,每当工作被堵塞时,他会主动地跟项目经理说,“Bob,帮忙看个问题”,“Bob,感觉周三之前完成有很大风险啊…”

不在状态不好的时候写代码

刚和老婆吵了一架,然后回去公司,心烦意乱地写代码?

通宵定位问题,然后在疲惫不堪时打算修改代码解决这个Bug?

专业人士不会这么做,他们知道,在状态不好的时候写代码,只会写出一堆Bug。

善于对付中断

编程时总免不了被同事打断,一个突如其来的电话会议,右下角突然冒出来的聊天信息,还有Peter突然从背后过来的拥抱…

面对“打断”,专业的程序员懂得说,“稍等一下…”,然后他们会在记下当前工作的上下文信息,让自己重新回到工作时,能尽快进入状态。

当然,如果你在跟别人结对编程,或者你用了TDD,那么保存上下文信息就变得非常简单。

重视单元测试

专业的程序员知道单元测试的重要性,他们会把测试代码和产品代码看的一样重要,他们还会使用TDD。

关于单元测试的重要性和TDD,我在之前的文章中有介绍过,欢迎阅读:如何说服你的同事使用TDD

管理时间

专业的程序员对待会议的三项原则:

拒绝那些与自己无关的会议;

如果进入会议后发现自己没必要参加,那么安静的离席;

尊重对方的时间。只召集那些必要的同事参加会议,并且会在会议前整理好会议的主题和议程。

管理精力

专业的程序员能够让自己精力充沛地投入到工作中。

他们知道保持充足的睡眠,知道通过一些体力活动,来放松自己的大脑。

管理压力

专业的程序员会尽量避免压力,他们谨慎承诺,不答应做不到的事情;他们保持代码的整洁,方便问题定位和重构代码;他们坚持着自己的编码原则,对自己交付的功能有很大信心,就算有Bug,也能很快定位处理。

而当压力来临时,专业的程序员不会惊慌失措,因为他们了解他们负责的代码的逻辑,如果有不懂的地方,他们会及时沟通,向他人求助。

不固执

专业的程序员不会在一条道上耗费太多时间,一旦发现这是个死胡同或者泥潭,就会及时抽身,往回走。

编程之外的技术

专业的程序员不会是“离开了编辑器就渴死的鱼”,他们具备计算机原理、TCP/IP协议这些计算机学科的基础知识,他们对常用的Shell命令牢记于心,他们还善于使用各种工具的快捷键来提升他们的工作效率。

我的同事Peter就是这样一个专业的程序员,作为一个前端工程师,他对网络方面的知识非常熟悉,VLAN、网关、掩码、信任域等等,简直就是一本网络百科全书,他操作起Linux命令行也是相当熟练,出现问题了,需要定位,他会说,“给我环境信息,我上去看看”,然后就是各种查找日志、抓包分析,他敲键盘的速度也是贼快贼快,我想,这大概是我见过最完美、最酷炫、最专业的程序员了吧。

以上就是我总结出来的专业程序员的特质。你心目中专业的程序员还有哪些好的职业素养呢?欢迎在评论区里和大家一起分享!让我们一起做一只既有技术,又有修养的程序猿!

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

    关注

    4

    文章

    956

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何成为一名高薪嵌入式工程师?

    学嵌入式,也可以轻松入门。 如果你已经明确好,想要从事嵌入式开发,想要成为一名高薪的嵌入式工程师,那下面这几点建议请好好看看: 、夯实技术基础 ✅编程语言 C语言:嵌入式开发的核心语言,需
    发表于 04-09 09:03

    如何成为编程高手

    注释了,如果注释和代码不致,那就更加糟糕。   8、韧性和毅力   这也许是“高手”和程序员最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨炼出来的。成功能给我们带来无比的喜悦,但过程却是
    发表于 12-29 06:57

    大理的AI野心藏不住了——风花雪月中千程序员探讨人工智能

    2025 年12月4日至6日第二届CCF程序员大会暨大理人工智能与应用国际开发者大会在大理圆满落幕。
    的头像 发表于 12-24 17:45 892次阅读
    大理的AI野心藏不住了——风花雪月中千<b class='flag-5'>名</b><b class='flag-5'>程序员</b>探讨人工智能

    隼眼科技获得第六届综合交通创新创业大赛总决赛第一名

    由中交集团举办的第六届综合交通创新创业大赛总决赛于12月16日落下帷幕,隼眼科技参赛的“基于92-94GHz毫米波雷达的全天候感知系统”获得了第一名的好成绩。
    的头像 发表于 12-18 17:07 762次阅读

    程序员最常见谎言

    了。 28我已经测试过了,这个功能没问题,可以上线了。 29别担心,这个问题很快就能解决。 30代码快写完了,已经完成 90% 了 。 希望大家对程序员些容忍以及谅解! 各位程序员你们都被我说中了哪些?说说你们的观点
    发表于 12-10 08:24

    Unix的相关知识

    给出足量错误信息。 经济原则:宁花机器分,不花程序员秒。 生成原则:避免手撕,尽量编写程序去生成程序。 优化原则:雕琢前先要有原型,跑之
    发表于 12-10 07:13

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

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

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

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

    亿纬锂能荣膺AQR新能源乘用车电池系统供应商质量表现第一名

    2025年9月25日,2025年中国汽车产品质量表现研究(AQR)结果发布暨颁奖典礼在北京隆重举行。亿纬锂能凭借卓越的产品质量表现,荣获 "新能源乘用车电池系统供应商质量表现第一名" 奖项,亿纬锂能质量中心副总裁施诺受邀出席典礼并代表公司领奖。
    的头像 发表于 10-21 18:00 1762次阅读

    东风本田CR-V荣获2025合资SUV质量体验第一名

    近日,2025年中国汽车产品质量表现研究(AQR)结果发布暨颁奖典礼圆满落幕。东风本田CR-V凭借卓越的质量表现,荣获“合资SUV质量体验第一名”的桂冠,这权威奖项不仅是对东风本田CR-V的肯定,更是对品牌在质量、品质等方面多年坚守“长期主义”的最佳褒奖。
    的头像 发表于 10-09 09:56 730次阅读

    作为一名PCB质检工程师,我为什么在用手持式面铜测试仪?

    在PCB行业,铜厚直是决定阻抗、散热与可靠性的关键指标。过去,工程师把板子搬到实验室、等待台式铜厚仪出结果;作为一名PCB质检工程师,如今,我更愿意把“实验室”揣进口袋——手持式面铜测试仪正在成为
    发表于 08-11 11:59

    软通动力斩获2024年中国IT服务市场份额第一名

    近日,赛迪顾问发布《2024-2025年中国信息技术服务市场研究年度报告》。软通动力凭借在智能化转型浪潮中的卓越表现,以领先的数智化能力持续领跑中国IT服务市场,不仅斩获2024年市场份额第一名,更在IT咨询、IT运维等核心领域巩固优势,综合竞争力持续提升。
    的头像 发表于 08-01 17:53 2084次阅读

    润和软件稳居数字业务类解决方案市场第一名

    ”)凭借自身卓越的技术实力和创新能力,连续五年稳居数字业务类解决方案市场第一名;在细分领域:数字信贷系统解决方案子市场持续保持第一名,数字银行解决方案子市场跃升至第一名。同时,其在开放银行、交易银行、智能营销、智能风控、数据智能
    的头像 发表于 07-14 17:36 1478次阅读

    华为荣登GlobalData运营商基础设施管理服务排名报告Leader象限第一名

    象限第一名。 报告对通信服务商从商业模式、解决方案、网络设计与优化、网络转型能力、服务规模、和业务敏捷性六个维度进行了全面评估,华为综合得分第。这印证了华为在对全球运营商客户提供领先服务解决方案、网络极致性能和数智化转型等方面做出了卓越
    的头像 发表于 05-22 18:43 1221次阅读
    华为荣登GlobalData运营商基础设施管理服务排名报告Leader象限第<b class='flag-5'>一名</b>

    程序设计与数据结构

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