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

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

3天内不再提示

编码世界:规则简单有效,粗暴却完美

j4AI_wujianying 来源:单片机精讲吴鉴鹰 2019-11-20 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

与几位友人小聚,大家互道工作顺利、平安健康云云,期间一位驰骋商界多年的老友问:”你现在在华为做什么工作呀?”我很骄傲地说:”系统架构师“,可是他却愣了很久,但当我老婆在旁边补上一句“码农“时,老友瞬间秒懂,却把我受伤的心孤独地留在风中凌乱。

作为与UNIX同年代的人,我当初选择计算机专业仅仅是因为抓到什么就学什么罢了。本科毕业遇到互联网危机,便没有想法地去读了研,研究生毕业找工作,面试官问为什么要做软件开发,答曰“不给钱都喜欢做的事情,何况还给钱”,便从此踏入了编码这一行,只是从来没想到一做就是十几年。

但凡一件事情做久了,无论成功与否,都会有一些真切的体验和心得。以前也读过一些工作中如何成功、快乐,诸如马洛斯理论之类的文章,也许是因为自己领悟能力比较差,唯一的收获是庆幸自己当初选择了编码作为自己的工作,因为编码天生就具有让人愉悦的工作内容和工作氛围,快乐如影随从。

编码世界:规则简单有效,粗暴却完美

从事编码,可以锻炼逻辑思维能力,教会你如何思考。就像学习法律一样,学法律的人未必都是为了成为律师,但法律教会了你一种思维方式。同样的,通过编码可以学习到这个世界上最严谨的思维方法。因为在编码的世界里,对错是简单甚至绝对的,只要敲下键盘,计算机就会判定孰是孰非,0或1,规则简单有效,粗暴却完美。

从事编码,可以获得持续的创造力。跟写作、绘画、作曲一样,编码也是一种创造性的工作。只要有一台计算机,掌握了基本技能后,你便拥有了无限的超能,便能随心所欲地创造出新的东西,丰富和美好这个世界,是不是很棒?

更酷的是,编码可以品味孤独。除了跟别人交流、学习,程序员大部分时间都是独自在工作,只要双手触摸到键盘,内心顷刻便会变的宁静,多酷呀!伴随着键盘清脆的低吟,沉浸在一个人的世界里,跟烟雨蒙蒙天,一杯茶,一个人听着淅淅沥沥的雨声品味孤独,简直有异曲同工之妙,多感性呀!

能够选择编码作为工作的人,大部分都是喜欢为人处世简简单单的人:这群人有着天真烂漫的好奇心,虽不苟言笑,但却内心火热,善于分享,乐于助人,甚至有时为了解决问题、宁愿不眠不休,却深以为乐……跟这样一群简单纯粹的人在一起,我觉得世界上最好的工作氛围,也不过如此。

程序员的三个境界

但IT时代的膨胀已经让编码工作如同文艺复兴时的印刷匠一样,编码门槛越来越低,遍地《一周XX速成》、《20天XX精通》,仿佛会写代码就成了程序员,这让很多人认为从事编码工作就是码农。其实,印刷匠很多,成为大师的不多;码农很多,但程序员并不多。程序员不是码农,码农也不是真正的程序员。

程序员在英文里对应有三个单词:Coder、Programmer和Software Engineer,我觉得这三个词,生动形象地描述了程序员所需要经历的三个阶段,或者说三个境界——

Coder:只要求能够熟练使用编程环境,精通几种编程语言、开发框架和开发库,擅长写代码就可以了。这个阶段的程序员能够按照既定的设计完成编码。

Programmer:要求在coder的基础之上,精通设计模式、算法实现和编码技巧,并具备熟练应用的能力,这个阶段的程序员能够独立编码解决现实问题。

Software Engineer:要求在掌握业务知识的前提下,理解为什么这么实现,在综合考虑架构实现,权衡开发成本后,为解决业务问题提出最优方案,并能与业务人员顺畅沟通,让业务人员理解方案。编码工作达到这个阶段,才能称得上是真正的程序员,才真正实现了从工作到职业的转变。

不可否认,这个世界上有一些天才的程序员,他们喝着咖啡,哼着歌,便完成了上面三个阶段的修炼。但绝大部分人,都需要为此付出巨大的时间和精力。能否成为职业的程序员,影响因素和方法论很多,各种学习类、技术类的总结遍地都是:主动思考、及时总结、制定规划等。但我认为其中最重要的是能否做到专注。

