# 科技爱好者周刊（第 191 期）：一个程序员的财务独立之路

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

本杂志开源（GitHub: [ruanyf/weekly](https://github.com/ruanyf/weekly)），欢迎提交 issue，投稿或推荐科技内容。

周刊讨论区的帖子[《谁在招人？》](https://github.com/ruanyf/weekly/issues/2139)，提供大量程序员就业信息，欢迎访问或发布工作/实习岗位。

## 封面图

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010201.webp)

美国的 RobotReport 网站，评选波士顿动力公司的跳跃机器人为2021年度技术突破之一。根据8月份的视频，该公司的机器人已经可以跳跃了，只见它双手一甩，从左边的台子挺身跃起，稳稳落在右边的桌子上。（[via](https://www.therobotreport.com/12-memorable-robotics-moments-of-2021/)）

## 本周话题：一个程序员的财务独立之路

本周，推荐一篇美国程序员的[文章](https://software.rajivprab.com/2021/12/26/my-path-to-financial-independence-as-a-software-engineer/)。

作者20岁时第一次当实习生，发现在 IT 行业，普通人有可能在30多岁就实现“财务独立”，不再为维持生计和支付日常账单而劳碌。以前，他一直以为每个人都需要工作到退休。

从此，他就将财务独立作为自己的人生目标。

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010313.webp)

2009年，他大学毕业了，没有任何积蓄，进入英特尔公司担任初级工程师。当时的年薪是10万美元，年支出3.8万美元，再扣掉税，第一年就有了3.5万美元的净资产。

以后，他每年都记账。在这篇文章里面，他公开了收入和支出（见下表）。十二年以后的2021年，他已经是亚马逊的高级工程师，年薪62.5万美元（含股票），年支出7.8万美元，净资产达到了240万美元（含股票）。

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010312.webp)

他详细说了，自己怎么经过十二年的奋斗，在35岁做到财务独立，我觉得很有借鉴意义。

（1）**首要的努力方向，就是追求工资提升。** 普通人的收入来源，主要还是本职工作，如果工资很低，根本不可能实现财务独立，所以必须想方设法提高工资。

一般来说，大厂的高级职位可以拿到稳定的高工资。所以，他要求自己一定要进大厂，并且做到高级工程师。

（2）**每过三年，就到别处面试。** 他一般三年换一家公司，这样可以获得显著的加薪和晋升。他说每次换公司，收入至少增加30%。另外，还可以让自己始终拥有一种进取的心态，不断处于学习和成长的环境之中。

不过，换公司是双刃剑，为了获得更高的薪酬，就需要在面试和工作中给别人留下深刻印象，后面的公司对你的要求也会越来越高。

（3）**建立良好的职业履历。** 要通过大厂的面试，必须有良好的职业履历。最早的时候，他的履历没有特别的亮点，他就去一个名校，读了一年制硕士（欧美硕士一般都是一年）。这会带来很多职业机会（前提是必须为 Top 5 名校），同时一年的时间成本相对较小。

不过，IT 行业跟律师和金融业不一样，就算没有名校经历，只要自身水平过硬，也能求职成功，只是开始时的机会可能会少一些。

（4）**优先加入增长最快的领域。** 一个行业增长越快，产生的机会越多，越容易涨工资。在机会面前，你不要害怕改变专业领域。

他是硬件工程师出身，进入行业时在英特尔做硬件。后来发现互联网机会更大，他就跳到互联网公司当软件工程师。现在，机器学习很热门，他又去尝试这个领域。

（5）**投资你的钱。** 有了积蓄以后，不要让钱在银行闲置，要学会投资。他的很大一部分资产是股票，虽然投资过程中经常遭遇损失，但还是比放在银行增长快得多。

（6）**节制消费。** 想要财务独立，一定要控制消费。他认为，钱要花在生活必需品，不要花在奢侈品（比如高档车）。钱也不要用于享受，但可以用来增加体验。他说自己始终认为，跟物质享受相比，财务独立才是人生最大的奢侈品。

另外，购买房屋通常是最大的财务决定，务必要想清楚。他有能力购房以后，还是选择租房，而且跟别人一起合租，因为感觉这样在财务上更灵活。不过那是在美国，跟国内的情况不太一样。

以上就是他的一些主要做法，供大家参考。

## Go 语言高频面试题

去年，周刊推送过一份《Go 语言高频面试题》，很受欢迎。如果你错过了，可以过来看一下。

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010608.webp)

最近，Go 新版本 1.18 正式加入了泛型，这是近几年来这门语言最大的功能增强。可以预见，它的应用领域还会进一步扩展。

