怎样编程,腾讯扣叮编程教学

本文最初发布于LevelUpCoding。多年来,我观察到了一些在工程过程中反复出现的基本模式和陷阱。有趣的是,它们与工程博客上无休止争论的话题无关。例如,我不记得哪一次我的团队因为对SOLID原则理

本文最初发布于 Level Up Coding。

多年来,我观察到了一些在工程过程中反复出现的基本模式和陷阱。有趣的是,它们与工程博客上无休止争论的话题无关。例如,我不记得哪一次我的团队因为对 SOLID 原则理解不足而导致错过了交付期限。偶尔,我会遇到一条“法则”,它完美描述了我所经历的问题。令人恼火的是,这些便利的工程定律却往往在播客、有声读物和博客的边角隐蔽处。所以我把它们整理成一个清单,其中列出了我最喜欢的 8 条编程法则,腾讯扣叮编程教学,你肯定也会在现实生活中遇到它们。,

1)墨菲第二定律

墨菲定律[1]是这个榜单上最著名、最广为人知的定律,它通常被表述为:

“凡事只要可能出错,那就一定会出错。”

不过,真要说触及所有工程师痛处的还要数墨菲第二定律:

“任何解决方案都有自己的问题“

或者,没有什么事情像看起来那么简单[2]。墨菲第二定律雄辩地总结出了以下观察结果:作为工程师,我们接触的任何东西都会增加系统的风险,因此,可以通过避免系统更改来降低风险。

运用之道

随着我成长为一名成熟的工程师,我花在编程上的时间越来越少。事实上,我已经慢慢地开始认为,编写新代码是一种系统性风险;它增加了复杂性、可维护性,可能还有 Bug。考虑到墨菲定律,我有以下建议:

首选流程变革和供应商软件,而不是自主开发的解决方案。

避免陷入快速解决方案陷阱,因为你以后不得不回过头来改进。第一次就把它做好。

测试。测试。测试。测试覆盖率越高,应用程序就越能适应复杂的环境。

2)康威定律

1967 年,梅尔文·康威揭示了这样一个道理[3]:

“设计系统的架构受制于产生这些设计的组织的沟通结构。”

1、确定自己的兴趣,最好能把它和你的志向绑定在一起。首先,你得找到自己的兴趣。如果没找到,那请继续找。就像乔布斯所说的,你一定要找到自己所热爱的东西,然后坚持。如果你还没找到,可以通过下面这个方法来找到你的。

或者,更直截了当地:

怎样编程

“如果你让 4 个小组开发编译器,那么你就会获得 4 个编译器。”

康威定律的影响很大,因为软件工程师常常必须与分散在世界各地的同事一起构建系统。例如,我在一家大型托管银行工作的时候,曾参与开发过一个有很多服务的交易系统。除了两个服务之外,其余服务都是通过内部消息总线进行通信。然而,莫名其妙的,这两个服务通过互联网上的公共 API 进行通信。

就像大脑功能作为子组件运行一样,任何时空上分散的劳动力也是如此。

运用之道

在所有科技领域中,关于康威定律的补救措施,有一个最好的说法是逆康威模式(Inverse Conway Maneuver)。换句话说,通过改进团队和组织结构来促成所需的架构[4]。在这方面,亚马逊的双披萨团队可能算是最著名的例子了,故事是这样的:

2001 年,Amazon.com 是一个紧耦合的大型单体,维护难度很大[5]。

该网站被重建为多个微服务,每个微服务由一个专门的团队支持。因此,团队按照业务线(如购物车、推荐、广告)而不是技术线(如数据库、QA、开发)进行了重组。

T 团队保持较小的规模——人员数量以两个披萨能让团队所有人吃饱为限。公司和网站同时经历了一次重构。

怎样编程

这很好,但你可能没有能力开展公司范围的组织结构大调整。不用担心,有几种方法可以让你的组织,或者至少是你的团队,摆脱康威定律:

最重要的工作应该在时区重叠的时间内完成。我并不是说西海岸的同事要赶每天早上 6 点的接触点,但是真正关键的会议和结对开发应该安排在团队中大多数人都能参加的时间。

在招聘和组织工作中考虑到这种限制因素。虽然这很可能是你无法控制的,但你可以尝试向你的经理们传达康威定律。

接受它。如果你所在的组织是分布式的,那么或许你们的系统也应该是分布式的。避免与组织结构不协调的系统架构。

3)演示定律

如果这在世界一流工程师马斯克身上会发生,那么在你身上也会发生()

运用之道

接受演示经常会不顺利的事实,做好防范:

做最低限度演示 —— 在可以传达想法/应用/功能的前提下,尽可能减少展示内容。

实际的演示过程会比你预想的长。

至少提前 20 分钟到场,打开在线会议,准备好 PPT。没有什么比一屋子的工程师为如何打开在线会议而争论不休更令人厌恶的了。

准备一个备份演示。想象一下,你即将展示一个新的网站,而在演示前 5 分钟,AWS 出现了故障。你能在本地机器上运行几个页面吗?是否有一个部署在不同地区的低配环境等等......要为最坏的情况做好准备。

小黄鸭调试法

由于演示从来都无法完全按计划进行,你实际上可以利用这一点来发挥自己的优势。如果有什么东西不能正常工作,如你的 IDE 出了问题,你无法重现一个错误,诸如此类。那么,你可以利用演示定律,试着把它展示给一个朋友。通常,在谈论这个问题的时候,你会发现解决方案,或者问题会神奇地消失。

4)格雷沙姆定律

格雷沙姆定律来自 19 世纪的经济学,它指出:

“劣币驱逐良币” [6] ,或者更通俗地说“坏的挤走好的”。

Ben Hosking 在[7]中对格雷沙姆定律在软件工程中的应用做了很好的描述,我把它简单地归结为:

怎样自学编程入门?要掌握以下基础知识。1、软件环境的安装,2、输入、输出语句的使用 3、各种表达式的使用 4、变量的理解和使用 5、选择、循环结构的使用 6、文件操作 编程,其实就是利用特定的语言控制计算机,或者说和。

廉价的软件实际上非常昂贵[8]。

你希望三者兼而有之,但实际上应该把重点放在质量(Godd)上()

运用之道

在理想世界里,每个项目都很快,很便宜,而且还做得很好。然而,在现实中,我们只能追求 3 项中的 2 项,要明智地选择。在某些情况下,我们不得不仓促赶工,但根据格雷沙姆定律,“便宜”是一个谎言。那是技术债务。你应该总是追求把事情做好。

5)计划谬误

计划谬误的精彩描绘()

以下是计划谬误的几个实际的例子[14]:

悉尼歌剧院原计划于 1963 年完工。但事实是,它的缩小版在十年后的 1973 年才开放。最初的成本估计为 700 万美元,但因为延期成本增加到了 1.02 亿美元。

波士顿中央大道下的“大隧道”工程比计划晚了 7 年才完成,预算为 28 亿美元(1988 年),实际耗资 80.8 亿美元。

加州高铁仍在建设中,预计将超支数百亿美元,与主要城市的连接被推迟到农村段完成后。

运用之道

对任何被认为“应该很快/很容易”的东西持怀疑态度。

在任何时候,在给出最后期限时,务必谨慎地用试探性的问题来回应。例如,“如果 QA 团队在第一轮就碰到了 Bug,那么时间表会有什么变化?”像这样的基本问题可以帮助我们发现那些事后看来很明显的误区和盲区。

当有疑问时,将估计加倍。当应别人要求进行估计时,至少要按最初估计的两倍。有时候,我会按三倍,然后在对方的说服下改为两倍。

6)海勒姆定律

该定律是最近才提出来的,可以追溯到一名谷歌人的博客[12]。该定律指出:

当一个 API 有足够多的用户。