许多没有达到第三个阶段的程序员,就是因为受到各种因素诱惑,变得心猿意马,不够专注。因为不够专注,他们不在意做好自己本职工作,不在意锤炼自己的技能,不在意学习新兴的技术。慢慢的,他们会认为从事编码没有出路,进而毫无例外地把编程看成是体力劳动,只会粘贴拷贝代码,知其然而不知其所以然,导致技术停滞不前。在这样的状态下工作5年、10年,对于他们来说,没什么区别,程序员真的就是吃青春饭的码农。

程序员VS码农:我们不一样

要避免程序员变成码农,必须对编码保持热情,并持续学习;必须保持好奇心,乐于探求事物本质;必须对所做的工作及时总结,主动优化代码,让系统变得更加有机;必须主动尝试更好的开发方式、更先进的工具,来提升开发效率,并想办法避免重复性的工作;必须不断改进设计,将编程变成创造性的工作。只要通过这样逐步地积累经验和长时间锤炼,知识体系才能构建完备和丰富,才能避免沦落为码农。

几年前,我曾经重构过一个模块,从外部看模块的所在的系统,都是类似这样的,简洁而漂亮:

但从程序员编码实现的层面看,它实际上是这样的:

这个设计在最初的版本没有任何问题,使用继承扩展管理对象的接口能力,但仅仅过了两个版本,项目组PL说实在撑不下去了:增加一个接口,需要修改200多个地方,如果再过一个版本,估计要修改400多个地方了。

后来我把它改成这个样子,使用聚合消除了耦合

从代码实现层面看,在功能刚开始开发时,这两个设计区别不是很大,但随着系统演进、越来越多的功能加入,继承关系带来的耦合会导致模块之间关系越来越复杂,牵一发而动全身,终究有一天哪怕只做很小的改动,也将成为压死骆驼的最后一根稻草。

这次重构的成果是代码量由43K减少到15K,扩展新的接口能力不再需要修改已有代码。我想,这或许就体现了码农和程序员的区别吧。

CT是一个业务复杂度极高的行业,要想从码农成长为程序员,需要经历更多的煎熬,需要发挥更多的创造力,同时也意味着,我们比以往任何时候都需要越来越多的码农成长为程序员。

既然我们选择了编码作为职业,注定会经历各种心劫:枯燥、沮丧、迷茫,甚至浮躁……然而无论处于哪种心境当中,我相信,只要想起自己曾经满怀惊奇、兴奋与真诚敲下的那个程序——“Hello,World!”我们就会充满了渴望和力量,因为那是程序员最初的梦想:改变世界。

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

    关注

    6

    文章

    1019

    浏览量

    56698
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30805

原文标题:一张图告诉你是码农还是程序员

