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

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

3天内不再提示

程序员的两种情怀

工程师人生 来源:网络整理 作者:工程师吴畏 2018-11-14 16:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

20年前,最好的程序员是那些能够把整个程序装配进一个64Kb的.COM文件里的人。那些对Intel 80386掌握最多的人在编程中是偶像般的存在。

那是因为在20年前的计算机昂贵了而程序员廉价。那是黑客情怀的时代。那个时代已经过去了。那种情怀现在已经不被赞赏了,因为市场状况已经完全相反了。

现在,计算机变得便宜而程序员变得昂贵了。当下的时代是设计师情怀的时代,如今我们代码的可读性比代码的性能更为重要。

硬件价格 vs 工资

看这个图表。这是最近20年来(1994-2014)两者的对比趋势图。第一种曲线呈现下降的趋势并表明了计算机内存和硬盘储存器在近20年来变得很便宜。

第二种曲线趋势演示了在同一时期软件开发者工资上涨了多少。精确点来说,大概是第一种的三倍。我没有找到一个关于这两者对比的正式报告,但是可以肯定程序员的工资还会增长,这对任何人来说已经不是什么秘密了。对于高级开发者来说,年薪200,000美元不再只是个梦想。然而在20年前,在周围的人中,年薪60K美元已经是最好的报酬了。我发现一篇关于这个话题的非常有趣的文章。

基本上,这意味着在1994年为了开发一个PHP网站,我们不得不花费比现在(2014年)1000倍更多的资金在硬件方面和比现在(2014年)3倍更少的工资给开发者。然而我们还是在这讨论一样的堆栈技术。使用一样配有Apache Http服务器的Linux机器。

不同之处,在1994年,如果我们的应用因为硬件资源限制出现了性能问题,我们每次添加1G的额外内存需要支付35,000美元,而在2014年,我们只需要支付10美元。

在1994年,相对于购买新的硬件,去聘用更多的程序员并要求他们去优化代码或者重构代码的收益更大。在2014年,实际上情况恰恰相反。现在,花钱去把服务器的规模扩大两倍比花钱聘用程序员来优化软件更便宜。(特别是当服务器是虚拟云服务器时)

在1994年最好的工程师拥有“黑客情怀”,而在2014年“设计师情怀”更受欢迎。

黑客情怀

拥有黑客情怀的人会认为这个输出斐波那契数列的Java方法是一段“优雅的代码”

我列出了一个优秀黑客应有的品质:

能够使用一种语言中所有的别人知道(和不知道的)特性。

能辨别其他人是黑客还是新手还是黑客写手

对规则和标准会感到无聊和厌倦。

不写单元测试-资历少时会写

享受挑战–他能在那展现它的才华。

喜欢讨论多于写文档,因为他们觉得这样更有趣

讨厌别人修改他的代码。

喜欢马上投入一个项目里。

黑客是一个有才华的人。他想在他编写的软件里展现他的才华。他享受编程并且写代码主要是为了好玩。我可以这么说,他已经和他的代码结为伴侣了并且在与代码离婚后他无法想象以后的幸福生活。代码所有权是黑客所关心的东西–他知道他自己是代码的所有者。

当我问我任意的一个黑客朋友时,“其他人怎样才能理解这段代码的是干什么的?”。我几乎总是得到同样的答案-“他们要问我!”(通常是带着真诚的微笑自豪地说)

设计师情怀

拥有设计师情怀的人会重构上面的代码使它便于阅读。

我认为这些品质是一个好的设计师所拥有的:

倾向于使用传统的编程技术

假定任何人都是新手并循规蹈矩地写代码

喜欢设定一些规则并遵循它们

喜欢写文档多于直接讨论并且喜欢文档自动生成多于手写

把更多的编码时间花费在单元测试上

讨厌挑战和加班工作

喜欢看到它的代码被修改和重构

同时进行比较少的项目工作

设计师是一个优秀的团队角色。他对团队的发展,标准,规则,教育和纪律的贡献跟他对源码的贡献一样多。他总是能确保一旦他离开项目他的代码和想法依然保留下来并运行。

对一个好的设计师来说,最满意的是能够看到它的代码拥有它自己的人生–被修改,被优化,被重构和最终退休。设计师把他自己看做是代码的父母-一旦它足够年大去走路和说话,它不得不去过自己的生活。

未来

如果你认为你自己是一个黑客,我相信这是做出改变的时候了。黑客的时代已经成为过去了。

在不久的将来,我们可能甚至不用考虑硬件问题并且在拥有无限大内存,CPU频率和存储空间的弹性计算平台上运行我们的应用程序。我们仅仅需要为资源使用和绝大多数性能问题付费,这仅仅是在我们每个月的账单里添加小额的额外费用。我们将不会关心任何的优化问题。

