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

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

3天内不再提示

程序员除了要会写代码,还要懂得职场的15大定律和7大原则

DPVg_AI_era 来源:lq 2019-05-19 09:59 次阅读

作一个优秀的程序员,除了要会写代码,还要懂得职场的15大定律和7大原则。昨日,GitHub趋势榜第一的项目便总结了这些定律和原则。总有一款适合你。

总有一款适合你。

作为程序员,你除了会敲代码,还得知晓属于你的定律。今日GitHub便有一个项目总结了与开发人员相关的15大定律和7大原则。

项目地址:

https://github.com/dwmkerr/hacker-laws

该项目目录如下:

简介

定律

阿姆达尔定律(Amdahl's Law)

布鲁克定律(Brooks's Law)

康威定律(Conway's Law)

侯世达定律(Hofstadter's Law)

阿玛拉定律的“炒作周期”(The Hype Cycle & Amara's Law)

海勒姆定律(Hyrum's Law)

摩尔定律(Moore's Law)

帕金森定律(Parkinson's Law)

普特定律(Putt's Law)

泰斯勒定律(复杂性守恒定律,Tesler's Law)

抽象化漏洞定律(The Law of Leaky Abstractions)

琐碎定律(The Law of Triviality)

Unix哲学(The Unix Philosophy)

Spotify模型(The Spotify Model)

Wadler定律(Wadler's Law)

原则

鲁棒性原则(The Robustness Principle,Postel's Law)

SOLID

单一职责原则(The Single Responsibility Principle)

开放封闭原则(The Open/Closed Principle)

李氏替换原则(The Liskov Substitution Principle)

接口分离原则(The Interface Segregation Principle)

依赖倒置原则(The Dependency Inversion Principle)

TODO

那么接下来,我们就对这些定律和原则进行一一解读。

开发人员需知的15大定律

阿姆达尔定律(Amdahl's Law)

维基百科中对此定律的解读是:

阿姆达尔定律,一个计算机科学界的经验法则,因吉恩·阿姆达尔而得名。它代表了处理器并行运算之后效率提升的能力。并行计算中的加速比是用并行前的执行速度和并行后的执行速度之比来表示的,它表示了在并行化之后的效率提升情况。阿姆达尔定律是固定负载(计算总量不变时)时的量化标准。

此处举个例子来说明:如果一个程序由两部分组成,一部分A(必须由一个处理器执行)和一部分B(可以并行执行),那么我们可以看到,向执行程序的系统添加多个处理器只能带来有限的好处。它可以极大地提高B部分的速度,但是A部分的速度将保持不变。

下图显示了速度可能改进的一些示例:

可以看出,即使是一个50%可并行的程序,在超过10个处理单元的情况下也几乎没有什么好处,而一个95%可并行的程序,在超过1000个处理单元的情况下,仍然可以显著提高速度。

随着摩尔定律(Moore’s Law)的放缓,以及单个处理器速度的加速放缓,并行化是提高性能的关键。图形编程是一个很好的例子(使用现代基于着色器的计算,单个像素或片段可以并行呈现),这就是为什么现代显卡通常有成千上万的处理核心(gpu或着色器单元)。

布鲁克定律(Brooks's Law)

维基百科中对此定律的解读是:

将人力资源添加到一个后期软件开发项目中会使它更晚。

这条定律表明,在许多情况下,试图通过增加更多的人来加速已经晚了的项目,将使交付日期更晚。该定律楚地表明这是一种过度简化,但一般的推理是,鉴于新资源的增加时间和通信开销,在短期内的速度会降低。而且,许多任务可能不是可分的,即容易在更多资源之间分配,这意味着潜在的速度增长也更低。

交付工作中常见的一句话,“九个女人不能在一个月内生孩子”是与布鲁克斯定律有关,特别是某些工作不可分割或平行的事实。

康威定律(Conway's Law)

维基百科中对此定律的解读是:

这条法律表明,一个系统的技术边界将反映组织的结构。

设计系统的组织受限于设计这些组织的通信结构的副本。

这条定律表明,一个系统的技术边界将反映组织的结构。康威定律表明,如果一个组织是由许多小的、不相连的单元组成的,那么它所生产的软件将是如此。如果一个组织更多地围绕功能或服务的“垂直领域”构建,软件系统也会反映出这一点。

侯世达定律(Hofstadter's Law)

维基百科中对此定律的解读是:

即使考虑了侯世达定律,它也总是比你想象的要花更长的时间。

当你在估计某件事需要多长时间的时候,你可能听说过这个定律。在软件开发中,我们往往不擅长准确地估计某个东西需要多长时间才能交付,这似乎是一个老生常谈的事实。

阿玛拉定律的“炒作周期”(The Hype Cycle & Amara's Law)

维基百科中对此定律的解读是:

我们倾向于过高估计技术在短期内的影响,并低估长期效应。

Hype Cycle(炒作周期)是技术随着时间的推移而产生的兴奋和发展的直观表现,最初由Gartner开发。最好用视觉效果来表现:

简而言之,这一周期表明,人们通常对新技术及其潜在影响感到兴奋。团队经常快速地投入到这些技术中,有时会对结果感到失望。这可能是因为技术还不够成熟,或者现实世界的应用还没有完全实现。经过一段时间,技术的能力和使用它的实际机会都会增加,团队最终会变得富有成效。罗伊•阿马拉(Roy Amara)的名言最简洁地概括了这一点——“我们往往高估了一项技术的短期效果,而低估了长期效果。”

海勒姆定律(Hyrum's Law)

维基百科中对此定律的解读是:

有足够数量的API用户,您在公约中承诺的并不重要:系统的所有可观察行为都将取决于某人。

Hyrum定律指出,当一个API有足够多的消费者时,这个API的所有行为(甚至那些没有被定义为公约的一部分的行为)最终都会被某人所依赖。一个简单的例子可能是非功能元素,比如API的响应时间。一个更微妙的例子可能是依赖于对错误消息应用正则表达式来确定API错误类型的消费者。

即使API的公约没有声明关于消息内容的任何内容,表明用户应该使用相关的错误代码,一些用户也可能使用消息,更改消息实际上会破坏这些用户的API。

摩尔定律(Moore's Law)

维基百科中对此定律的解读是:

集成电路中的晶体管数量大约每两年翻一番。

摩尔的预测经常被用来说明半导体芯片技术进步的绝对速度。事实证明,从上世纪70年代到本世纪头十年末,摩尔的预测是非常准确的。近年来,这一趋势发生了轻微的变化,部分原因是对组件小型化程度的物理限制。然而,并行化的进步,以及半导体技术和量子计算领域潜在的革命性变化,可能意味着摩尔定律在未来几十年仍将适用。

帕金森定律(Parkinson's Law)

维基百科中对此定律的解读是:

工作量不断增大,以填补满足工作所需的截止时间。

在其最初的背景下,这个定律是基于对官僚机构的研究。它可能被"悲观"地应用于软件开发计划,理论是团队在截止日期之前效率低下,然后在截止日期前赶紧完成工作,从而使得实际截止日期变得有些随意。

如果将这一定律与侯世达定律结合起来,就会得出一个更加悲观的观点——工作量将会增大,以填补完成它所需要的时间,而且仍然比预期的要长。

普特定律(Putt's Law)

维基百科中对此定律的解读是:

技术由两类人主导,一类人懂他们不并需要管理的事务,另一类人管理者他们不懂的事务。

普特定律往往遵循普特推理(Putt's Corollary):

随着时间的推移,每一个技术层次都会发展出一种能力倒置。

这些陈述表明,由于各种选择标准和群体组织方式的趋势,技术组织的工作层面将有一些技术人员,以及一些不了解复杂性和挑战的管理角色的人员。

然而需要强调的是,此类定律是广泛的概括,可能适用于某些类型的组织,而不适用于其他类型的组织。

泰斯勒定律(复杂性守恒定律,Tesler's Law)

维基百科中对此定律的解读是:

这条定律表明,一个系统中有一定程度的复杂性是无法降低的。

系统中的某些复杂性是“无意的”。 这是由于结构不良、错误或者只是解决问题的糟糕建模造成的。 可以减少(或消除)这种“无意”的复杂性。然而,一些复杂性是“内在的”,这是所解决问题内在复杂性的结果。这种复杂性可以转移,但不能消除。

这个定律中一个有趣的点,即使简化了整个系统,内在的复杂性也没有减少,而是转移到了用户身上,用户必须以更复杂的方式行事。

抽象化漏洞定律(The Law of Leaky Abstractions)

维基百科中对此定律的解读是:

在某种程度上,所有非平凡(non-trivial)抽象都是有漏洞的。

该定律指出,抽象化(通常用于计算以简化复杂系统的工作)在某些情况下会“泄漏”底层系统的元素,这使得抽象化的行为方式出人意料。

加载文件并读取其内容就是一个例子。文件系统API是较低层内核系统的抽象,内核系统本身是与更改磁盘片(或SSD的闪存)上的数据相关的物理进程的抽象。在大多数情况下,将文件处理为二进制数据流的抽象是可行的。然而,对于磁驱动器,顺序读取数据的速度将明显快于随机访问(由于页面错误的开销增加),但是对于SSD驱动器,不会出现这种开销。处理这种情况需要了解底层细节(例如,数据库索引文件的结构是为了减少随机访问的开销),开发人员可能需要了解抽象的“泄漏”实现细节。

当引入更多抽象时,上面的示例可能会变得更加复杂。Linux操作系统允许通过网络访问文件,但在本地表示为“普通”文件。如果存在网络故障,这个抽象将会“泄漏”。如果开发人员将这些文件视为“正常”文件,而没有考虑到它们可能会受到网络延迟和故障的影响,那么解决方案就会有bug。

琐碎定律(The Law of Triviality)

维基百科中对此定律的解读是:

这一定律表明,团体将把更多的时间和精力放在琐碎或表面现象上,而不是严肃和实质性的问题。

Unix哲学(The Unix Philosophy)

维基百科中对此定律的解读是:

Unix哲学是软件组件应该很小,并且专注于做好一件特定的事情。通过将小的、简单的、定义良好的单元组合在一起,而不是使用大型的、复杂的、多用途的程序,可以更容易地构建系统。

像“微服务体系结构”这样的现代实践可以被看作是这条定律的一个应用,此处,服务是小的、集中的,并且只做一件特定的事情,允许由简单的构建块组成复杂的行为。

Spotify模型(The Spotify Model)

维基百科中对此定律的解读是:

Spotify模型是团队和组织结构的一种方法,已被“Spotify”推广。在这个模型中,团队是围绕功能而不是技术来组织的。

Spotify模型还普及了部落、公会、分会等组织结构的其它组成部分。

Wadler定律(Wadler's Law)

维基百科中对此定律的解读是:

在任何语言设计中,讨论这个列表中某个特性所花费的总时间与它位置的幂成正比。

0.语义

1.语法

2.词汇语法

3.注释的词汇语法

类似于“琐碎定律”,Wadler定律指出,在设计一种语言时,与这些特征的重要性相比,花在语言结构上的时间是不成比例的。

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

    关注

    4

    文章

    630

    浏览量

    78910
  • 代码
    +关注

    关注

    30

    文章

    4732

    浏览量

    68273
  • 程序员
    +关注

    关注

    4

    文章

    949

    浏览量

    29746

原文标题:【GitHub金牌】程序员必读职场15大定律和7大原则

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI编程工具会不会抢程序员饭碗

    AI编程工具可辅助编程,减少手动编码,提升效率,对程序员有积极影响也有挑战。程序员需深化技能、拓宽知识应对。长远看,AI与人类程序员将共生共荣。
    的头像 发表于 11-08 10:17 67次阅读

    京东上万程序员都AI用它!

    对大模型生成代码进行智能修复,为程序员开启代码漏洞修复的“自动驾驶”模式,不但减少人工接入、提高工作效率,更为企业抵御内外部各种攻击构建起一道坚固的安全屏障,确保业务的连续性和稳定性。 JoyCoder是京东云自主研发的一款辅助
    的头像 发表于 07-17 16:29 217次阅读
    京东上万<b class='flag-5'>程序员</b>都AI用它!

    程序员节视频创意大赛,用串口屏赢取千元大奖

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-08 10:38 72次阅读
    <b class='flag-5'>程序员</b>节视频创意大赛,用串口屏赢取千元大奖

    程序员节视频创意盛宴,邀您共襄盛举!

    10月24日,程序员专属的节日里,我们盛大开启“程序员节视频创意大赛”特别活动!这不仅是一场视觉的盛宴,更是智慧与创意的璀璨碰撞。我们诚挚邀请每一位程序员及编程爱好者,拿起你的镜头,记录下那些平凡日子中的不凡瞬间,让编程的魅力与
    的头像 发表于 07-04 09:00 67次阅读
    <b class='flag-5'>程序员</b>节视频创意盛宴,邀您共襄盛举!

    适者生存,程序员最终会流向哪……

    程序员没有永远的护城河!!就目前的互联网大环境来看,it行业已经是……
    的头像 发表于 03-11 17:11 381次阅读
    适者生存,<b class='flag-5'>程序员</b>最终会流向哪……

    分布式存储系统的七大原则之二:区分环境数据与业务数据

    在之前讨论的分布式存储系统七大原则的第一原则中,我们了解了容灾切换和数据备份的差异。现在,我们继续探索第二原则:区分环境数据与业务数据。这一原则强调了两种类型数据在变化频率、价值以及数
    的头像 发表于 03-11 09:42 337次阅读

    GitHub Copilot:你的代码超级助手!程序员的最强福音

    今天小启给大家安利一款令人兴奋的AI工具——GitHubCopilot。它无疑是程序员们的最强福音!无论你是新手还是经验丰富的开发者,GitHubCopilot都将成为你的代码超级助手。想象一下
    的头像 发表于 03-05 08:04 999次阅读
    GitHub Copilot:你的<b class='flag-5'>代码</b>超级助手!<b class='flag-5'>程序员</b>的最强福音

    2024程序员的未来方向如何走?还看今朝

    这几年的IT行业想必大家已经感受到了,Android、Java、前端等等程序员都经历了大厂……
    的头像 发表于 02-02 09:45 764次阅读
    2024<b class='flag-5'>程序员</b>的未来方向如何走?还看今朝

    软件测试的7大原则,你漏了几条?

    软件测试报告最需要注意的就是测试思考,而非测试执行。而对软件测试菜鸟来说,初入行,首先要知道软件测试的7原则,了解这些可以让你事倍功半。 1测试的不可穷尽原则 是的!任何产品不可能被穷尽测试。我们
    发表于 01-18 09:39

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    。 如何正确看待鸿蒙? 我作为程序员来说,首先是看鸿蒙的发展、市场开发岗位、薪资以及前景。 这几年对鸿蒙的发展情况来分析,从2019年开始鸿蒙的出来今天,华为鸿蒙取得了很大的成就。从“不兼容
    发表于 01-16 22:13

    量子力学三大定律公式

    量子力学是描述微观世界的物理理论,为了描述微观粒子的行为,量子力学提出了三个重要的定律。这三个定律是量子力学的基石,构建了整个理论体系。本文将详细介绍量子力学的三大定律:波函数定律、不
    的头像 发表于 01-15 09:44 3696次阅读

    诚邀报名 | GPT驱动的新程序员时代,开发者如何编程?

    模式,开发者们迎来了编程范式的全新变革。传统的编程不再局限于编写线性代码和优化逻辑,自然语言取而代之,成为了编程的新工具,这大大降低了开发的门槛。 如今,以ChatGPT、Copilot等为代表的AI工具,将全球的知识库和代码库都呈现在用户面前,只要有足够的想象力,每个人
    的头像 发表于 12-11 22:20 503次阅读

    程序员的10条基本编程原则

    编写代码容易,但编写优秀代码却是一项挑战。采纳基本编程原则是确保编写高质量代码的稳妥途径,无论软件项目规模大小,都能保证代码高效、易读、可靠
    的头像 发表于 12-05 11:28 966次阅读
    <b class='flag-5'>程序员</b>的10条基本编程<b class='flag-5'>原则</b>

    程序员表白程序

    电子发烧友网站提供《程序员表白程序.rar》资料免费下载
    发表于 11-21 10:41 16次下载
    <b class='flag-5'>程序员</b>表白<b class='flag-5'>程序</b>

    嵌入式程序员应知道的几个基本问题

    电子发烧友网站提供《嵌入式程序员应知道的几个基本问题.pdf》资料免费下载
    发表于 11-20 11:21 0次下载
    嵌入式<b class='flag-5'>程序员</b>应知道的几个基本问题