打字速度测试,但是为开发者定制的
文章摘要
HaxxorWPM 是一个专为终端爱好者做的打字速度测试站点。和传统的 typing test 打普通英文单词不同,它让你输入的是真实的命令行指令,比如 grep -R "error" logs、systemctl status nginx、git pull --rebase、docker compose up -d 这类日常运维和开发场景中会敲的东西,整体视觉风格也刻意做成了黑客文化的调调。
测试机制很直白:屏幕上依次出现命令,你照着敲,平台实时统计 WPM(每分钟词数)、准确率、完成命令数和错误数。时长有 30 秒、60 秒和 120 秒三档可选,不同时长有各自独立的排行榜。跑完后会给出一份汇总(比如标注为”Balanced run”),显示整体 WPM、准确率、raw WPM 和命令总数。站点还有排行榜功能和”Save run”保存成绩,提交成绩时可以附带自己的姓名、键盘布局和键盘型号信息——这个细节被不少评论者点赞,因为它让不同硬件和布局之间的比较更有意义。作者在评论区还提到,根据用户反馈他后来加入了 Python、Bash 脚本风格和 Postgres 分类,以及给受虐爱好者准备的混淆 Perl、IOCCC 风格的 C 和 Malbolge。
有意思的是,HN 上围绕这个小玩具展开的讨论远超出了工具本身,主要形成了三条争论线。第一条是”真实性”质疑:几乎所有资深用户都指出没人真的会完整敲出命令,现实里是 apt-g<Tab> ins<Tab> ngi<Tab>,或者 Ctrl+R 调 fzf 历史,因此不建模 Tab 补全、别名和 readline 快捷键(Ctrl+P、Ctrl+W、Alt+Backspace)就不算”真实”。第二条是”打字速度到底重不重要”的经典争论,双方都很激烈。第三条则是 LLM 时代的新问题:既然大部分代码交给 agent 写,那么快速敲代码的能力是否还有价值?此外还有一些技术性反馈,比如部分用户(Firefox on Windows/Android)遇到 SSL_ERROR_RX_RECORD_TOO_LONG 证书错误,以及 Bitdefender 会把这个页面拦截为钓鱼页面——作者说服务跑在 Caddy 加标准 Let’s Encrypt DV 证书上,绝大多数人都正常,正在收集出问题的环境信息。
HN 评论精华
- lucb1e:给出了最详尽的 UI 反馈——切换分类时滚动位置不回到顶部,导致你照着”最上面”那条敲结果整个列表被判错重排;前三条命令回车后整页(包括输入框)都会滚动;WPM 作为度量很怪,因为有的”词”是
-h,有的是带引号的"user@example.com",需要 Shift 的多寡差异很大,随机抽到什么命令影响很大,”不如直接换成 CPM,更快得到可靠结果”;理论上还应该支持 readline 输入模式。他自己的成绩是 60 秒 Basics 分类 79 WPM、100% 准确率、38 条命令,2007 年的 Logitech K200 薄膜键盘。 - BrenBarn / programjames / wazoox / umvi:几乎异口同声——必须建模 Tab 补全才能测量真实情况,尤其是目录路径。umvi 说他敲
ssh-copy-id时打了ssh-c就按了 Tab,然后失望了。wazoox 说”我从来不敲apt-get install nginx,我敲的是apt-g<Tab> ins<Tab> ngi<Tab>“。teravor 补充还有 Ctrl+R 调 fzf 历史。 - gurjeet:真正的测试应该解析用户的
.bashrc、.zshrc、.profile,把别名和函数展开后再看最终执行的命令是否匹配。 - hronecviktor(作者):回应”能不能退格改上一条命令”的抱怨——”现实里你也没法退格回到已经执行过的命令,对吧?:)”;关于
grep -R "error" logs里为什么给 error 加引号,他坦白”这些当然都是 AI 生成的”,但他本人认同这种写法,”我在 bash 里给一切加引号……shell 展开处处是坑,良好的引号习惯和--能省很多事”。 - eqvinox:这基本上是 devops 甚至纯 ops 的东西,不是”开发者”的。由此引出一串关于 DevOps 一词被滥用的讨论——saurik:DevOps 的本意根本不是一个独立岗位,而是重新分配工作让开发者自己做运维,”结果很多人完全没抓住重点,只是把 ops 的人改名叫 devops”。interf4ce:把任何 ops 工作叫”DevOps”,跟把 JSON API 叫”REST”是同一档次的事。
- abhaynayar:LLM 时代的新认识——学会快速打不带大小写和标点、甚至带错别字的普通英文已经够用了,所以针对代码的打字训练更不重要了。另外他发现有时候就是不想说话,所以语音输入并不能全时段替代打字,他反而更偏好用小写快速带错别字地打。
- jwpapi:认为这是谬误。agent 需要探索、grep、重建上下文;如果你有好的心智模型,用一串快捷键或命令 7 秒内就能改完。争论的关键不是执行时间而是”上下文成本”——每多一个任务都更贵,从第二个任务起认知负荷就开始上升,所以”一个不用切换就能在单个上下文窗口内完成的任务,在这个充满干扰的时代非常宝贵”。
- jghn:打字速度从来就不是大事。几十年前大学毕业时他能打 110-120 WPM,但随着职业发展,他的”工作 WPM”和”日常 WPM”都在下降——离开纯写代码的初级岗位后,时间越来越多花在思考和与人沟通上,”这时候我是 20 WPM 还是 200 WPM 有什么关系?”对 LLM 同理:”反正它要转一分钟,我输入提示词花 10 秒还是 20 秒,谁在乎?”
- rgoulter:部分同意但没那么极端。20 WPM 和 100 WPM 有显著差别(一条 150-200 词的评论是两三分钟 vs 十分钟),但 160 vs 80 就未必了。”打字速度关乎延迟而非吞吐”是关键视角,之后就是收益递减,大约 80 WPM 就够。
- iLemming:强烈反驳”打字不重要”派——”这都是什么鬼话?读和打字的速度绝对是好程序员的标志。消费和生产文本不只关乎代码,代码本身就是结构化的文本。”软件开发是社会技术问题,日常要处理 Slack、Teams、邮件、文档、注释、LLM 提示词,”没人要求你达到速录员的速度,但认为它完全不重要是一种自大”。
- malux85:打字速度只对初级到中级开发者重要,之后抽象设计、数据结构、系统设计、复杂度隔离的重要性远远更高——一半是因为你的速度已经不再是瓶颈,一半是因为你的工作单元变大变复杂了。
- raincole:分享了真正提升他代码打字速度的东西——用 AutoHotKey 2 把 CapsLock 组合键映射到各种符号(CapsLock+J/K 出圆括号、U/I 出方括号、L 出花括号、O/P/M/E 出下划线加减等号)。SoftTalker 提醒:这样做会让你在别人的”正常”键盘上肌肉记忆反噬。hronecviktor 补充了一个惨痛案例:三人 mob programming,一个 106 键 US 布局、一个 60% 俄语布局、一个加泰罗尼亚布局,”90% 的时间我们都在找特殊字符”。
- Bender:建议”Movie Hacker”分类应该收录 nmap 和 sshnuke——《黑客帝国》里那一幕在湾区影院放映时,观众全场起立欢呼,不熟悉这些工具的人完全不明白发生了什么。snozolli 讲了个类似的故事:2000 年代初在旧金山看电影,预告片里旁白郑重宣布”Michael Jennings 是业界最好的逆向工程师”,全场哄堂大笑,”我感觉找到了我的族人”,之后就搬去了旧金山。
- amarant:注意到”我们自己的 Bobby Tables”(小 Bobby Tables 梗)在好几个分类的排行榜上都名列前茅。
- rlv-dan:我的打字速度和我代码的质量无关,我是先想再打。hronecviktor 回敬:”我打代码可以很快,它编译不过,但是很快 :)”