Notes: The Best Programmers I Know

The Best Programmers I Know

  1. Read the Reference 阅读所使用的工具的参考文档
  2. Know Your Tools Really Well 从根本上理解自己使用的技术
  3. Read The Error Message 认真阅读错误信息,并尝试理解其中的内容
  4. Break Down Problems 分解问题
  5. Don’t Be Afraid To Get Your Hands Dirty 不害怕弄脏双手
  6. Always Help Others 乐于助人的心态
  7. Write and Share 掌握写作方式就是掌握思考方式
  8. Never Stop Learning 坚持学习,终身学习
  9. Status Doesn’t Matter 头衔不重要
  10. Build a Reputation 光做得好还不够,要让你的工作被大家看到
  11. Have Patience 对计算机和人类都保持耐心,尤其是对自己
  12. Never Blame the Computer 永远不要责怪计算机
  13. Don’t Be Afraid to Say “I Don’t Know” 不要害怕说“我不知道”
  14. Don’t Guess 面对模棱两可,拒绝猜测的诱惑 The Zen of Python
  15. Keep It Simple 聪明的工程师编写聪明的代码,卓越的工程师编写简单的代码

alt

TIL-2510

  • https://0github.com 使用 LLM 做 PR diff 查看
  • Set direction, don’t set end point. By Dave Snowden
  • 一个人只能学到他准备好去学习的东西
  • 不要把别人得到的东西当做是自己失去的东西 via

TIL-2509

  • You think you’re being productive but NO, actually you’re just busy. 只要你感觉一直在忙,你就不太有效率。 via Naval
  • engineering is about building it right, founding is about building the right thing. via benja
  • 周报 战报会说谎,业绩 战线不会。战术的优秀无法掩盖战略的短视。

TIL-2508

Notes: Everything I know about good system design

Everything I know about good system design

GitHub 工程师 @sgoedecke 的文章,一些笔记:

  1. software design is how you assemble lines of code, system design is how you assemble services. 程序设计是组装代码,系统设计是组装服务
  2. a complex system usually reflects an absence of good design,复杂的系统通常反映了缺乏良好的设计
  3. You should try and minimize the amount of stateful components in any system. 尽量无状态服务,有状态意味着在重启、恢复时需要持久化数据,要考虑数据一致性等,增加了复杂度和成本
  4. you should be able to go through the database schema and get a rough idea of what the application is storing and why,好的数据库设计是能够从表结构快速了解应用存储的数据和关系,从而了解应用的业务逻辑
  5. Background jobs should be your first choice for slow operations,后台异步处理耗时任务
  6. The typical pattern is that junior engineers learn about caching and want to cache everything, while senior engineers want to cache as little as possible. 初级工程师希望缓存所有内容,而高级工程师希望尽量少缓存。原因:缓存是有状态的!
  7. put “this thing happened” on the queue,把某个事件发到消息,而不是某个 job,让其他服务订阅者自行决定要做的事情。比如新用户注册事件,A 服务发送欢迎邮件,B 服务扫描帐号,C 服务设置更多权限等
  8. pushing and pulling, pull 模式服务简单,push 模式节省资源,没有最优只是合适权衡
  9. focus on the “hot paths”: the part of the system that is most critically important, and the part of the system that is going to handle the most data. 关注热路径:系统中最重要的部分,以及系统中将处理最多数据的部分。
  10. log aggressively during unhappy paths, log 除了记录预期结果,更重要的是帮助排查为什么不预期发生
  11. It’s also important to decide what happens when part of your system fails.
  12. good system design is going to look like nothing

TIL-2507

TIL-2506

2025 State of Web Dev AI

https://2025.stateofai.dev/en-US/

  1. 模型 #ChatGPT 91% most-used, #Claude #Gemini #DeepSeek ,平均使用 4个
  2. Hallucination & inaccuracies 幻觉和不准确依然是最大问题
  3. AI IDE: #Cursor #Zed #Windsurf #VSCode, 代码生成服务:v0, Bolt
  4. 编码助手: #GitHub Copilot 70%,Codeium, Tabnine, Supermaven(已被 Curor 收购)
  5. AI 生成代码比例:平均 28%。69% 的使用者通过 AI 生成的代码比例都不到 25%,只有 8% 的使用者生成的代码比例超过 75%。
  6. Vercel AI SDK 是最受欢迎的 SDK

TIL-2505

TIL-2504

  • 取消微信的健康权限,比如微信运动读取步数,很明显提高微信打开时的 loading 速度
  • Bento Grids,「弁当」日语便当。Bento Grid 的特点是内容在卡片内,不容大小内容的卡片组合展示,类似「🍱」效果
  • 沉浸式翻译出的 PDF 识别 https://github.com/funstory-ai/BabelDOC
  • nanobrowser 浏览器插件+AI=网页自动化
  • defaults write -g NSStatusItemSpacing -int 8 decrease macOS’s status bar item spacing
  • Yak Shaving, Stay focused on the task at hand, and don’t shave that yak!