Optimized for Change — overreacted2 months agohttps://overreacted.io/optimized-for-change/优秀的API设计注重可记忆性、无歧义性,并鼓励编写可读、正确且高性能的代码。第一阶设计方面(如可读性)很重要,但代码和需求会随时间演变。第二阶设计则预判使用API的代码将如何变化,包括移动、复制、重命名、统一、拆解、添加临时方案、优化、废弃以及调试等操作。优秀的API不仅能帮助开发者顺利成功,还能通过针对变更进行优化,使其长期保持成功状态。
Is software enshittified?2 months agohttps://www.natemeyvis.com/is-software-enshittified/Cory Doctorow提出的“腐化”概念在文化上具有吸引力,表明软件因经济力量而故意变得更糟。网络效应使得免费服务能够通过降低用户体验(例如更多广告)来剥削用户,因为提高价格不可行。许多关于“腐化”的抱怨反映了正常的产品演变——软件随着成熟而变得更加复杂且性能下降。软件复杂性通常源于法律合规、可访问性和平台变更等必要功能,而不仅仅是企业贪婪。谷歌搜索中的AI摘要可能并非由主导地位驱动,而是由其他因素驱动,这对“腐化”叙事提出了挑战。
Control the Ideas, Not the Code2 months agohttps://antirez.com/news/169这位作者是一位受人尊敬的程序员,他撰写关于人工智能和编程的文章,旨在帮助他人适应变化,而非追求个人相关性。他强调编程领域正在不断发展;相较于控制软件背后的核心思想,专注于代码审查正逐渐变得不那么高效。关键原因包括:AI能够生成大量代码,使得逐行审查变得不切实际;大语言模型擅长局部代码,但整体架构仍需要人类的创意输入;花费在代码审查上的时间会挤占设计、质量保证等更高价值任务的时间。在像本地大语言模型推理这样的复杂领域中,人工智能有助于解决难题,在这些领域里,严谨的工程流程和测试比手动编码更具价值。尽管他仍然会审查AI生成的Redis代码,因为Redis使用广泛,但他认为这大多是无用功,更希望专注于设计文档和思想所有权的构建。未来的编程应该是控制思想、质量和测试的过程,具体代码细节则由AI处理,不过年轻程序员可能仍需要通过动手项目来积累基础经验。