一、书本加视频 对于初学者来说,可以采用视频+书籍的方式进行学习。这两种方式形成互补关系。编程教学视频可以让你迅速掌握编程,但通常比较生动、浅显,不成系统。而书本是比较系统,深入,但是枯燥,所以最好的方法是书和视。

你在契约中承诺了什么并不重要:

系统中所有看得见的行为

都会有某个人依赖……

XKCD 漫画就是最好的例证:

运用之道

与墨菲定律类似,你必须注意,人们会以你意想不到的方式使用系统。因此,必须尽量缩小其范围。构建一个让用户可以用两种类似的方式做同一件事的 API?这会让用户感到困惑吗?尽量让接口一目了然、固执己见、简单易用,以至于幼儿园的小朋友都能使用。

最近,我在设计一个 API 时遇到了海勒姆定律描述的情况。简单起见,假设它获取一个用户列表:

fetchUsers() -> {Allan Apple,Bill Banana,Chris Carrot ...}

注意到用户是有顺序的了吗?排序过程是隐式的,因为是在数据库中完成的,API 契约中没有顺序保证。然而,考虑到海勒姆定律,我意识到,最终会有人依赖于这个顺序。因此,我在构建时将它作为 API 契约的一个默认参数fetchUsers(sort=True)。

7)帕累托法则

帕累托法则也被称为收益递减定律,或 80/20 原则,其适用范围很广。例如,根据 1989 年的估计,世界上最富有的 20%的公民拥有世界上 80%的财富(多么奇怪)。或者,20%的工作场所危险源导致了 80%的伤害。在软件领域,这体现在几个方面,我将直接引用维基百科的说法,因为它说得很好:

在计算机科学中,帕累托法则可以应用于优化工作。例如,微软公司指出,修复报告最多的错误中的 20%,可以消除特定系统中相关错误和崩溃的 80%。Lowell Arthur表示,“20%的代码包含了 80%的错误。找到它们,修复它们!" 人们还发现,一般来说,一款软件的 80%可以在分配的总时间的 20%内写完。反之,最难的 20%的代码需要 80%的时间。通常,这个因素是软件编码中COCOMO估算的一部分。

运用之道

要利用好帕累托法则,你可以采取以下措施:

先解决难题。

尽早将最棘手的工程挑战暴露出来很重要。80%的工作可能都潜伏在这里。

避免镀金,即过度设计。

一个很好的方法是承担更多的责任,这将使你专注于最重要的挑战,而不是细节。

我并不是说你应该同时处理多项任务,这通常很低效。我的意思是,不要在任何一项任务上花费超过一周的时间。当然,不是所有的任务都能在一周内完成,这就是问题的关键。如果给你的时间无限,你就会找活来干,这通常会导致镀金。然而,如果知道你要把它交给一个队友,那么你就必须确定什么最重要——也许只是创建一个包含 CRUD 方法的 REST API,或者仅仅是设置构建管道。通过快速参与和退出,你将在多个项目中完成 80%的工作。当你的同事花了整整一个月的时间把一件事情做到 100%的时候,你会把四件事情做到 80%,在某种意义上,你的生产力提高了大约 3 倍。我可以告诉你,当我成为一名高级开发人员时,我在许多项目中做出了贡献,这比我在之前的工作中从头到尾做一件事更有价值;在我看来,宽度>深度。

8)泰斯勒定律

图片来源:

又称复杂性守恒定律,其思想是,每个系统都有一个固有的不可约减的复杂性,如果要处理它,要么系统变得更复杂,要么交由用户来完成。Larry Tesler 认为,最好是花点工程时间来改进系统,而不是指望用户这么做。这是有道理的——如果你的应用有一百万用户,那么即使一个工程师花费一个月的时间从一项操作中减掉了几次点击,就可以为百万用户节省数百万次点击。