Go 已经是国内的第二大互联网开发语言，仅次于 Java，各大厂都在用于生产环境。这导致 Go 语言的招聘岗位一直很多，而开发者相对稀缺。

所以，Go 很值得学习。一方面，它本身具有很强的生产力；另一方面，它的行业应用很广，容易求职。

这一份 **《Go 语言高频面试题》** 资料，收集了2021年国内各大厂的面试真题，共250多道，按照学习顺序分类编排，每道题都包括简要的解题思路讲解，可以作为面试或学习指南。

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021120102.webp)

整份资料一共134页，除了 Go 语言的部分，还带有一个附录，包括跟后端开发相关的一些其它面试真题。

它是由知名的工程师学习平台[“极客时间”](https://time.geekbang.org/)制作的，他们为了推广 Go 的学习品牌，特别向周刊读者赠送。

现在领取的读者，还能获赠一份2021版的 **《数据结构与算法面试题讲解》（113页）**。

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010606.webp)

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010605.webp)

微信扫描上方二维码，添加助教老师，就可以 **免费领取** 这些资料。因为是手动发送，添加老师后，还请大家保持耐心。

## 2021年度最佳新产品

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010301.webp)

美国《大众科学》杂志，评选出了[2021年度最佳的100种新产品](https://www.popsci.com/technology/best-of-whats-new-2021/#Aerospace)，包括 mRNA 疫苗、苹果公司的 M1 芯片、SpaceX 公司的龙飞船等著名产品。

下面是其中一些很有趣、但不那么出名的新产品。

**1、键盘贴纸**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010302.webp)

微软推出了一套可触摸的键盘贴纸，供盲人和视障人士使用。只要贴在笔记本电脑的某个位置，盲人就可以触摸识别，比如贴一个圆圈在 Win 键上。

这种贴纸对正常人加快盲打速度也很有帮助。

**2、磁铁睫毛膏**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010303.webp)

一家美国公司推出了含有氧化铁粉末的睫毛膏，并配有磁性睫毛刷。只要一刷，化妆品粉末就能均匀分布到睫毛各处，并且能让睫毛获得最大长度和弯曲。

**3、健康追踪内衣**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010304.webp)

这款运动内衣，内置了电池和传感器，可以24小时感知穿戴者的睡眠质量、运动压力和心率，从而确定健康状况和健身安排。

**4、飞机蓝牙系统**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010305.webp)

飞机座椅背后的电视屏幕，以前只能连有线耳机。松下公司开发了一套新系统，允许乘客用自己的蓝牙耳机连接。

在飞机这样狭小的金属机身里面，同时让所有乘客都能有稳定的蓝牙连接，并不是一件容易的事。但是，松下这套系统效果很好，已经有航空公司开始采用它。

**5、太阳帆**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010306.webp)

人类迄今发射的宇宙飞船都带有动力系统，美国宇航局研发成功不带有动力系统的太阳帆。它基本上就是一大张镀铝的塑料膜，依靠太阳喷射出来的粒子流（太阳风）推动前进。

它可以用来追踪高速飞行的小行星，计划在今年7月发射。由于不需要携带燃料和动力系统，它的造价只有传统飞船的十分之一。

**6、氢气炼钢**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010307.webp)

传统的炼钢方法是使用焦炭，将氧化铁矿石里面的氧元素还原出来，这个过程会产生大量的二氧化碳。

为了减少二氧化碳排放，一家瑞典钢铁公司发明了氢气炼钢，不使用焦炭，而是用氢气将氧元素还原出来。这样不会产生二氧化碳，只产生水。

**7、立体镜头**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010308.webp)

佳能公司发布了一款两眼的镜头，只要把这款镜头安装在普通相机上，就能拍摄立体视频。这个镜头的每个眼用到一半的图像传感器，使用视频制作软件 Adobe Premiere 的插件，就能将两眼拍摄到的图像叠加在一起，得到立体视频。

**8、空中加油无人机**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010309.webp)

波音公司新开发的无人机，可以为战斗机空中加油，从而使空中加油变得更简单和方便，不需要额外投入飞行员。

它对航母的意义尤其重大，海上作战时，战斗机就不必返回航母加油了。美国海军可能会订购70架这种空中加油无人机。

**9、雷达摄像头**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010310.webp)

传统的监控都使用摄像头，通过视觉侦测判断是否有入侵。美国的 Ring 公司发布的一款家庭监控器，除了摄像头，还加上了电波侦测，相当于一个微型的雷达。