文章出处:【微信号:wujianying_danpianji,微信公众号:单片机精讲吴鉴鹰】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Booth编码的原理及选择

    和硅片面积都花费在对部分积的累加求和上。减少部分积的个数是减少部分积的累加求和的有效手段。Booth 算法是目前用于缩减部分积个数最常用、最有效的算法。基4 Booth编码可以将部分积的个数减少一半
    发表于 10-22 07:53

    编码器为何能取代光电编码器?

    在复杂工业场景下,磁编码器凭借其不怕油污粉尘、抗冲击振动、安装便捷及高速响应等优势,正有效解决光电编码器怕脏、怕震、难安装、怕高速的痛点,逐渐成为提升机器人性能的新选择。
    的头像 发表于 10-15 09:55 332次阅读
    磁<b class='flag-5'>编码</b>器为何能取代光电<b class='flag-5'>编码</b>器?

    二进制编码器:数字世界的“翻译官”,开启智能时代新篇章

    在数字技术席卷全球的今天,二进制编码器作为连接物理世界与数字系统的“桥梁”,正以不可替代的姿态渗透到工业制造、智能家居、无人驾驶等核心领域。它不仅是自动化产线的“神经中枢”,更是推动人工智能、物联网
    的头像 发表于 10-14 08:35 335次阅读
    二进制<b class='flag-5'>编码</b>器:数字<b class='flag-5'>世界</b>的“翻译官”,开启智能时代新篇章

    贞光科技代理品牌 | 三星电容物料编码规则

    韩国三星电子的电容物料编码规则采用分段式结构,不同位置字符代表特定参数(如尺寸、容值/阻值、误差、耐压等)。贞光科技作为三星电机的专业代理商,致力于为客户提供优质的车规级电容解决方案。以下分类整理
    的头像 发表于 08-07 15:51 899次阅读
    贞光科技代理品牌 | 三星电容物料<b class='flag-5'>编码</b><b class='flag-5'>规则</b>

    厚声电阻标签的命名规则

    厚声电阻标签的命名规则围绕尺寸、功率、精度、阻值及包装等核心参数展开,采用结构化编码体系确保信息清晰传递。以下是具体规则解析: 一、尺寸编码:英制与公制对照 厚声电阻采用英制尺寸标注,
    的头像 发表于 07-28 17:24 931次阅读
    厚声电阻标签的命名<b class='flag-5'>规则</b>

    增量型编码器与绝对值型编码器怎么选择?

    在选择增量型编码器与绝对值型编码器时,需要考虑多个因素,包括应用需求、成本、精度、可靠性以及环境适应性等。以下是对两种编码器的详细比较及选择建议: 一、增量型编码器 1. 优点:  
    的头像 发表于 07-10 10:34 910次阅读

    KiCad 中的自定义规则(KiCon 演讲)

    设计规则 展开,重点探讨了 那些复杂强大的特性。 由于这些规则本质上是基于文本表达的,需要用户细致入微的理解。演讲的 核心目标 是引导用户有效实施这些
    的头像 发表于 06-16 11:17 1544次阅读
    KiCad 中的自定义<b class='flag-5'>规则</b>(KiCon 演讲)

    CodeForge编码熔炉:重塑数据DNA,解锁信息宇宙新维度

    编码熔炉——一款以颠覆性技术重构数据底层逻辑的智能编码器,正以“数据炼金术”的姿态,为各行业开辟信息处理的新纪元。 【技术内核:突破压缩极限的“分子手术刀”】 传统编码器如同“粗放式打包员”,通过
    的头像 发表于 04-29 09:12 542次阅读

    解码未来:数字编码器如何重塑智能世界

    惊人的速度重塑着我们的智能世界。 从机械到智能:编码器的进化史 曾几何时,编码器只是工业生产线上简单的计数工具,通过机械结构将位移转化为电信号。但随着物联网、人工智能、5G通信等技术的
    的头像 发表于 04-07 08:44 602次阅读
    解码未来:数字<b class='flag-5'>编码</b>器如何重塑智能<b class='flag-5'>世界</b>

    高效传输,稳定连接——精选编码器电缆

    在自动化与智能化日益普及的今天,编码器作为精密测量与定位的核心部件,其性能的稳定与数据的准确传输成为了决定整个系统效率与精度的关键。而在这背后,一条看似不起眼的编码器电缆,承载着连接与控制的重任
    的头像 发表于 03-01 10:34 650次阅读

    SL3062:60V 输入宽电压降压恒压电源芯片,完美替换 TPS54362

    ,为您提供稳定可靠的电源输出。 内置功率 MOSFET: 集成度高,外围电路简单有效降低系统成本和设计难度。 多重保护机制: 内置逐周期过流保护、过温保护等安全机制,保障系统稳定运行
    发表于 02-20 17:30

    高效音频编码器设计与实现:重塑声音世界的科技力量

    在数字化时代,音频作为信息传播的重要载体,其质量和传输效率成为了衡量技术先进性的关键指标。高效音频编码器的出现,不仅极大地优化了音频数据的压缩率,还在保证音质的前提下,实现了数据的快速传输与存储,为
    的头像 发表于 02-12 08:45 677次阅读
    高效音频<b class='flag-5'>编码</b>器设计与实现:重塑声音<b class='flag-5'>世界</b>的科技力量

    一文读懂锂电池方形的尺寸及型号命名规则

    方形锂电池的尺寸及型号命名规则虽然看似简单,但背后关联着整个锂电池产业的发展。了解这些知识,无论是对于我们从事锂电池相关行业,还是日常使用锂电池产品,都有着不小的帮助。如果你还想知道关于锂电池的哪些知识,欢迎在留言区告诉我们。
    的头像 发表于 01-23 14:44 4106次阅读
    一文读懂锂电池方形的尺寸及型号命名<b class='flag-5'>规则</b>

    SMT元器件的编码与识别

    随着电子技术的快速发展,SMT因其高密度、高性能、低成本等优势在电子制造领域占据了主导地位。在SMT生产过程中,元器件的正确编码与识别对于保证生产效率和产品质量至关重要。 1. SMT元器件编码规则
    的头像 发表于 01-10 18:01 2768次阅读

    什么是编码方式、数据质量和传输需求

    编码方式、数据质量和传输需求是信息技术和数据传输中非常重要的概念,它们各自具有特定的含义和影响。下面将分别对这三个因素进行详细介绍: 一、编码方式   定义: 编码方式是指通过特定的技术或规则
    的头像 发表于 01-10 13:21 893次阅读