阮一峰 科技爱好者周刊(第 175 期):知识广度 vs 知识深度

这里记录每周值得分享的科技内容,周五发布。

本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容。

周刊讨论区的帖子《谁在招人?》,提供大量程序员就业信息,欢迎访问或发布工作/实习岗位。

封面图

河北太行山脉,山头密密麻麻都被太阳能板覆盖了。(via

本周话题:知识广度 vs 知识深度

上一期谈到,“特长程序员”比“全能程序员”吃香。

网友发给我一个网址,国外有人已经谈过这个话题。

国外作者画了一张图,将世界上的程序员比喻成三种形状。

(1)大饼型:拥有知识广度,但没有知识深度。

(2)竹竿型:拥有知识深度,但没有知识广度。

(3)T 型:介于前两者之间。

那篇文章也认为,通常情况下,竹竿型程序员的出路最好,雇主愿意为知识深度买单。因为现代社会高度分工,越是大公司,岗位职责越明确,需要的是领域专家,而不是多面手。

但是作者提到,有一种情况例外,知识广度有明显优势,那就是确定项目路线的时候。

请看上图,右上角有一个黑点,那是公司的目标。当前位置在左下角的原点,两点之间没有现成的道路,需要自己寻找实现路径。

这时,知识广度就发挥作用了,了解的信息越广泛,知道的情况越多,就越可能具备洞察力,能够在多条路径里面,选出最合适的道路。知识面狭窄的人,由于不了解其它道路,不管遇到什么问题,可能都选择他会的那一条路,比如 Java。

这就是全能程序员的优势,判断正确的仰角 θ,使得两点之间距离最短;特长程序员的优势是前进速度 r,可以在既定道路上做到快速前进。所以,知识的广度能告诉你什么是正确的方向,知识的深度则可以让你在该方向上快速前进。

对于长期而艰巨的项目,走得快固然重要,但更重要的是走对方向。如果仰角 θ 不对,走得再快也没用,因为一开始就走错方向,后期必须停下来校正方向,甚至可能永远到达不了目标,白白浪费了生命。

因此,全能型的人才比较适合确定项目方向,担任团队领导。 乔布斯、马斯克就是这样的人,强在知识的广度,而不是知识的深度。他们既懂技术,又懂市场和管理,还了解人文(“我喜欢站在人文和技术的交叉点”),一旦掌握资源,就能带领团队,做出创新的产品。但是,如果让他们担任工程师,绝对是糟糕的工程师,会被开除。

不过话说回来,现实中,谁会因为你知道的事情多,就让你担任团队领导呢?反而是因为你克服了技术难题,才有机会来领导团队。乔布斯和马斯克都是自己创业才出头的,恐怕不是偶然。

总结一下,对于公司来说,如果有明确的技术方向,那么就需要聘请特长程序员,帮助加快开发速度。如果是刚刚诞生的创业公司,方向还在摸索之中,那么全能程序员也许更有价值。

设计师零基础入门

随着互联网一起飞速发展的职业,除了程序员,就是设计师了。

大家知道吗,设计师的招聘需求,一点不比程序员少。而且,由于自学的难度高,好的设计师有时比程序员更难求。

国内的设计师一直存在巨大的人才缺口,供不应求。设计师的平均工资,北京市今年达到了18K,可能已经超过了程序员的平均工资。

在互联网公司的产品团队里面,设计师都是标配,而且往往不止一个,前端程序员都有对接的设计师。大型团队的设计师,还有明确的分工:UI 设计师、平面设计师、交互设计师……

周刊每周介绍的课程,一般都是程序员课程,今天是第一次,向大家介绍一个免费的设计师课程 《零基础学 UI 设计 & 视觉设计》

如果你想增加一些设计知识,或者就是想成为设计师,去互联网公司或广告公司求职,那么就是这个课程的目标听众。

课程分成三天,老师先讲解海报设计、品牌设计、UI 设计的一些要领,然后带你完成一个真实的海报设计项目和一个名企品牌的设计方案,最后还会分享设计师的市场行情和职业规划。它可以当作设计师入门培训,也可以当作求职训练。

该课程由国内著名的培训机构“开课吧”提供,三天的讲课之中,除了体验如何完成设计项目,动手实操海报创意作品以外,还可以获赠设计的学习资料包。

微信扫描上方二维码,或者点击这个链接,添加助教老师就可以报名。感兴趣的朋友,不妨听听看。

科技动态

1、高科技软甲

《自然》杂志报道,科学家最近研发出一种 3D 打印面料,可以做成人体软甲。

这种材料是一种聚合物,而不是针织物。它的最大特点是能在柔软和坚硬两种状态之间切换。处于柔软状态时,它易弯折,可以贴附在人体表面。

但是一旦成型以后,它会变得异常坚硬,能够承受巨大的外力。因此,可以用作运动员、军人的外骨骼和防弹衣。

2、智能机器马

小鹏汽车发布了一款可以乘坐的智能机器马,其实就是一个四足机器人,带有摄像头、激光雷达等汽车级别的智能驾驶系统。

它可以当作玩具,让小朋友骑,会自动行进,智能避障,并且能跟小朋友进行互动对话。小朋友抚摸机器马,它也会做出反应。

此外,它还可以当作载具,在主人取货、逛街、远足时载货。它的具体发售日期和售价,还没有公布。

3、新陈代谢速率

《科学》杂志报道,科学家发现人体新陈代谢的速率,与以前认为的不一样。

  • 1岁时,新陈代谢达到最高点。
  • 1岁到20岁,新陈代谢每年放缓约3%。
  • 20岁到60岁,新陈代谢保持稳定。
  • 60岁以后,每年下降约0.7%。

这意味着,青年和中年时期,人体的能量消耗速度并没有下降。

所以,20岁到60岁之间,节食可以减肥,因为新陈代谢并没有放缓,只要吃得少,体重就会下降。进入60岁以后,就很难通过节食减肥,因为新陈代谢每年都在下降,节食效果越来越小。

4、SpaceX 的民用航天项目

SpaceX 公司预定在下周三(9月15日),发射一艘宇宙飞船,四名宇航员全部都是平民。这是历史上第一次“平民宇航员”的宇宙飞行,为将来的太空旅游做尝试。

这四名乘客此前没有任何宇航经验,他们将在太空停留三天。这与贝佐斯今年7月份仅仅持续50分钟的“飞出大气层”之旅完全不一样,更接近真正意义上的“太空旅游”。

5、道路使用费

美国国会最近通过了一项计划,研究征收统一的道路使用费是否可行。

目前,世界各国都对汽油额外收费,用于道路维护,比如美国征收汽油税,中国征收燃油附加费。但是,越来越多的人开始使用电动汽车,不再使用汽油车,这笔钱就收不到了。

为了给道路维护提供资金,确实应该找到一种办法,按照行驶里程,对所有车辆征收道路使用费。

6、小行星撞地球

根据美国宇航局的计算,有一颗叫做 Bennu 的小行星,直径约为492米,将在一个多世纪后的2135年到2200年之间,在地球和月球之间经过,而且不能排除撞上地球的可能性。

早先的计算是撞击概率为2,700分之一,后来经过修正为1,750分之一。不过,就算千分之一的可能,真的相撞了,那时的科技应该有改变小行星轨道的方法。

7、Mac 专用机械键盘

很多人不喜欢笔记本电脑的键盘,不如机械键盘手感好。一家英国的键盘公司,就发明了一种供笔记本电脑使用的便携式机械键盘。

使用时,套在 Mac 笔记本键盘上方即可。这样的话,既提供了良好的打字手感,又不必适应不同的键盘布局。

文章

1、青海冷湖:东半球唯一一个世界级天文台址诞生记(中文)

中国国家天文台经过3年连续监测认定,青海冷湖的光学观测条件比肩国际一流大型天文台。

这一发现为中国光学天文发展创造了重大机遇,也为国际光学天文发展提供了宝贵的战略资源。8月18日的《自然》杂志公布了这项重大科学进展。

2、中国的实验室猴子短缺(中文)

生物医药研究,都需要用到实验室猴子(主要是猕猴)。猕猴是国家保护动物,不能去野外抓,只能从养殖场购买。由于疫情,猴子供应紧缺,价格飞涨。本文介绍了国内实验室猴子的状况。

3、使用 React.memo() 提高组件性能(英文)

默认情况下,如果 React 父组件重新渲染,它包含的所有子组件都会重新渲染,即使子组件没有任何变化。

React.memo() 方法可以防止子组件不必要的渲染,从而提高组件性能。

4、CSS 盒状模型的 block 和 inline 之分(英文)

CSS 盒状模型的bordermarginpadding属性,有 block 和 line 之分,比如paddingpadding-inlinepadding-block两个子属性。本文介绍这种区别。

5、elm 语言的使用心得(英文)

作者在生产环境使用 Elm 将近两年了,写了10万行代码。这篇文章详细评价了 elm 语言,给予很高的评价。本文写得很好,推荐阅读。

6、NetBSD 解释(英文)

一篇科普文章,介绍什么是 NetBSD 操作系统,它的由来和特点。

7、Let's Encrypt 的免费替代品(英文)

现在大家都用 Let's Encrypt 生成免费的 HTTPS 证书,本文介绍其它三个类似的免费证书服务。

8、JavaScript 涟漪动画(英文)

一篇简单的 JavaScript 教程,介绍如何在 Canvas 上面,使用正弦函数画出涟漪动画。

工具

1、Clip It

一个智能视频剪辑软件,分析 OBS 软件的直播视频,从中选出精彩片段,通过人工智能自动生成一段精选视频。

2、NvChad

一个 NeoVim 编辑器的插件集合,将其变成一个完备的 IDE 开发环境。你也可以用它来了解 NeoVim 编辑器需要安装什么插件。

3、Lit

谷歌推出的基于 Web Components 的前端框架,非常小巧(5KB),用法很优雅。

4、intellij-media-player

这个插件可以让 JetBrains 公司的 IDE,在背景里面播放视频。适合在同一个窗口,一边编码,一边看视频。(@wuyr 投稿)

5、markdown-tweet-scheduler

使用 GitHub Actions 将仓库里面的 Markdown 文件,定时发到推特上面。

6、Webpack to Vite

这个工具可以将 Webpack 项目转为 Vite 项目。(@Chieffo2021 投稿)

7、Act

一个在本机搭建 GitHub Actions 环境的工具,让你在本机运行 GitHub Actions,可以用来验证 workflow 文件是否正确。

8、TypeIt

一个 JS 库,用来在网页上生成打字机输入文字的动画效果。

9、Gitfs

这个工具把一个远程 Git 仓库挂载到本地目录,该目录所有的变动自动提交到 Git,并推送到远程仓库,因此也可以回滚到任意时点。它相当于实现了基于 Git 的文件系统。

资源

1、商务部国别指南

商务部网站提供全世界各国的《国别指南》,PDF 文件免费下载,详细介绍各国基本情况,内容非常实用。

2、交互式线性代数

一本英文的初级线性代数教材,免费在线阅读,并提供 PDF 下载,最大特点就是配有很多图片,方便理解。

3、机器学习入门

瑞典乌普萨拉大学的《机器学习》英文教材,针对大学新生,有 PDF 全书下载。

4、Merlin

一个手机 App,用来识别看到或听到的鸟类,特色是可以根据鸟的叫声识别是什么鸟。

5、技术面试手册

工程师如何准备技术面试的英文免费电子书,全书分成两部分:面试本身的准备和技术知识的准备。GitHub 有5万多颗星。

图片

1、中银胶囊塔大厦

1972年,日本东京建造了一个胶囊大厦,使用140个预置的公寓单元,堆叠成一幢楼,称为中银胶囊塔。

建筑师的设想是,以后可以随意更换某个单元,使用新的胶囊替换旧的,不影响其他单元。但是建造完成后,开发公司就破产了,所有单元后来都没有更换过。

更糟糕的是,由于组合结构本身的缺陷,以及建造质量不过关,建成后一直有漏水问题,导致内部结构生锈,破损不堪。前几年,政府决定拆除这栋楼,但是一直没有动工。

目前,楼里只有少部分的房间,还有人居住。前几年,有一位摄影师拍摄了一些胶囊大楼居民的生活状态。

2、古斯塔夫·哈肯松

1951年,66岁的瑞典人古斯塔夫·哈肯松(Gustaf Håkansson),报名参加一个超长距离1764公里的自行车比赛。主办方拒绝了,理由是他的年纪太大了,比赛只允许40岁以下的人参加。

但是,他还是跟选手一起出发了,但不是正式参赛者,而是在最后一名参赛者出发后一分钟出发,并穿着一件写着零的号码牌衬衫。

比赛分成好几天,其它参赛者睡觉时,古斯塔夫·哈肯松依然在骑车。他留着很长的白胡子,显得更加苍老。许多报纸都报道了他的故事,引起了全国的关注,他变成了知名人物。

经过6 天 14 小时 20 分钟,他率先到达终点,比其它参赛者早了 24 小时。人们在终点迎接他。

他一直活到了1987年,102岁逝世。

3、空中看极光

一位欧洲宇航员在国际空间站,拍到了地球南极的极光照片。

最难得的是,那天是满月,所以光照非常好,可以清晰地看到云层和地面,非常壮观。

文摘

1、错误的面试答案,让我得到了工作

2007年,我去一家公司应聘程序员。当时,为了应聘成功,我不得不故意答错了一个问题。你可能觉得很奇怪,让我解释一下怎么回事。

面试官有两个人:技术团队的负责人和公司总经理。总经理是技术负责人的上级,技术负责人对我进行提问。

一开始是几个一般性的问题,然后他问我“什么三层架构”?

我回答说,“三层架构”就是客户端-服务器-数据库。我还补充说 Web 浏览器就是最常见的瘦客户端。他们似乎对我的回答很满意。

他接着问:“三层架构与 MVC 模式(模型-视图-控制器)有什么关系?”

我知道,这个问题有一点棘手。大多数人都会将两者等同起来,但是实际上,MVC 模式只用于中间的“应用程序”层,并不涉及客户端和数据库。

维基百科是这样解释的:

“三层架构”的一个基本规则是,客户端不直接与数据层通信,所有通信都必须通过中间层。因此,从概念上讲,三层架构是线性的。

然而,MVC 模式是三角形的:视图层向控制器发送更新,控制器更新模型,模型的更新又直接触发视图的更新。

我原想这样回答,但是我怀疑,面试官认定的正确答案,就是大多数人的错误答案。如果我说出自己的答案,他会认为我是错的。

要是我当面指出他的错误,而他的老板又在一旁,就等于在老板面前让他丢脸。那么,他可能会坚持自己的立场,拒绝我的正确答案,挽回自己的面子。他也可能承认自己错了,当众丢脸。

我觉得这两种结果都不好,最后决定,我必须回答他们眼中正确的答案。

我先试探着,说出我的正确答案,看看对方的反应。

“MVC 模式是一种软件模式,属于代码的组织形式,大多数情况下,仅在应用程序层运行……”

我看到技术负责人皱着眉头,所以猜想这不是他预期的答案。我就改口说:“视图对应用户界面,控制器对应应用层,模型对应数据库”。

搞定!回答正确!大家都很高兴,我得到了这份工作。

这个故事告诉我们,面试不仅仅需要技术技能,还需要人际交往能力。这也很合理,因为实际工作中,确实两种能力都需要。

言论

1、

宇宙诞生于138亿年前的大爆炸,可能会在未来数十亿年后终结。我们还不知道宇宙到底是什么,但是无论宇宙是什么,它肯定与我们人类无关。我们越了解宇宙,宇宙也就越发显得毫无意义。

-- 史蒂芬·温伯格,不久前去世的诺贝尔奖得主、美国物理学家。这是他的畅销科普书《宇宙诞生后的前三分钟》里面的名言。

2、

自由软件运动,本质上不是一场软件运动,而是一场社会运动,因为它的核心是提倡一种基于“共享”的意识形态,要求成员相互支持和帮助。

-- 《理查德·斯托曼与自由软件的历史》

3、

许多企业拒绝自由软件,提出质疑:如果一家公司免费赠送软件产品,它如何生存?

理查德·斯托曼不得不向他们解释:自由软件只是要求给予用户自由,而不是提倡免费。但是,企业无法理解这种意识形态的细微差别。

-- 《理查德·斯托曼与自由软件的历史》

4、

日本的卡通片画师,画一帧可以赚 1.80 美元,有时一个月只能画 300 帧,总收入为 540 美元。这点钱维持生计非常困难,所以日本动画师离职率极高。

-- 《日本动画师离职率高达90%》

5、

我在普林斯顿大学学习物理学时,曾经与一个同学一起花了三个小时,研究一个非常困难的偏微分方程,但一无所获。后来,我们去找了班上最聪明的同学,他看了几分钟就说:“余弦变换可以解”。我们表示不理解,他就写了三页纸的答案,并说几年前就解过类似的问题。

因为这件事,我知道自己永远不会成为一名伟大的理论物理学家,所以就改学了计算机。

-- 贝佐斯,亚马逊公司的老板,回忆大学生活

历史上的本周

2020年(第 124 期):华为如何考核员工

2019年(第 72 期):当代人不再有手稿

2018年(第 21 期):人生的水平运动和垂直运动

订阅

这个周刊每周五发布,同步更新在阮一峰的网络日志微信公众号

微信搜索“阮一峰的网络日志”或者扫描二维码,即可订阅。

(完)

© Licensed under CC BY-NC-SA 4.0

通往地狱的路,都是由善意铺成的——哈耶克

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!