这个雷达可以在10米范围内跟踪运动的物体，再加上摄像头识别物体。两者结合起来，就能更好地判断是否出现异常情况。

**10、两栖摩托艇**

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010311.webp)

一家法国军工公司开发了两栖摩托艇，在海上是高速快艇，到了岸上，它的底下会升出两排履带，变成履带车。它适合登陆作战，到了海滩以后，士兵不用下艇，接着驾驶到合适的登陆位置。

## 文章

1、[令人困惑的 HDMI 2.1](https://www.cnbeta.com/articles/tech/1215181.htm)（中文）

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121404.webp)

本文介绍了高清视频 HDMI 2.1 标准，并且讨论了一个外行人容易误解的细节：由于标准化组织的奇怪规定，HDMI 2.0 设备都可以自称符合 HDMI 2.1 标准。

这里是中文译文，另有[英文原文](https://tftcentral.co.uk/articles/when-hdmi-2-1-isnt-hdmi-2-1)。

2、[德国最受欢迎的程序员技能排行](https://pkdyn.mozello.site/blog/params/post/3910923/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121508.webp)

有人统计了德国程序员招聘广告里面，出现频率最高的技能，跟中国的情况基本一致。大家可以看看，什么技能容易在德国就业。

3、[自制 NFC 唱片卡](https://hicks.design/journal/moo-card-player)（英文）

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121108.webp)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121109.webp)

作者将 NFC 标签，贴在纸卡片的背后，然后将唱片的数据写入 NFC 标签。手机只要靠近这些纸卡片，就可以读取数据，自动播放这张唱片。

这篇文章值得借鉴，学习怎么使用 NFC 标签。

4、[node_modules 目录放入代码仓库](https://www.jackfranklin.co.uk/blog/check-in-your-node-dependencies/)（英文）

本文提出 Node.js 项目的 node_modules 目录可以放入代码仓库，尤其是在公司内网，有很多好处。

5、[where 与 having 子句的区别](https://sql-bits.com/the-difference-between-where-and-having/)（英文）

SQL 查询有 where 子句和 having 子句，它们的区别是什么？

6、[如何在 Mac 安装 Rails](https://rails.new/)（英文）

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121401.webp)

这个网页很别致，以可视化的形式，给出命令行怎么安装 Rails。

7、[为什么 ISO 格式应该被淘汰](https://bkhome.org/news/202112/why-iso-was-retired.html)（英文）

磁盘的镜像文件有两种格式：ISO 和 IMG。作者认为 ISO 文件格式应该被淘汰，只使用 IMG 格式。

8、[显示服务器是什么？](https://zamundaaa.github.io/wayland/2021/12/14/about-gaming-on-wayland.html#display-servers)（英文）

本文是一篇长文里面的一节，解释 Linux 系统里面显示服务器的作用（X11 协议和 Wayland 协议），写得很通俗。

## 工具

1、[xxh](https://github.com/xxh/xxh)

远程服务器登录的时候，往往只有 Bash 可用。这个工具可以把你本地的 Shell 环境（zsh、fish 等等）自动带到远程服务器。

2、[Pico.css](https://github.com/picocss/pico)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121501.webp)

一个极小化的 CSS 框架，只有 8KB，优雅简单，功能也不弱。

3、[uBlacklist](https://github.com/iorate/uBlacklist)

一个浏览器插件，可以从 Google/Bing 的搜索结果里面，去除指定网站或 URL。

4、[Lapce](https://github.com/lapce/lapce)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121405.webp)

一个 Rust 语言写的轻量级代码编辑器，速度极快，功能上模仿了 VS Code，支持 Windows 和 MacOS。

5、[console-helper](https://marketplace.visualstudio.com/items?itemName=AT-9420.console-helper)

一个 VS Code 插件，只要在 JavaScript 脚本里面选中一个变量，就可以自动为这个变量插入一行`console.log`打印语句。（[@moore529](https://github.com/ruanyf/weekly/issues/2141) 投稿）

6、[PPTist](https://github.com/pipipi-pikachu/PPTist)

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010613.webp)

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010614.webp)

一个 PPT 网页应用，还原了大部分 PowerPoint 常用功能，支持 PPT 的在线编辑、演示和导出。这里有 [demo](https://pipipi-pikachu.github.io/PPTist/)。（[@pipipi-pikachu](https://github.com/ruanyf/weekly/issues/2145) 投稿）

7、[My LightNote](https://apps.apple.com/us/app/lightnote/id1546030973)

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010612.webp)

一个 MacOS 的网页收藏器，支持分类、标记、收集图像、添加标签，所有数据都保存在你的 iCloud。（[@hite](https://github.com/ruanyf/weekly/issues/2144) 投稿）

8、[Internal App Store](https://github.com/SimonMarquis/InternalAppStore)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121406.webp)

一个开源的安卓 App 商店，可以用来搭建自己的应用商店。

9、[GDBFrontend](https://oguzhaneroglu.com/projects/gdb-frontend/)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021121407.webp)

调试工具 GDB 的一个前端，可以在图形界面上调试  C/C++ 程序，使用 Python 语言写的。

## 资源

1、[彻底理解中国山水画生成器](https://zverok.github.io/blog/2021-12-28-grok-shan-shui.html)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021122903.webp)

[中国山水画生成器](https://github.com/LingDong-/shan-shui-inf)是一个很有名的软件，一个老外用户很惊叹，希望把它彻底搞懂，就写了这个由24篇文章组成的系列，逐一分析代码，看看能否自己重新实现。（[@ameizi](https://github.com/ruanyf/weekly/issues/2140) 投稿）

2、[ES proposals](https://www.proposals.es/)

![](https://cdn.beekka.com/blogimg/asset/202111/bg2021113002.webp)

该网站列出了 ECMAScript 标准所有各阶段的提案。

3、[eja.tv](https://eja.tv/)

![](https://cdn.beekka.com/blogimg/asset/202111/bg2021112908.jpg)

该网站收集全世界可以网上免费观看的电视频道，目前一共收集了4029个频道，提供地区和语言分类。

4、[黑客杂志《PoC || GTFO》](https://evmn.github.io/post/2021-12-31-PoC-or-GTFO.html)

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010611.webp)

这本在线刊物收集了世界众多黑客在逆向分析、渗透测试、生活感悟等方面的文章，再由编辑润色排版，图文并茂。国内网友特别制作了电子书，提供下载。（[@evmn](https://github.com/ruanyf/weekly/issues/2143) 投稿）

5、[DareBee](https://darebee.com/workouts.html)

![](https://cdn.beekka.com/blogimg/asset/202112/bg2021120206.webp)

这个网站收集了1700多种身体锻炼的方法，每种方法都有插图说明。

## 图片和视频

1、[小飞机坠机视频](https://www.avweb.com/aviation-news/plane-crash-video-sparks-online-backlash/)

一个美国飞行爱好者说，自己的小飞机在空中发生故障，螺旋桨停转力后坠毁，他不得不跳伞逃生。事后，他将视频放上网，这种第一视角的坠机视频，真是难得一见。

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=t33160qjg4y" allowFullScreen="true" width="600" height="400"></iframe>

由于拍摄得太过完美，很多人质疑这场坠机是故意安排的，美国航空管理局 FAA 宣布进行调查。

2、[南非穷人怎么上网](https://restofworld.org/2021/south-african-students-are-selling-school-wi-fi-passwords-for-lunch-money/)

![](https://cdn.beekka.com/blogimg/asset/202111/bg2021110401.jpg)

南非穷人负担不起手机流量上网，只能在围墙栏杆外面，蹭学校的 Wifi 上网。Wifi 的密码是学生卖给他们的，用来换取一点午餐费。

## 文摘

1、[为什么关系型数据库更流行](https://news.ycombinator.com/item?id=28736405)

现在最流行的数据库都是关系型数据库。这种数据库以表格的形式存储数据。

但是，现实世界中，事物之间的关系不像表格，更像一张互相连接的网。也就是说，图数据库才是描述事物更合适的方式，也更容易扩展和理解。

![](https://cdn.beekka.com/blogimg/asset/202201/bg2022010610.webp)

那么，为什么关系型数据库才是主流，图数据库始终属于小众应用？

原因跟数据的存储媒介有关。磁带发明以后，没过多久，关系型数据库就诞生了，这不是偶然的。因为磁带的数据是线性存储，关系型数据库恰恰最适合线性读写数据。

磁盘是磁带的继承者，也是线性存储，这决定了关系型数据库的主导地位。

2、[滑坡谬误](https://zh.wikipedia.org/wiki/%E6%BB%91%E5%9D%A1%E8%AC%AC%E8%AA%A4)

滑坡谬误（Slippery slope）指的是使用一连串的因果推论，夸大了每个环节的因果强度，而得到不合理的结论。

![](https://cdn.beekka.com/blogimg/asset/202108/bg2021081405.jpg)

它的典型形式是，“如果发生 A1，接着就会发生 A2，接着就会发生 A3，接着就会发生 A4，……，接着就会发生 An”，然后推论“由于 An 不应该发生，因此我们不应允许 A1 发生”。

从 A1 推论至 An 的过程就像一个滑坡。

它的问题在于，每个“坡”的因果强度不一，有些因果关系只是可能、而非必然，有些因果关系相当微弱，有些因果关系甚至是未知或缺乏证据，因而即使 A 1发生，也无法一路滑到 An，An 并非必然发生。

若有充足证据显示每个“坡”都有合理、强烈的因果连结，即不构成滑坡谬误。

> 例一：如果我今天借了10元给小明，他明天又会跟我借一百元，接下来就借一千元、一万元，我岂不破产？

小明今天借十元也不表示明天就会借一百元，就算明天借一百元也不表示以后就会借一千元，就算小明借一千元甚至一万元，也不表示说话者就会破产。

>　例二：孩子如果不上好的小学，就考不上好的中学，之后就考不进好的大学，接着会找不到好的工作，然后会穷困潦倒，一生就毁了！

孩子如果不上好的小学，也不表示之后就考不上好的中学；就算考不上好的中学，也不表示就考不进好的大学;就算考不进好的大学，也不表示就找不到好的工作；就算找不到好的工作，也不表示会穷困潦倒；就算穷困潦倒，也不表示一生就毁了。

> 例三：员工偷懒公司便会损失，公司赚不到钱就要裁员，被裁员的人会没工作，没工作的人为了生计就会铤而走险。因此，上班偷懒是非常严重的问题。

公司损失不表示公司会赚不到钱，就算公司赚不到钱也不表示公司就要裁员，就算公司裁员也不表示被裁的人会走投无路，就算被裁的人走投无路，也不表示会为了生计铤而走险。

## 言论

1、

C 和 C++ 这两种语言不保证内存安全，后果就是所有软件安全问题的大约三分之二，都跟内存处理不当有或多或少的关系。

-- [《Rust 正在变成 Linux 的第二官方语言》](https://www.zdnet.com/article/rust-takes-a-major-step-forward-as-linuxs-second-official-language/)

2、

媒体业务的核心，是每天能从消费者的注意力里面，分到多少分钟。它满足消费者需求、卖给广告商的就是这个东西，也是媒体之间相互竞争的核心。

--[《好莱坞媒体的电子游戏盲点》](https://www.matthewball.vc/all/videogameblindspot)

3、

一只蝎子请求青蛙带他过河，青蛙害怕被蜇伤。蝎子说，如果他蜇青蛙，两者都会淹死在河里。青蛙就同意背他。但是，一到河中间，蝎子就蜇了青蛙。青蛙临死之前问：“为什么啊？” 蝎子回答说：“这是我的本性。”

这个故事告诉我们，不要跟本质有毒的人交易。

-- [《五堂永恒的课》](https://www.productlessons.xyz//article/timeless-lessons-amazon-unbound-book)

4、

旧金山是美国房价最贵的城市，很多穷人负担不起住房，只能流落街头。市政府每年拨款10亿美元，帮助无家可归者，平均每人超过10万美元。

讽刺的是，这笔巨款不仅没有解决流浪问题，反而让它变得更严重了。很多全职工作的人，为了住房，花光了积蓄，活得非常辛苦。那些流浪者，反而因为政府的资助，处在一种无忧无虑的稳定状态，不想再去工作。

--[《旧金山的姑息治疗》](https://jayriverlong.github.io/2021/11/28/palliative.html)

5、

你永远不会通过与现实做斗争，而改变事物。想要改变事物，需要建立一个使现有模型过时的新模型。

-- [富勒](https://news.ycombinator.com/item?id=29441945)，美国建筑师

## 历史上的本周

2020年（第 140 期）：[印度人的工资是多少？](https://www.ruanyifeng.com/blog/2020/12/weekly-issue-140.html)

2019年（第 88 期）：[如果你遇到一条蛇](https://www.ruanyifeng.com/blog/2019/12/weekly-issue-88.html)

2018年（第 37 期）：[小说家的时代，永远地过去了](https://www.ruanyifeng.com/blog/2018/12/weekly-issue-37.html)

## 订阅

这个周刊每周五发布，同步更新在[阮一峰的网络日志](http://www.ruanyifeng.com/blog)和[微信公众号](http://weixin.sogou.com/weixin?query=%E9%98%AE%E4%B8%80%E5%B3%B0%E7%9A%84%E7%BD%91%E7%BB%9C%E6%97%A5%E5%BF%97)。

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

![](https://cdn.beekka.com/blogimg/asset/202103/bg2021030402.jpg)

（完）