要熟悉编程范式,尤其是面向过程及面向对象这两种;要广泛阅读,多用编译器及IDE(网上有许多免费的)练习编程。选择一种编程语言。初学者一定要从主流语言开始学习,比如中级语言C和C++。这两种语言是任何一名合格、专业的程序员都。

在我自己的生活中,这种情况每天都在发生。当我和谷歌家居说,打开灯,改变它们的颜色。我必须给它两个单独的命令:

嘿,谷歌,把灯开到 50%……(等待 5 秒)……嘿,谷歌,把灯调为白光。

当然啦,在人工智能中支持复合命令难度很大,因此,用户吸纳了这种复杂性。

运用之道

避免增加用户负担的解决方案;观察用户如何使用系统,并设法发现不足。

总是选择花更多的时间在“正确方法”上,而不是“快速方法”上,即格雷沙姆定律。

像用户一样思考——你愿意使用你正在构建的功能吗?

买 8 赠 1——XY 问题

这本身不是一条定律,但感觉应该包括在内。当一个解决方案(Y)的提出没有充分考虑实际问题(X)的背景,就会导致更好的解决方案(Z)被忽视,浪费精力。考虑一下这样一个例子:

老板:“请加大这一页的字体。”(建议解决方案 Y)

工程师:“好的。”

老板(第二天):“你能把它改回来吗?用户说太大了。”

工程师:“好吧——我们一开始为什么要改?”

老板:“我们的一个用户用的是旧版本的 IE,字体渲染有问题。”(真正的问题 X)

工程师:“他就不能用 Chrome 吗?”(备选方案 Z)

运用之道

在上面的例子中,只要工程师问几个澄清式问题,就可以避免浪费精力。老板对解决方案(Y)的执着使他看不到可能更好的解决方案(Z)。

在现实生活中,XY 问题通常始于一些听起来可疑的事情。像“请把字体改大”这样的请求不是一个问题陈述,而是一个解决方案陈述。真正的问题是“此页面在旧的 IE 浏览器上显示不正常”。遗憾的是,有时候需要工程师来提取上下文信息,因为经常会缺少需求和工单。但好消息是,这通常并不难——只要说“让我们复盘下——我们要解决的问题是什么”,99%的情况下你都能成功。

你是怎么想的?我漏掉了什么重要的东西吗?我有什么地方理解的不对吗?欢迎留言,以便我可以修改这篇文章。

相关连接

1.

2. ;s%20Second%20Law%3A%20Nothing%20is,the%20one%20to%20go%20wrong.

3.

4.

1.坚持每天投入时间练习编程,把编程这件事像一日三餐一样对待,持之以恒。想要学好编程就需要长期的坚持,不可能一下子就把编程学好,所以想要学好编程,就要坚持每天动手写一写,切不可三天打鱼,两天晒网。2.想学好编程。

5.

6.

1.坚持每天投入时间练习编程,持之以恒。2.必须有规划地学习编程技术,同时参考有关编程的网课和官方文档。3.找一个资深编程老师,虚心学习。从网上找编程资料,多向编程大咖学习编程的方法和技巧。4.学会总结思考5.个人对。

7.

8.

9.

10.

12.

13.

上一篇 2023年01月16 10:40
下一篇 2022年12月22 01:52

