Repost Code Was Never the Hard Part Is an Insult to All Programmers
原始链接 https://blog.senko.net/code-was-never-the-hard-part-is-an-insult-to-all-programmers 附: HackerNews 摘要的AI 总结 https://t.me/hacker_news_zh/23810 软件开发行业正处于剧烈的变革之中。随着 AI 革 命的推进,编程工作面临转型。许多人近期常说 “大语言模型(LLM)擅长编程,但软件开发从来 就不是难点”或“编程很容易,搞清楚要编写什么 才是难点”。作者 Senko Rašić 认为这种观点是对 所有程序员的极大侮辱。 如果编程很容易 如果编程真的很容易,为什么程序员多年来一直 供不应求且薪资高昂?为什么在 AI 出现之前,程 序员就面临巨大的压力、过度劳累和职业倦怠? 如果初学者就能轻松完成工作,为什么公司还要 通过复杂的算法面试来寻找顶尖开发者? 作者通过一系列反问来驳斥编程容易论: • 为什么会有《代码整洁之道》和《程序员修炼 之道》这类厚重的专业书籍? • 为什么计算机科学需要专门的学位或高强度 的训练营? • 如果编程简单,为什么会出现像约翰·卡马克 或法布里斯·贝拉这样被公认为天才的人物? • 如果编程简单,为什么人们会对 AI 抓取自己 的代码感到愤怒? • 如果编程简单,为什么现在的软件依然充满 了漏洞(Bug)? 关于“弄清楚建什么才是难点”的质疑 针对“确定产品需求才是最难的部分”这一说法, 作者提出了以下质疑: • 如果决定建什么是难点,为什么产品经理的 薪水通常没有开发人员高? • 为什么市场研究人员、可用性专家和客户成 功经理在软件公司中不被视为明星员工? • 如果寻找需求更难,为什么程序员在销售人 员为了签单而随意承诺新功能时会感到沮丧? • 如果实现过程很简单,为什么大家不直接构 建十个版本来测试哪一个更受欢迎? 关于程序员角色的误区 另一种陈词滥调是“软件开发的大部分工作是与利 益相关者沟通”。作者指出,现实中很少有程序员 愿意直接与客户打交道。有些开发者标榜自己是 “解决客户问题的人”,但他们转身就开始讨论单 子(Monad)、内存安全等技术细节,而对客户需 求的理解仅停留在虚构的用户画像上。 作者认为,理解用户和解决问题对项目成功至关 重要,但编写高质量代码同样是一门需要技能、 耐心和经验的工艺。这两者并不对立,优秀的开 发者应该努力兼顾对系统的深度理解和对构建目 的的深度认知。 ...
通往幸福的十个步骤
介绍 来自HackerNews的一次推送 原文链接 简短的个人感想 人年龄越大,经历得越多,可能越能感受到这些点吧 和阿德勒心理学也有异曲同工之处 大家共勉 原文 原网站访问可能有一点点慢,我把原文贴在这里 pieterhpieterh wrote on 29 Sep, 17:57 (3949 days ago) battery_full.png Today, I’m going to explain ten simple steps you can take towards being happier, and making those around you happier. It takes no money and no magic. Just a shift in how you see the world, yourself, and others. As the 14th Dalai Lama said, “Happiness… comes from your own actions.” ...
AI 时代的数字平权
SLOP预警/DISCLAIMER 这篇文章主旨和论据均由人类古法提供,但论述细节大量由AI填充,再由人类微调 前言 这两年大家都在聊 AI,聊 LLM,聊 Coding Agent,聊失业,聊焦虑,聊“以后是不是人人都能写软件”。 我自己的答案是:也许还没到“人人都能把软件写好”的程度,但至少已经到了“很多人都可以把自己要的东西做出来”的程度。 这件事在我看来,比什么“十倍程序员”更重要。 因为它指向的不是单纯的效率提升,而是一种更朴素、也更稀缺的东西:数字平权。 不是每个人都要去创业,不是每个人都要做 SaaS,不是每个人都要把自己活成 Product Hunt 上的独立开发者。我的意思更简单一点: 你终于有机会,不再只能吃厂商喂给你的屎了。 门槛确实在下降 先把话说在前面:我不是在吹什么“AI 已经替代程序员”这种鬼话。 软件工程当然不只是写几行代码。需求、架构、测试、性能、安全、维护、演进,这些东西一个都没消失。尤其是在那种纯许愿式的 Vibe Coding 里,AI 写出来的东西很多时候也就是“能跑”,离“靠谱”还很远。当然,如果你自己知道自己在做什么,把它当成助手而不是许愿池,情况就另说了。“软件质量”这笔账,暂时先按下不表。 但即便如此,一个事实还是很明显: 基础开发的门槛,真的在下降。 以前很多人脑子里有个想法,最后都死在第一步: 我不会写代码 我不会做前端 我不会打包 我不会调 API 我不会搞 Android / iOS 算了,麻烦死了 现在不一样了。你可以不会,但你可以一边问 LLM 一边做。报错了贴给它,UI 丑了让它改,数据结构不懂让它解释,哪怕最后代码一团乱麻,至少那个东西有机会先长出来。 这件事非常重要。 因为“能不能先做出来”本身,就是一道很高的门槛。现在这道门槛被削平了很多。一个普通人,一个没有系统学过计算机的人,一个只是“我就想做个自己能用的小玩意”的人,也终于有了入场券。 是的,做出来的东西可能不优雅,可能有 bug,可能丑,可能非常不工程化。 但它是你的。 而且它第一次让很多人意识到:原来软件不是天上掉下来的,不是只能被大公司、平台、应用商店、产品经理和广告系统垄断定义的东西。 我们真正需要的功能,可能没那么多 现在很多 App 根本不是“软件”,而是某种注意力收割器套了个工具壳。 最离谱的是,很多纯工具软件也开始这样。 前段时间我打开用了很久的欧路词典,结果发现默认界面里居然开始塞短视频了。那一刻我的第一反应不是愤怒,甚至都不是惊讶,而是失望。 因为这种事已经太常见了,甚至欧路已经做得非常克制,它还提供了比较直接的设置可以调整展示顺序以及是否展示。 但也正因为太常见了,一个本来该老老实实做工具的软件也开始往这个方向滑,才更让人难受。你明明只是想查个词,结果它想要的是你的停留时长、你的注意力、你的点击、你的路径数据、你的习惯,最好再顺手把你的大脑一起格式化成一个适合被推荐流驯化的形状。 这就是现在很多软件的基本逻辑: 功能当然要有,但不是第一位 第一位是留存 第二位是转化 第三位是广告位 你的需求?放后面再说 所以软件越来越臃肿,越来越吵,越来越像商场门口、路边推销的、Tony老师那些不厌其烦拦着你办卡的人。 618 期间这种感觉尤其明显。很多 App 只要你切出去几秒再切回来,哪怕根本没有退出,它也得重新给你弹一遍开屏广告。简直像在提醒你:别忘了,你不是用户,你是流量。 更搞笑的是,同样的 App,外区下载的版本居然往往干净得多。 ...
数字自留地
写这篇的起因是周围有朋友陆陆续续问过类似的问题:想在家里或者私人设备上跑点服务,不知道从哪里入手,也搞不清楚要花多少钱、麻不麻烦。所以整理了一下自己的实践,算是入门引导——不讲操作步骤,更多是帮你想清楚「要搭什么」「为什么」「怎么选」。 核心出发点只有三个:便宜、可控、数据是你的。 为什么要自己搭 动机其实很朴素。 云服务现在确实方便,iCloud、Google Photos、OneDrive 开箱即用,每个月收点小钱,大多数情况下够用了。但这里有个前提:你信任对方,而且愿意接受对方可以随时改规则、涨价、停服。国内网盘删库、限速、关停的新闻不是没有,国际服务也有账号被封、区域限制的问题。 自托管的核心价值是主动权在你:数据存在你的硬件上,随时可取,随时可迁移,功能自己决定要不要开。代价是维护责任也在你——硬件坏了、服务挂了,得自己处理。所以这条路比较适合对这件事本身有点兴趣的人;如果完全不想折腾,云服务是更合理的选择。 但是,和ChatGPT聊过后,感觉这些可能也只是表面 数字自留地不一定意味着拥有所有基础设施。 它意味着你始终拥有迁移、备份、恢复和退出的能力。 我对云保持警惕,但我也不想把家里塞满硬件和服务器。 因为我真正反感的不是云,也不是硬件。我反感的是: 当某个东西出问题时,我没有选择。 硬件 迷你主机 / Mac mini 市面上 N100 这类低功耗 x86 迷你主机,功耗在 10-15W 左右,7×24 小时全年电费大概在 100-200 元,算是家用服务器的性价比首选。价格从几百到一两千都有,性能跑绝大部分常见服务没有问题。如果本来就有 Mac mini 常驻家里,顺手兼做服务器也完全可以。 有一点要配置好:断电后自动启动。在 BIOS(找「AC Power Loss」相关选项)或 macOS 的节能设置里打开,不然停电来电之后需要手动开机,很烦。如果预算允许,搭一个家用 UPS 电源,应对短时停电更从容。 旧笔记本 旧笔记本自带电池,本身是一个丐版 UPS——停电了服务还能继续撑一段时间,这是很多人没想到的优势。缺点是功耗比迷你主机高,散热噪音可能也大一点,长期运行建议设置合盖不休眠,或者干脆不合盖。 Linux 在旧笔记本上往往状态更好。我自己一台 2019 年的 Magicbook 装了 ArchLinux,内存占用从 Windows 的 70%+ 降到 400MB 左右,拿来当小服务器跑得很顺畅。 VPS(可选) 如果你想对外提供服务,或者没有公网 IP,一台低配 VPS 可以做公网入口。便宜的配置(1 核 512M-1G)一个月几十块,量力而行,不是必须的。 另一个场景是存储型 VPS:有些云服务商有挂载大磁盘的低配机器,对计算要求不高但存储容量大,适合拿来做备份节点,比单独购买对象存储有时候灵活性更好,看具体需求选择。 基础设施:Tailscale 在讲具体服务之前,先说一个基础问题:怎么安全地从外网访问家里的服务。 Tailscale 是我目前的方案。它基于 WireGuard 协议,把密钥管理和 NAT 穿透都自动处理掉了,装上之后几分钟内就能把所有设备组进同一个虚拟局域网,从外网访问家里的服务就像在局域网里一样。免费计划对个人够用(100 台设备、3 个用户)。 ...
我的工具箱
写在前面 这类文章在互联网上其实已经泛滥了,我本来也不打算写。但一方面某些工具确实改变了我的工作方式,值得记录一下;另一方面我有不少朋友问过我类似的问题,与其每次重复解释,不如写成文章。 先说清楚一点:工具这种东西有非常浓厚的个人色彩,没有好坏优劣之分,只是每个人看重的东西不一样。「差生文具多」这句话本质上是一种自嘲,不是用来攻击别人的武器;同理,用某个工具也不应该成为你炫耀的资本。把工具本身当成某种身份符号,反而本末倒置了——有点像崇拜那个你在哪里读书而不是你读了什么书一样。求同存异,工具服务于人就好。 我的选型理念 大概有这么几条原则,按重要程度排列: 开源优先:不是为了装,是为了在厂商「喂屎」的时候有得选。《自由软件,自由社会》我虽然没完整读过,但那个道理我是认同的。商业公司不是慈善机构,功能阉割、涨价、后门——当你的迁移成本高到一定程度,你就只能吃屎。 跨平台:我同时在用 macOS 和 Linux,偶尔还要连一些 Linux 服务器,一个只能在一个平台用的工具对我来说打折扣。Windows 现在用得少了,但也不是完全不接触,选工具时的标准是至少「能用」就行,不需要体验完美。Windows 上 CLI 生态和 UNIX 系确实不在一个量级,如果真要在 Windows 上做点什么,基本上也是开个 WSL 解决,而不是指望 cmd/PowerShell 那边。 不被 vendor locked:和开源有关联,但不完全一样。核心配置最好是纯文本的,这样我可以用 git 管理,随时迁移,不依赖任何厂商的同步服务。 不 all-in-one:一个工具做好一件事(UNIX 哲学),然后组合使用。把所有东西塞进一个超级 App 听起来很方便,实际上某一部分拉垮了你整个工作流都得跟着受苦,还有隐私风险集中的问题。 极简+实用主义,CLI 和 GUI 并用:能用 CLI 解决的问题不一定非要 GUI,但有好的 GUI 我也不排斥,不存在「用 GUI 就是不够 hardcore」这种奇怪观念。 当然,有些领域受制于现实情况,或多或少会违背上面的原则。特定场景特定分析,后面会提到。 操作系统 / 设备 主力设备 工作:公司发的 Mac(具体型号懒得说,反正不是自己买的,用着就行) 个人:自己买的 Mac mini + 一台装了 ArchLinux 的老笔记本(Magicbook 2019)+ 一台 2019 款 MacBook Pro(发热降频严重,但内存相对大,勉强还能用,主要用来跑一些对算力有一定要求的本地任务) 手机:Android 日常 + 老 iPhone 备用,基本只用来打电话、刷视频、MFA验证之类的 小型 VPS:自建一些服务用 为什么用 Linux 之前专门写过一篇:笔记本折腾Linux碎碎念。简短版本:Windows 在这台老机器上已经烂到不可接受,而且微软近年来的所作所为(Recall、强制更新、莫名其妙的后台服务……)让我实在没有继续用的理由。装 ArchLinux 之后内存占用从 70%+ 直接降到 400MB,老机器焕然一生。 ...