130 lines
43 KiB
JSON
130 lines
43 KiB
JSON
{
|
||
"candidate_id": "cand:sha256:a16942c9699333155498d2bc59c530358bd6d81d9afe01e2b96e0e862edfc6a6",
|
||
"item": {
|
||
"item_id": "sha256:a16942c9699333155498d2bc59c530358bd6d81d9afe01e2b96e0e862edfc6a6",
|
||
"source_id": "freshrss:66c2d55d7563e741",
|
||
"external_id": "tag:google.com,2005:reader/item/00064dc1a1f5c0dc",
|
||
"title": "科技爱好者周刊(第 389 期):未来如何招聘程序员",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-389.html",
|
||
"author": "阮一峰",
|
||
"published_at": "2026-03-19T23:59:16Z",
|
||
"discovered_at": "2026-03-25T10:32:30.103137Z",
|
||
"content_kind": "article",
|
||
"language": null,
|
||
"raw_summary": "<p>这里记录每周值得分享的科技内容,周五发布。</p>\n\n <p>本杂志<a href=\"https://github.com/ruanyf/weekly\">开源</a>,欢迎<a href=\"https://github.com/ruanyf/weekly/issues\">投稿</a>。另有<a href=\"https://github.com/ruanyf/weekly/issues/9088\">《谁在招人》</a>服务,发布程序员招聘信息。合作请<a href=\"mailto:yifeng.ruan@gmail.com\">邮件联系</a>(yifeng.ruan@gmail.com)。</p>\n\n<h2>封面图</h2>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202602/bg2026022807.webp\" alt=\"\" title=\"\"></p>\n\n<p>唐山河头老街景区的轨道车\"大唐云车\"。(<a href=\"https://view.inews.qq.com/k/20260204A01P0P00\">via</a>)</p>\n\n<h2>未来如何招聘程序员</h2>\n\n<p>前些天,讨论区有一个<a href=\"https://github.com/ruanyf/weekly/issues/9238\">帖子</a>,提出一个问题。</p>\n\n<p>如果未来的代码都是 AI 写的,那么我们<a href=\"https://github.com/vorojar/ai-native-hiring-guide\">怎么招聘程序员</a>呢?</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031406.webp\" alt=\"\" title=\"\"></p>\n\n<p>程序员负责代码,但代码是 AI 写的,不是程序员写的,那么应该怎么面试他呢?</p>\n\n<p>你仔细想想,这个问题比预想的难多了。</p>\n\n<p><strong>首先,考察他的代码能力不重要(代码不是他写的),更重要的是考察他会不会 AI</strong>。只要善于使用 AI,能够产出合格的代码,对公司来说就是合格的人选。</p>\n\n<p>但是,什么样的面试问题,能够考察出一个人是否掌握 AI?下面是我想出的一些问题:</p>\n\n<ul>\n<li>请将一个复杂的项目需求,转化成提示词,要求是清晰、逻辑性强、切中要害。</li>\n<li>描述一个你认为需要使用 Skill 和 MCP 的场景,并阐述它们的工作原理和构建方法。</li>\n<li>如何将一个大项目分解,设计出一个多 Agent 协同工作的机制。</li>\n<li>......</li>\n</ul>\n\n<p>这些问题能识别出 AI 编程高手吗?我完全没有把握。</p>\n\n<p><strong>其次,除了 AI,还要考察什么呢?</strong> 这也很不好想。</p>\n\n<p>我应该还会问一些架构问题,你可以不写代码,但要懂怎么组织代码,架构出一个系统。但我也不确定这是必需的,因为 AI 生成的大型系统迟早变成一个黑箱,可能对于架构知识的要求也不是很高。</p>\n\n<p><strong>另外,我还要看看他以前的项目</strong>,如果以前他用 AI 做过类似的东西,那么应该问题不大。但这也不可靠,且不说完全类似的项目非常少,就看 AI 进化速度这么快,两年前的经验早不适用了吧。</p>\n\n<p>总之我发现,很难确定什么面试问题是一定有效的,能够可信地筛选出合格的应聘者。AI 颠覆了软件开发,也连带颠覆了程序员面试。大家有好的面试问题吗?</p>\n\n<p>有一点是确定的,<strong>面试各种编程细节意义不大了</strong>,因为你不需要记住语法细节了,直接问大模型就行。</p>\n\n<h2>科技动态</h2>\n\n<p>1、<a href=\"https://basicappleguy.com/basicappleblog/lil-finder-guy\">访达小子</a></p>\n\n<p>苹果公司最近发布了 Macbook Neo,有人注意到,官方的 Tiktok 宣传海报里面出现了一个全新的吉祥物(下图)。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031208.webp\" alt=\"\" title=\"\"></p>\n\n<p>上面海报的左上角有一个玩偶,以前没见过。</p>\n\n<p>这个玩偶明显来自 Mac 电脑的访达工具(Finder),所以被称为\"访达小子\"(Lil Finder Guy)。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031209.webp\" alt=\"\" title=\"\"></p>\n\n<p>几天后,苹果公司又在一场直播里面,使用了这个形象。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031210.webp\" alt=\"\" title=\"\"></p>\n\n<p>人们纷纷猜测,这到底是偶然的行为,还是苹果公司真的会推出它作为吉祥物?</p>\n\n<p>热心的网友让 AI 绘制了\"访达小子\"的完整形象。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031211.webp\" alt=\"\" title=\"\"></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031212.webp\" alt=\"\" title=\"\"></p>\n\n<p>看上去很可爱,就跟 Labubu 似的,有可能大受欢迎。</p>\n\n<p>2、<a href=\"https://www.unsw.edu.au/newsroom/news/2026/03/New-negative-light-technology-hides-data-transfers-in-plain-sight\">红外线编码</a></p>\n\n<p>英国科学家发明了一种新的通信方式,通过热辐射二极管,将数字信号以热量形式传递。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031401.webp\" alt=\"\" title=\"\"></p>\n\n<p>肉眼看不见这种信号(因为它是红外线),也检测不到无线电波,但是它的热量以编码方式散发,在红外线热成像仪上能识别(上图)。</p>\n\n<p>因此,这种方法接收信号需要热成像仪,再传入电脑的解码器。这可能对某些工业和军事场景很有用。</p>\n\n<p>3、<a href=\"https://sa.lj.am/rack-mount-hydroponics/\">机柜种植</a></p>\n\n<p>家里有多余的服务器机柜,怎么利用起来?</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031504.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个国外程序员想到机柜里面有电源,拉线和搁板都很方便,可以用来水培种植。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031505.webp\" alt=\"\" title=\"\"></p>\n\n<p>他买了一些 LED 灯带,用来模拟日照,每一层还安装了一个泵,用来自动进排水。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031506.webp\" alt=\"\" title=\"\"></p>\n\n<p>如果你想在家里种一些暖房植物,或者需要长时间光照的植物,服务器机柜确实是一个很好的方案。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031507.webp\" alt=\"\" title=\"\"></p>\n\n<h2>文章</h2>\n\n<p>1、<a href=\"https://www.anisafifi.com/en/blog/i-ditched-elasticsearch-for-meilisearch-heres-what-nobody-tells-you/\">我放弃了 Elasticsearch,转而使用 Meilisearch</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031303.webp\" alt=\"\" title=\"\"></p>\n\n<p><a href=\"https://github.com/meilisearch/meilisearch\">Meilisearch</a> 是一种开源的搜索软件,作者介绍怎么用它替代 Elasticsearch。</p>\n\n<p>2、<a href=\"https://blog.youxu.info/2026/01/14/ai-codes-retrospective/\">2016 年,我做过一次 AI 写代码创业</a>(中文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031918.webp\" alt=\"\" title=\"\"></p>\n\n<p>作者徐宥(Eric Xu)回忆他在2016年的 AI 创业,当时他想训练一个大模型,需要25万美元,但是找不到投资人。(<a href=\"https://github.com/ruanyf/weekly/issues/9296\">@gengxiuli</a> 投稿)</p>\n\n<p>3、<a href=\"https://shawnxie.top/blogs/tools/read-flow-2026.html\">信息过载时代,我的漏斗式阅读工作流</a>(中文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031914.webp\" alt=\"\" title=\"\"></p>\n\n<p>每天有太多东西值得看,作者介绍他的信息处理工作流,通过 AI 过滤出值得读的内容。(<a href=\"https://github.com/ruanyf/weekly/issues/9282\">@shawnxie94</a> 投稿)</p>\n\n<p>4、<a href=\"https://medium.com/packt-hub/the-world-of-compiler-backends-9b27a3e37866\">编译器的前端与后端</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202505/bg2025050118.webp\" alt=\"\" title=\"\"></p>\n\n<p>一篇科普文章,介绍编译器(比如 LLVM)的前端和后端的概念。</p>\n\n<p>5、<a href=\"https://webkit.org/blog/16831/line-height-units/\">CSS 的 lh 单位</a>(英文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202505/bg2025050125.webp\" alt=\"\" title=\"\"></p>\n\n<p>CSS 有一个字体大小属性<code>lh</code>,表示行高。</p>\n\n<p>6、<a href=\"https://blog.sciencenet.cn/home.php?mod=space&uid=52727&do=blog&id=1525508\">寻觅杜鹃花之王</a>(中文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031302.webp\" alt=\"\" title=\"\"></p>\n\n<p>大树杜鹃是最高大的杜鹃,是一颗会开花的大树(上图),1919年由英国人在云南发现。</p>\n\n<p>后来,这个英国人死在云南,就无人知道哪里有这种杜鹃了,直到1982年才重新在高黎贡山找到。本文讲述这种植物的故事。</p>\n\n<h2>工具</h2>\n\n<p>1、<a href=\"https://github.com/mexirica/aptui\">APTUI</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031301.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 Linux 的终端应用,用于充当 Debian/Ubuntu 安装管理器,管理 APT 软件包。</p>\n\n<p>2、<a href=\"https://my.wordpress.net/\">my.WordPress.net</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031502.webp\" alt=\"\" title=\"\"></p>\n\n<p>如果你想尝试 WordPress,但没有服务器,可以使用官方新推出的这个服务,打开上面网址就可以了。</p>\n\n<p>它把所有 PHP 脚本编译成 JS,在本地运行,不需要服务器,而且数据都在你的浏览器,下次打开这个网址,网站数据还在,参见<a href=\"https://wordpress.org/news/2026/03/announcing-my-wordpress/\">介绍文章</a>。</p>\n\n<p>3、<a href=\"https://github.com/groverburger/grobpaint\">GrobPaint</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031503.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个跨平台的图像编辑器,特点就是非常轻量级,可以在浏览器运行,也可以编译成二进制文件。</p>\n\n<p>4、<a href=\"https://matting.lingxiangtools.top/\">Apple Matting</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031407.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 Mac 抠图软件,大小只有 8MB。(<a href=\"https://github.com/ruanyf/weekly/issues/9241\">@pangxiaobin</a> 投稿)</p>\n\n<p>5、<a href=\"https://github.com/lifedever/health-tick-release\">HealthTick</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031409.webp\" alt=\"\" title=\"\"></p>\n\n<p>macOS 菜单栏久坐提醒工具。(<a href=\"https://github.com/ruanyf/weekly/issues/9242\">@lifedever</a> 投稿)</p>\n\n<p>6、<a href=\"https://github.com/yaoyao2mm/cheatreader\">CheatReader</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031501.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个跨平台的阅读软件,可以悬浮在桌面上,支持单行模式,适合想在工作流里\"偷偷读书\"的人。(<a href=\"https://github.com/ruanyf/weekly/issues/9247\">@yaoyao2mm</a> 投稿)</p>\n\n<p>7、<a href=\"https://github.com/zhaoolee/notes\">锤子便签</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031702.webp\" alt=\"\" title=\"\"></p>\n\n<p>开源的网页版锤子便签,可以作为 Skill 调用。(<a href=\"https://github.com/ruanyf/weekly/issues/9274\">@zhaoolee</a> 投稿)</p>\n\n<p>8、<a href=\"https://github.com/tmwgsicp/wechat-download-api\">WeChat Download API</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031917.webp\" alt=\"\" title=\"\"></p>\n\n<p>开源的微信公众号转 RSS 工具。(<a href=\"https://github.com/ruanyf/weekly/issues/9295\">@tmwgsicp</a> 投稿)</p>\n\n<p>9、<a href=\"https://github.com/ywong137/speech-speed\">Speech Speed</a></p>\n\n<p>一个很有意思的 Chrome 插件,根据语速调节视频播放速度。如果剧中人说话慢,视频就快速播放,说话快,就慢速播放。</p>\n\n<h2>AI 相关</h2>\n\n<p>1、<a href=\"https://github.com/xxnuo/VibeGo\">VibeGo</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031913.webp\" alt=\"\" title=\"\"></p>\n\n<p>Vibe Coding 的开源 Web IDE,支持 Claude Code、Gemini CLI、CodeX、OpenCode 等。(<a href=\"https://github.com/ruanyf/weekly/issues/9281\">@xxnuo</a> 投稿)</p>\n\n<p>2、<a href=\"https://github.com/zhanchey/MimicThem\">Mimic Them</a></p>\n\n<p>一个开源应用,使用字节 seedream 图像模型,复刻小红书的图文笔记,从一篇可以衍生出另一篇。(<a href=\"https://github.com/ruanyf/weekly/issues/9215\">@zhanchey</a> 投稿)</p>\n\n<p>3、<a href=\"https://github.com/MatrixA/aicheck\">AICheck</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031305.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 Rust 语言编写的命令行工具,离线检测图片、视频、音频和文档是否由 AI 生成。(<a href=\"https://github.com/ruanyf/weekly/issues/9219\">@MatrixA</a> 投稿)</p>\n\n<p>4、<a href=\"https://github.com/iOfficeAI/AionUi\">AionUi</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031405.webp\" alt=\"\" title=\"\"></p>\n\n<p>开源的 Cowork 与 OpenClaw 的替代品,自动化各种电脑操作。(<a href=\"https://github.com/ruanyf/weekly/issues/9236\">@cdxiaodong</a> 投稿)</p>\n\n<p>5、<a href=\"https://github.com/zhnd/lumo\">Lumo</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031408.webp\" alt=\"\" title=\"\"></p>\n\n<p>一个 Claude Code 的本地桌面工作台,查看成本、Token、会话和编码时段数据。(<a href=\"https://github.com/ruanyf/weekly/issues/9239\">@zhnd</a> 投稿)</p>\n\n<p>6、<a href=\"https://github.com/twwch/AIComicBuilder\">AIComicBuilder</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031704.webp\" alt=\"\" title=\"\"></p>\n\n<p>开源的 AI 动漫视频生成系统,只需输入文字剧本,即可自动完成角色提取、分镜设计、关键帧生成、视频合成的全流程。(<a href=\"https://github.com/ruanyf/weekly/issues/9275\">@twwch</a> 投稿)</p>\n\n<h2>资源</h2>\n\n<p>1、<a href=\"https://www.canirun.ai/\">canirun.ai</a></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031402.webp\" alt=\"\" title=\"\"></p>\n\n<p>网页检测你的机器,能够运行哪些本地的 AI 模型。</p>\n\n<p>2、<a href=\"https://wmyskxz.cn/wiki/whats_ai/\">AI 是怎么回事</a>(中文)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031304.webp\" alt=\"\" title=\"\"></p>\n\n<p>面向普通读者的通俗 AI 原理教程。(<a href=\"https://github.com/ruanyf/weekly/issues/9218\">@wmyskxz</a> 投稿)</p>\n\n<p>3、<a href=\"https://amoilanen.github.io/Algorithms-with-Typescript/preface.html\">TypeScript 数据结构与算法</a>(Algorithms with TypeScript)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031403.webp\" alt=\"\" title=\"\"></p>\n\n<p>免费阅读的英文电子书,使用 TypeScript 语言介绍数据结构和算法。</p>\n\n<p>4、<a href=\"https://channelsurfer.tv/\">频道冲浪者</a>(Channel Surfer)</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202603/bg2026031404.webp\" alt=\"\" title=\"\"></p>\n\n<p>这个网页把 Youtube 改成传统的电视频道,每个频道都有节目表,可以切换频道。如果你不知道用 Youtube 看什么,就可以看这个网站。</p>\n\n<h2>图片</h2>\n\n<p>1、<a href=\"https://rarehistoricalphotos.com/engineering-methods-from-the-past/\">巧妙的古建筑</a></p>\n\n<p>因为缺乏机械和动力,古代建筑物往往包含了很多巧思。</p>\n\n<p>(1)19世纪的英国麦克尔斯菲尔德运河,由于没有水位落差,需要马拉着船前进。</p>\n\n<p>有时,马的牵引道从河的一边转到了另一边,马这时就需要过河。</p>\n\n<p>为了不解开牵引绳,马就能过河,工程师就设计了\"蛇桥\",马可以直接走上去,中间还有让牵引绳通过的孔。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120205.webp\" alt=\"\" title=\"\"></p>\n\n<p>(2)法国南部的巴尔贝加尔水磨坊,建于公元2世纪,现在只剩下了遗址。</p>\n\n<p>这个磨坊的位置在山坡上,连续建了16个相互连接的水车,充分利用了水能,每天能够生产25吨面粉,被认为是欧洲第一个大规模工业生产的磨坊。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120206.webp\" alt=\"\" title=\"\"></p>\n\n<p>(3)伊朗纳什提凡的古代风车,建在连片的屋顶上,一根木轴安装了由粘土、稻草和木材做成的立轴式风帆,强风会带动木轴,转动下面屋子里的磨盘,来磨碎谷物。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120208.webp\" alt=\"\" title=\"\"></p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120207.webp\" alt=\"\" title=\"\"></p>\n\n<p>(4)中国西安的秦代上林苑遗址,发现了战国时期的陶瓷水管,现保存于西安博物院。</p>\n\n<p><img src=\"https://cdn.beekka.com/blogimg/asset/202512/bg2025120209.webp\" alt=\"\" title=\"\"></p>\n\n<h2>文摘</h2>\n\n<p>1、<a href=\"https://laike9m.com/blog/avoid-mini-frameworks,171/\">避免使用定制框架</a></p>\n\n<p>很多小团队在工作中,往往会发明自己的\"定制框架\"。</p>\n\n<p>他们原来使用的是通用框架,但有不满意之处,于是决定在通用框架基础上定制自己的框架。</p>\n\n<p>这种\"定制框架\"有一些共同特点:</p>\n\n<blockquote>\n <p>(1)由小团队创建,旨在解决他们的痛点;</p>\n\n<p>(2)底层是其他更通用的技术栈或框架;</p>\n\n<p>(3)引入原有技术栈不存在的新概念和术语;</p>\n\n<p>(4)创建者声称这个定制框架\"神奇地\"解决了许多问题,并推广更多人使用它。</p>\n</blockquote>\n\n<p>我的个人经验是,\"定制框架\"非常难用,引入了许多新概念,意图掩盖它带来的更多复杂性。</p>\n\n<p>我建议,大家避免使用\"定制框架\",原因有下面这些:</p>\n\n<p>(1)定制框架常常声称,它们能消除或隐藏原始框架\"不必要的复杂性\",但实际上做不到。即使定制框架能很好地处理80%的用例,但是因为引入了新的语法,剩余20%的用例就不如原始框架的灵活性和功能性。</p>\n\n<p>(2)定制框架不易改动。它仅对开发团队的用例建模,以解决他们的特定问题,未来需求变化时,往往跟不上。另外,定制框架通常改动了原始框架的实现细节,而原始框架将来随时可能变动,你修改的细节越多,就越难跟上原始框架的变动。</p>\n\n<p>(3)定制框架反映了开发团队的心理模型,这些团队专注于自己的问题,往往有很强的个人意见。这本身是好事,但也使得定制框架不适合其他人的心理模型。</p>\n\n<p>(4)定制框架往往导致技术栈碎片化。你改动的只是跟你相关的一部分,其他部分保持不变。随着新的层不断增加,框架变得越来越难整体迁移,必须不断改动你原来没改的部分。</p>\n\n<p>(5)定制框架缺乏维护。通用技术往往有一个专门团队或公司来维护,但定制框架通常由一两个创建者拥有。一旦他们离开团队或公司,就很难找到接班人。定制框架很大可能会随着原作者离开而消失,除非在此之前获得了大量采用,才有人愿意接手,而这种情况很少发生。</p>\n\n<p>我不是说,你不要开发自己的框架,而是建议最好遵循三个原则:(1)新概念引入越少越好,(2)优先创建库,而不是框架。(3)不要做现有框架的包装器,而要从零开始构建。</p>\n\n<h2>言论</h2>\n\n<p>1、</p>\n\n<p>我想要的网络世界,是一个万物皆可塑的世界,让你不由自主地成为创造者。</p>\n\n<p>-- <a href=\"https://plumbing-of-everyday-magic.hyperclay.com/\">David Miranda</a></p>\n\n<p>2、</p>\n\n<p>AI 让软件的成本从代码转移到测试和文档,一套好的测试套件的价值可能比编写代码本身更高。</p>\n\n<p>-- <a href=\"https://lucumr.pocoo.org/2026/1/14/minijinja-go-port/\">lucumr.pocoo.org</a></p>\n\n<p>3、</p>\n\n<p>编程的核心在于抽象,即用一种远离底层技术的高级思维方式来思考代码。</p>\n\n<p>-- <a href=\"https://blog.redplanetlabs.com/2025/11/24/the-programmers-who-live-in-flatland/\">《生活在\"平面国\"的程序员》</a></p>\n\n<p>4、</p>\n\n<p>领导力就是让别人去做你想让他们做的事,而且是心甘情愿的。</p>\n\n<p>-- <a href=\"https://hebfdn.org/portfolio/eisenhower-on-leadership/\">艾森豪威尔</a>,美国前总统</p>\n\n<h2>往年回顾</h2>\n\n<p><a href=\"https://www.ruanyifeng.com/blog/2025/03/weekly-issue-342.html\">面试的 AI 作弊----用数字人去面试</a>(#342)</p>\n\n<p><a href=\"https://www.ruanyifeng.com/blog/2024/03/weekly-issue-292.html\">所有代码都是技术债</a>(#292)</p>\n\n<p><a href=\"https://www.ruanyifeng.com/blog/2023/02/weekly-issue-242.html\">一次尴尬的服务器被黑</a>(#242)</p>\n\n<p><a href=\"https://www.ruanyifeng.com/blog/2022/01/weekly-issue-192.html\">最大的机会来自新技术</a>(#192)</p>\n\n<p>(完)</p>\n\n <div><h3>文档信息</h3>\n<ul>\n<li>版权声明:自由转载-非商用-非衍生-保持署名(<a href=\"https://creativecommons.org/licenses/by-nc-nd/3.0/deed.zh\">创意共享3.0许可证</a>)</li>\n<li>发表日期: <abbr title=\"2026-03-20T07:59:16+08:00\" data-sanitized-class=\"published\">2026年3月20日</abbr></li>\n\n</ul></div> \n <div></div>",
|
||
"raw_content": null,
|
||
"metadata": {
|
||
"upstream": "freshrss",
|
||
"origin": {
|
||
"streamId": "feed/2",
|
||
"htmlUrl": "http://www.ruanyifeng.com/blog/",
|
||
"title": "阮一峰的网络日志"
|
||
},
|
||
"categories": [
|
||
"rss",
|
||
"user/-/state/org.freshrss/main",
|
||
"Weekly"
|
||
],
|
||
"crawled_at": "2026-03-24T09:18:21.528000Z",
|
||
"published_epoch": 1773964756
|
||
},
|
||
"fetch_state": "pending"
|
||
},
|
||
"article": {
|
||
"extract_id": "sha256:28f701753f6d82111e2f9105d9180bb359a75608b2669cb1e7dc741ff5ca17c6",
|
||
"item_id": "sha256:a16942c9699333155498d2bc59c530358bd6d81d9afe01e2b96e0e862edfc6a6",
|
||
"source_id": "freshrss:66c2d55d7563e741",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-389.html",
|
||
"title": "科技爱好者周刊(第 389 期):未来如何招聘程序员",
|
||
"author": "阮一峰",
|
||
"published_at": "2026-03-19T23:59:16Z",
|
||
"language": null,
|
||
"content_kind": "article",
|
||
"plain_text": "这里记录每周值得分享的科技内容,周五发布。\n本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系([email protected])。\n封面图\n唐山河头老街景区的轨道车\"大唐云车\"。(via)\n未来如何招聘程序员\n前些天,讨论区有一个帖子,提出一个问题。\n如果未来的代码都是 AI 写的,那么我们怎么招聘程序员呢?\n程序员负责代码,但代码是 AI 写的,不是程序员写的,那么应该怎么面试他呢?\n你仔细想想,这个问题比预想的难多了。\n首先,考察他的代码能力不重要(代码不是他写的),更重要的是考察他会不会 AI。只要善于使用 AI,能够产出合格的代码,对公司来说就是合格的人选。\n但是,什么样的面试问题,能够考察出一个人是否掌握 AI?下面是我想出的一些问题:\n- 请将一个复杂的项目需求,转化成提示词,要求是清晰、逻辑性强、切中要害。\n- 描述一个你认为需要使用 Skill 和 MCP 的场景,并阐述它们的工作原理和构建方法。\n- 如何将一个大项目分解,设计出一个多 Agent 协同工作的机制。\n- ......\n这些问题能识别出 AI 编程高手吗?我完全没有把握。\n其次,除了 AI,还要考察什么呢? 这也很不好想。\n我应该还会问一些架构问题,你可以不写代码,但要懂怎么组织代码,架构出一个系统。但我也不确定这是必需的,因为 AI 生成的大型系统迟早变成一个黑箱,可能对于架构知识的要求也不是很高。\n另外,我还要看看他以前的项目,如果以前他用 AI 做过类似的东西,那么应该问题不大。但这也不可靠,且不说完全类似的项目非常少,就看 AI 进化速度这么快,两年前的经验早不适用了吧。\n总之我发现,很难确定什么面试问题是一定有效的,能够可信地筛选出合格的应聘者。AI 颠覆了软件开发,也连带颠覆了程序员面试。大家有好的面试问题吗?\n有一点是确定的,面试各种编程细节意义不大了,因为你不需要记住语法细节了,直接问大模型就行。\n科技动态\n1、访达小子\n苹果公司最近发布了 Macbook Neo,有人注意到,官方的 Tiktok 宣传海报里面出现了一个全新的吉祥物(下图)。\n上面海报的左上角有一个玩偶,以前没见过。\n这个玩偶明显来自 Mac 电脑的访达工具(Finder),所以被称为\"访达小子\"(Lil Finder Guy)。\n几天后,苹果公司又在一场直播里面,使用了这个形象。\n人们纷纷猜测,这到底是偶然的行为,还是苹果公司真的会推出它作为吉祥物?\n热心的网友让 AI 绘制了\"访达小子\"的完整形象。\n看上去很可爱,就跟 Labubu 似的,有可能大受欢迎。\n2、红外线编码\n英国科学家发明了一种新的通信方式,通过热辐射二极管,将数字信号以热量形式传递。\n肉眼看不见这种信号(因为它是红外线),也检测不到无线电波,但是它的热量以编码方式散发,在红外线热成像仪上能识别(上图)。\n因此,这种方法接收信号需要热成像仪,再传入电脑的解码器。这可能对某些工业和军事场景很有用。\n3、机柜种植\n家里有多余的服务器机柜,怎么利用起来?\n一个国外程序员想到机柜里面有电源,拉线和搁板都很方便,可以用来水培种植。\n他买了一些 LED 灯带,用来模拟日照,每一层还安装了一个泵,用来自动进排水。\n如果你想在家里种一些暖房植物,或者需要长时间光照的植物,服务器机柜确实是一个很好的方案。\n文章\n1、我放弃了 Elasticsearch,转而使用 Meilisearch(英文)\nMeilisearch 是一种开源的搜索软件,作者介绍怎么用它替代 Elasticsearch。\n2、2016 年,我做过一次 AI 写代码创业(中文)\n作者徐宥(Eric Xu)回忆他在2016年的 AI 创业,当时他想训练一个大模型,需要25万美元,但是找不到投资人。(@gengxiuli 投稿)\n3、信息过载时代,我的漏斗式阅读工作流(中文)\n每天有太多东西值得看,作者介绍他的信息处理工作流,通过 AI 过滤出值得读的内容。(@shawnxie94 投稿)\n4、编译器的前端与后端(英文)\n一篇科普文章,介绍编译器(比如 LLVM)的前端和后端的概念。\n5、CSS 的 lh 单位(英文)\nCSS 有一个字体大小属性lh\n,表示行高。\n6、寻觅杜鹃花之王(中文)\n大树杜鹃是最高大的杜鹃,是一颗会开花的大树(上图),1919年由英国人在云南发现。\n后来,这个英国人死在云南,就无人知道哪里有这种杜鹃了,直到1982年才重新在高黎贡山找到。本文讲述这种植物的故事。\n工具\n1、APTUI\n一个 Linux 的终端应用,用于充当 Debian/Ubuntu 安装管理器,管理 APT 软件包。\n如果你想尝试 WordPress,但没有服务器,可以使用官方新推出的这个服务,打开上面网址就可以了。\n它把所有 PHP 脚本编译成 JS,在本地运行,不需要服务器,而且数据都在你的浏览器,下次打开这个网址,网站数据还在,参见介绍文章。\n一个跨平台的图像编辑器,特点就是非常轻量级,可以在浏览器运行,也可以编译成二进制文件。\n一个 Mac 抠图软件,大小只有 8MB。(@pangxiaobin 投稿)\nmacOS 菜单栏久坐提醒工具。(@lifedever 投稿)\n一个跨平台的阅读软件,可以悬浮在桌面上,支持单行模式,适合想在工作流里\"偷偷读书\"的人。(@yaoyao2mm 投稿)\n7、锤子便签\n开源的网页版锤子便签,可以作为 Skill 调用。(@zhaoolee 投稿)\n开源的微信公众号转 RSS 工具。(@tmwgsicp 投稿)\n一个很有意思的 Chrome 插件,根据语速调节视频播放速度。如果剧中人说话慢,视频就快速播放,说话快,就慢速播放。\nAI 相关\n1、VibeGo\nVibe Coding 的开源 Web IDE,支持 Claude Code、Gemini CLI、CodeX、OpenCode 等。(@xxnuo 投稿)\n一个开源应用,使用字节 seedream 图像模型,复刻小红书的图文笔记,从一篇可以衍生出另一篇。(@zhanchey 投稿)\n3、AICheck\n一个 Rust 语言编写的命令行工具,离线检测图片、视频、音频和文档是否由 AI 生成。(@MatrixA 投稿)\n4、AionUi\n开源的 Cowork 与 OpenClaw 的替代品,自动化各种电脑操作。(@cdxiaodong 投稿)\n5、Lumo\n一个 Claude Code 的本地桌面工作台,查看成本、Token、会话和编码时段数据。(@zhnd 投稿)\n开源的 AI 动漫视频生成系统,只需输入文字剧本,即可自动完成角色提取、分镜设计、关键帧生成、视频合成的全流程。(@twwch 投稿)\n资源\n网页检测你的机器,能够运行哪些本地的 AI 模型。\n2、AI 是怎么回事(中文)\n面向普通读者的通俗 AI 原理教程。(@wmyskxz 投稿)\n3、TypeScript 数据结构与算法(Algorithms with TypeScript)\n免费阅读的英文电子书,使用 TypeScript 语言介绍数据结构和算法。\n4、频道冲浪者(Channel Surfer)\n这个网页把 Youtube 改成传统的电视频道,每个频道都有节目表,可以切换频道。如果你不知道用 Youtube 看什么,就可以看这个网站。\n图片\n1、巧妙的古建筑\n因为缺乏机械和动力,古代建筑物往往包含了很多巧思。\n(1)19世纪的英国麦克尔斯菲尔德运河,由于没有水位落差,需要马拉着船前进。\n有时,马的牵引道从河的一边转到了另一边,马这时就需要过河。\n为了不解开牵引绳,马就能过河,工程师就设计了\"蛇桥\",马可以直接走上去,中间还有让牵引绳通过的孔。\n(2)法国南部的巴尔贝加尔水磨坊,建于公元2世纪,现在只剩下了遗址。\n这个磨坊的位置在山坡上,连续建了16个相互连接的水车,充分利用了水能,每天能够生产25吨面粉,被认为是欧洲第一个大规模工业生产的磨坊。\n(3)伊朗纳什提凡的古代风车,建在连片的屋顶上,一根木轴安装了由粘土、稻草和木材做成的立轴式风帆,强风会带动木轴,转动下面屋子里的磨盘,来磨碎谷物。\n(4)中国西安的秦代上林苑遗址,发现了战国时期的陶瓷水管,现保存于西安博物院。\n文摘\n1、避免使用定制框架\n很多小团队在工作中,往往会发明自己的\"定制框架\"。\n他们原来使用的是通用框架,但有不满意之处,于是决定在通用框架基础上定制自己的框架。\n这种\"定制框架\"有一些共同特点:\n(1)由小团队创建,旨在解决他们的痛点;\n(2)底层是其他更通用的技术栈或框架;\n(3)引入原有技术栈不存在的新概念和术语;\n(4)创建者声称这个定制框架\"神奇地\"解决了许多问题,并推广更多人使用它。\n我的个人经验是,\"定制框架\"非常难用,引入了许多新概念,意图掩盖它带来的更多复杂性。\n我建议,大家避免使用\"定制框架\",原因有下面这些:\n(1)定制框架常常声称,它们能消除或隐藏原始框架\"不必要的复杂性\",但实际上做不到。即使定制框架能很好地处理80%的用例,但是因为引入了新的语法,剩余20%的用例就不如原始框架的灵活性和功能性。\n(2)定制框架不易改动。它仅对开发团队的用例建模,以解决他们的特定问题,未来需求变化时,往往跟不上。另外,定制框架通常改动了原始框架的实现细节,而原始框架将来随时可能变动,你修改的细节越多,就越难跟上原始框架的变动。\n(3)定制框架反映了开发团队的心理模型,这些团队专注于自己的问题,往往有很强的个人意见。这本身是好事,但也使得定制框架不适合其他人的心理模型。\n(4)定制框架往往导致技术栈碎片化。你改动的只是跟你相关的一部分,其他部分保持不变。随着新的层不断增加,框架变得越来越难整体迁移,必须不断改动你原来没改的部分。\n(5)定制框架缺乏维护。通用技术往往有一个专门团队或公司来维护,但定制框架通常由一两个创建者拥有。一旦他们离开团队或公司,就很难找到接班人。定制框架很大可能会随着原作者离开而消失,除非在此之前获得了大量采用,才有人愿意接手,而这种情况很少发生。\n我不是说,你不要开发自己的框架,而是建议最好遵循三个原则:(1)新概念引入越少越好,(2)优先创建库,而不是框架。(3)不要做现有框架的包装器,而要从零开始构建。\n言论\n1、\n我想要的网络世界,是一个万物皆可塑的世界,让你不由自主地成为创造者。\n2、\nAI 让软件的成本从代码转移到测试和文档,一套好的测试套件的价值可能比编写代码本身更高。\n3、\n编程的核心在于抽象,即用一种远离底层技术的高级思维方式来思考代码。\n4、\n领导力就是让别人去做你想让他们做的事,而且是心甘情愿的。\n-- 艾森豪威尔,美国前总统\n往年回顾\n面试的 AI 作弊----用数字人去面试(#342)\n所有代码都是技术债(#292)\n一次尴尬的服务器被黑(#242)\n最大的机会来自新技术(#192)\n(完)\njhc 说:\n国外的情况我不清楚,我认为在国内技术面试并不是考候选人能不能写出正确代码,而是一种筛选手段\n2026年3月20日 09:22 | # | 引用\n小白 说:\n访达小子有点“幻视”阴阳脸的意思[:狗头]\n2026年3月20日 09:53 | # | 引用\nNobita 说:\n看完了AI创业的文章,作者结尾的感慨发人深省\n“未来并不是线性展开的。\n所以,焦虑并不能真正帮助我们接近未来。更重要的是,在你当下所能看到的边界之内,做一个对得起自己的选择;至于剩下的部分,就交给时间。”\n2026年3月20日 09:56 | # | 引用\nDeathGhost 说:\n访达小子 像 奶龙~哈哈\n2026年3月20日 09:57 | # | 引用\nvxcoder 说:\n以前研发讲究的是要理解系统里细化到每个字节的运行原理,现在跟我说这是黑箱,但你可以放心的交给一个概率模型去维护。\n2026年3月20日 10:22 | # | 引用\n陆波 说:\nai时代来了,感觉突然多了很多新知识和技术需要学习\n2026年3月20日 10:26 | # | 引用\nJK 说:\nCheatReader 来源于我对象的摸鱼需求,用了2小时使用OpenSpec辅助开发的项目,很荣幸第一次投稿就被选上了。如果有朋友使用过程中遇到问题或者有新的需求,欢迎提ISSUE~\n我烧了几个B的token去实验各种开发的姿势,慢慢的也有一些心得,我和几个朋友最近在做一款很有意思的项目,期待可以出现在下个月的周报中!\n2026年3月20日 12:25 | # | 引用\nk 说:\n你如果没有自已的想法,而整个项目或系统都交给AI,那么AI写出来东西,不都是抄袭现成的吗?\n它也不能自已创建出来一套新的架构或模式吧?\n2026年3月20日 14:25 | # | 引用\nmorty 说:\n服务器养殖蔬菜这不纯纯浪费电力吗?这种没脑子的文章怎么出现在这里。。。。\n2026年3月20日 14:45 | # | 引用\nLY 说:\n如果你想在家里种一些暖房植物,或者需要长时间光照的植物,服务器机柜确实是一个很好的方案。\n—— 看起来很赛博和有趣,但是\n室内、光照、隐蔽性\n这玩意儿更适合种的是某种加麻大特产\n2026年3月20日 14:47 | # | 引用\nDylan Yu 说:\n访达小子好像弗兰肯斯坦\n2026年3月20日 15:15 | # | 引用\nXZY 说:\n未来面试方也更加依赖AI,反正都是黑盒,都交由AI来判断啦。\n又或者是多开几个agent,减少程序员的需求。\n2026年3月20日 15:59 | # | 引用\nLeon 说:\n关于程序员面试问什么问题,我觉得除了考察 AI 的熟练度,还要考察对方的计算机基础、数据结构算法、设计模式,这些东西永远都不过时,如果时间充裕,可以给个课题,让对方现场用 ai 工具实现,看看效果如何\n2026年3月20日 16:34 | # | 引用\nh29 说:\n定制化框架可以理解为固化一些内部共识,但是也要能跟得上行业发展才行。\n2026年3月20日 16:58 | # | 引用\n求面试 说:\n对于程序员来说结构化表达越来越重要, 这包括能清晰的描述需求, 把需求讲解的编程Agent能充分理解, 清晰的表达技术要求, 需要作者有技术功底, 让大模型Agent理解设计质量, 避免写出一堆屎山代码。\n2026年3月20日 21:54 | # | 引用\nhttps://yijinlee.com李奕锦 说:\n未来的超级个体,是一个程序员带着一群 AI 助手,交付一支团队的产能。\n面试桌上,请放下笔试题,打开电脑,让他展示那些真正用 AI 辅助落地的项目。能把 AI 当作武器去攻城略地的实战派,才是 AI 时代真正稀缺的将才。\n2026年3月22日 10:38 | # | 引用\n徐晖 说:\n这一期质量很高,今后可以多转载些来自其它博客的文章\n2026年3月22日 10:39 | # | 引用\n阿楚 说:\n巴尔贝加尔水磨坊,近2000年还能保存这么多砖石?还是说后人修缮后的现状?\n2026年3月22日 12:16 | # | 引用\n勇者 StartUp 说:\n我来面试,会加上二分查找、冒牌排序的手写编码,难道一个程序员写不出排序和查找?\n2026年3月22日 21:31 | # | 引用\nwuqi 说:\n其实ai没那么全能,还有个问题,烧token是要钱的,有经验的至少知道怎么烧,你可以试试直接让产品烧token,看能不能烧出来正确的结果,ai一般是不会拒绝错误提议和方案的,正经程序员会考虑程序规模和布设成本,ai并不会管那么多...\n一个傻逼领导或者产品可是真的能提出来我们要做一个淘宝,ai也真的能附和这个傻逼\n2026年3月23日 08:45 | # | 引用\nSiu 说:\n我應徵過多次就只有一次是現場寫程序的。可能本港公司都不會現場考人。誰有這時間。\n2026年3月24日 12:47 | # | 引用",
|
||
"quality_flags": {
|
||
"is_paywalled": false,
|
||
"is_truncated": false,
|
||
"is_low_content": false
|
||
},
|
||
"metadata": {
|
||
"content_source": "fetched_html",
|
||
"extractor": "trafilatura",
|
||
"char_count": 6599
|
||
},
|
||
"pipeline_state": "extracted"
|
||
},
|
||
"summary": {
|
||
"title": "科技爱好者周刊(第 389 期):未来如何招聘程序员",
|
||
"url": "http://www.ruanyifeng.com/blog/2026/03/weekly-issue-389.html",
|
||
"summary": "本文探讨了在AI编程普及的未来,如何有效招聘程序员。作者认为传统的代码能力考察将不再重要,面试重点应转向考察应聘者使用AI工具、分解项目需求以及系统架构的能力。文章也指出,目前尚难确定一套能可靠筛选合格AI编程人才的面试问题。",
|
||
"highlights": [
|
||
"未来程序员招聘的核心考察点将从手写代码能力转向熟练运用AI工具的能力。",
|
||
"面试问题可能包括如何将复杂需求转化为清晰的提示词,以及设计多Agent协同工作机制。",
|
||
"传统的编程语法细节考察意义下降,系统架构知识和项目经验可能仍是重要参考。",
|
||
"AI的快速发展使得软件开发流程和人才评估标准面临颠覆性变化。",
|
||
"文章还包含科技动态、工具推荐、资源分享等周刊常规栏目内容。"
|
||
],
|
||
"keywords": [
|
||
"AI编程",
|
||
"程序员招聘",
|
||
"面试问题",
|
||
"提示词工程",
|
||
"多Agent协同",
|
||
"系统架构",
|
||
"科技动态",
|
||
"工具推荐"
|
||
],
|
||
"topics": [
|
||
"人工智能",
|
||
"软件开发",
|
||
"职业发展",
|
||
"科技资讯",
|
||
"效率工具"
|
||
],
|
||
"category": "观点评论",
|
||
"worth_keeping": true,
|
||
"reason": "文章深入探讨了AI时代对程序员职业及招聘流程的潜在影响,具有前瞻性和讨论价值,且内容结构完整、信息量丰富。"
|
||
},
|
||
"filter_result": {
|
||
"decision": "review",
|
||
"matched_rules": [
|
||
"review-worth-keeping-other"
|
||
],
|
||
"reasons": [
|
||
"Worth-keeping signal is positive but no stronger keep rule matched."
|
||
],
|
||
"labels": [
|
||
"needs-review",
|
||
"summary"
|
||
],
|
||
"priority": 60,
|
||
"matches": [
|
||
{
|
||
"rule_id": "review-worth-keeping-other",
|
||
"decision": "review",
|
||
"reason": "Worth-keeping signal is positive but no stronger keep rule matched.",
|
||
"labels": [
|
||
"summary",
|
||
"needs-review"
|
||
],
|
||
"priority": 60
|
||
}
|
||
]
|
||
},
|
||
"digest_section_hint": null,
|
||
"digest_rank": 60,
|
||
"review_state": "pending",
|
||
"source_refs": {
|
||
"item_path": "outputs\\freshrss\\rerun\\20260325-183221\\items\\batch\\item-02.item.json",
|
||
"extracted_path": "outputs\\freshrss\\rerun\\20260325-183221\\extracted\\batch\\item-02.extracted.json",
|
||
"summary_path": "outputs\\freshrss\\rerun\\20260325-183221\\summary\\item-02.result.loop.json",
|
||
"filter_path": "outputs\\freshrss\\rerun\\20260325-183221\\filter\\item-02.filter.json"
|
||
},
|
||
"rendered_markdown": null,
|
||
"metadata": {
|
||
"generated_at": "2026-03-25T10:33:30.435292Z",
|
||
"pipeline_version": "v1",
|
||
"producer": "run_article_candidate.py",
|
||
"run_id": "candidate-20260325-103330"
|
||
}
|
||
} |