相关推荐

  • 微信零钱限额怎么解除,微信零钱20w限额满了怎么办

    我想被微信零钱问题困扰的人今天应该不少。确实随着腾讯包括微信支付后台的不断更新升级,微信零钱支付的监管力度相比之前来说大大增强了(支付宝也是如此),特别是今年出台了一系列政策。最后才发现微信里面的零钱

    2023年01月09 244
  • 朋友圈怎样设置三天可见,朋友圈在哪设置仅显示三天

    微信朋友圈怎么设置三天可见?最近不少朋友咨询这个问题,今天孙师傅小窍门小妙招就来和大家聊聊这个话题。很简单,朋友圈在哪设置仅显示三天,就4步,3秒钟即可搞定。微信朋友圈设置三天可见怎么设置?具体操作步

    2023年01月01 258
  • 乐小米经典语录,小米客服回复经典语录

    1.因为你很重要,所以,我愿意为你坚强。2.南方有嘉木,北方有相思.嘉木风可催,相思不可断3.当今天变成昨天,当爱你变成爱过;时光吹散了少年,谁的等待,恰逢花开。乐小米经典语录1、那些从车窗划过的风景

    2022年12月09 208
  • 怎样导出电话卡联系人,导出SIM卡联系人

    本篇是前文《手机通讯录的高效管理技巧与好友生日提醒》的续集。进入一个新单位,需要尽快认识自己的同事,要不每次遇到都不知道如何称呼、非常尴尬。最近,我入职了新单位,为了尽快认识更多的人,我先后做了以下5

    2023年01月03 273
  • 天猫魔盒怎么用

    具体步骤:1、天猫魔盒和电脑必须在同一局域网内。2、被访问的一端进行共享设置,这边以win7和xp主机作为被访问的一端设置共享文件夹为例子。3、蚂蚁市场里下载安装个小白文件管理器Win7用户设置方法:

    2023年01月11 226
  • 淘宝怎么做,淘宝难做闲鱼好做

    淘宝运营是我们做淘宝店的一个热门话题,只有运营工作做好了我们的淘宝店才能够有一个比较高的销量。那么淘宝运营有什么要注意的呢?下面我们就来看看他敖包的运营入门步骤是什么。第一步:选择宝贝,选择商品永远是

    2023年01月15 221
  • 怎样重新下载微信

    IT之家9月22日消息,据网友反馈,华为WATCHGT3手表已开始推送2.1.0.405(C00M10)更新,手机从新下载微信,下载包大小为57.72MB,更新日志显示,本次新增了微信手表版,腕上沟通

    2023年01月02 298
  • 搞笑的qq个性签名,逗比个性签名搞笑

    经典搞笑个性签名1、也不知道,这么可爱的我,以后会便宜谁。2、如果你看不出我喜欢你,你可以去把你的眼睛捐给有需要的人。3、你说你有点难追,我就打断你的腿。4、一定要记住那些陪你聊到深夜的人,就是因为他

    2022年12月10 256
  • 户户通没信号怎么调,户户通没有信号强度0质量0

    包括户户通在内的所有卫星电视,最基本最常见排名第一的故障就是没有信号,也是户户通安装工接到电话最多的故障,排名第二的故障应该是“位置信息改变”,户户通没有信号强度0质量0,今天我们着重说一下没有信号这

    2023年01月10 213
  • 怎样恢复微信群聊,把群聊删除了就没有了吗

    把群聊删除了就没有了吗,不知道大家有没有这样的经历,那就是在清除微信聊天界面时将微信群不小心删除了,而如果后续没有人在群里发送消息,那么这个群似乎就找不到了。但如果群中没有共同的好友,那么我们还能利用

    2023年01月02 273
  • 移动卡一年没用会怎样,移动卡一年不用怎么办

    现在人们的生活中,几乎人手一个手机号或者多个手机号。手机给我们的生活带来了太多方便,移动卡一年不用怎么办,一般人一天不用手机,浑身都不舒服;手机号也是分不同的运营商,有电信的,有移动的,有联通的。不同

    2023年01月08 292
  • 图片怎么去水印,免费去水印网站

    相信大家都一样,免费去水印网站入口,在网上冲浪时看到漂亮的图片都会保存下来,当作各类软件的头像或是手机和电脑壁纸使用;可是常常会发现这些图片基本都带有水印,多多少少影响我们使用,这时我们想到的就是怎么

    2023年01月15 295
  • cad怎么激活,2022cad序列号001N1

    问题:重装系统后安装CAD,显示CAD未正确激活,怎么都不会弹出激活界面如下图。原因:是因为FlexNetlicensingservice服务被设置为手动启动导致激活界面无法弹出,只需将该服务修改为自

    2023年01月16 217
关注微信