同时,优秀的工程师将会变得越来越昂贵,仅仅去检查下软件并诊断,一个小时要收费500多美元。这就像优秀的律师和牙医。

这就是为什么,当开发一个新软件产品时,那些付钱的客户更关心的是它的可维护性。项目赞助人明白他们获取利润的最好解决方案是需要一个可读性、维护性和自动化最高的项目。

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

    关注

    4

    文章

    955

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    用PLC实现卷径计算的两种算法

    卷径计算,是动态计算如钢卷,纸卷等存料量的一方法,它是实现张力控制和自动充放料、以及甩尾控制的重要前提。卷径计算目前主流的方法有两种,一是根据机列速度(产线速度)和和被测卷的转动角速度求得;另一
    的头像 发表于 11-14 16:54 1354次阅读
    用PLC实现卷径计算的<b class='flag-5'>两种</b>算法

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

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

    两种TVS有啥不同?

    当我们查看TVS二极管的规格书,常会看到有以下两种种引脚功能标识图:对于初学者,看到感到疑惑,他们一样吗?他们有啥区别?为啥有的个尖头往外,阳极连在一起,有的个尖头往里,阴极连在一起?一连三问。EMC小哥根据自己经验略作分析
    的头像 发表于 09-15 20:27 580次阅读
    这<b class='flag-5'>两种</b>TVS有啥不同?

    两种散热路径的工艺与应用解析

    背景:两种常见的散热设计思路 在大电流或高功率器件应用中,散热和载流能力是PCB设计中必须解决的难题。常见的两种思路分别是: 厚铜板方案:通过整体增加铜箔厚度(如3oz、6oz甚至更高),增强导热
    的头像 发表于 09-15 14:50 461次阅读

    CMOS 2.0与Chiplet两种创新技术的区别

    摩尔定律正在减速。过去我们靠不断缩小晶体管尺寸提升芯片性能,但如今物理极限越来越近。在这样的背景下,两种创新技术站上舞台:CMOS 2.0 和 Chiplet(芯粒)。它们都在解决 “如何让芯片更强” 的问题,但思路却大相径庭。
    的头像 发表于 09-09 15:42 710次阅读

    贴片晶振中两种常见封装介绍

    贴片晶体振荡器作为关键的时钟频率元件,其性能直接关系到系统运行的稳定性。今天,凯擎小妹带大家聊聊贴片晶振中两种常见封装——金属面封装与陶瓷面封装。
    的头像 发表于 07-04 11:29 964次阅读
    贴片晶振中<b class='flag-5'>两种</b>常见封装介绍

    铷原子钟与CPT原子钟:两种时间标准的区别

    在物理学的世界中,精密的时间测量是至关重要的。这就需要一个高度准确且稳定的时间标准,这就是原子钟。今天我们将探讨两种重要的原子钟:铷原子钟和CPT原子钟,以及它们之间的主要区别。首先,我们来了解一下
    的头像 发表于 05-22 15:49 500次阅读
    铷原子钟与CPT原子钟:<b class='flag-5'>两种</b>时间标准的区别

    用TLC2551采外部电压,只有0和2096两种值是怎么回事?

    用TLC2551采外部电压,只有0和2096两种值是怎么回事?求解决办法。
    发表于 02-06 07:31

    覆铜的两种形式是什么

    在电子电路设计与制造领域,覆铜的实现形式多样,其中大面积的覆铜和网格铜是最为常见且各具特色的两种,它们在不同的应用场景下发挥着关键作用。 大面积的覆铜,顾名思义,是指在印刷电路板(PCB)的特定区域
    的头像 发表于 02-04 14:10 919次阅读

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

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

    AMC1204有两种封装,SOIC-8和SOIC-16,功能一样吗?为什么要推出两种封装?

    呢?AMC1204,AMC1304这样做有什么好处吗? 2、AMC1204有两种封装,SOIC-8和SOIC-16,功能一样吗?为什么要推出两种封装?
    发表于 12-27 07:22

    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>参考补充

    ADS1292R有 \"1 ch ECG + 1 ch呼吸侦测\" 或 \"2 ch ECG\" 两种模式,是否可以在产品上实现自行切换两种使用模式?

    请问 ADS1292R 有 \"1 ch ECG + 1 ch 呼吸侦测\" 或 \"2 ch ECG\" 两种模式,是否可以在产品上实现让用户自行切换两种使用模式?
    发表于 12-13 14:43

    UCD3138A64/UCD3138128程序员手册

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