十年自学编程(1998)

“24 小时学会编程”这样的说法被广泛否定,取而代之的是一条长达十年的路径:刻意练习、项目多样化,以及不断积累直觉。评论者将深度专业能力与更现实的目标对照起来,比如通过训练营达到可就业水平,并指出成功很大程度上取决于先前背景、动机,以及超出任何课程之外的持续投入。他们也反思了这个领域的工具、方法论(如 Scrum)以及如今的 AI 助手如何塑造程序员实际学到什么、如何学习,同时强调从长远看,基础与自我驱动的好奇心仍然最重要。

“精通”所需时间与 10 年时间跨度

  • 许多人认同,持续、广泛地练习大约 10 年,才比较像能成为一名“扎实”的开发者,尽管未必称得上大师。
  • 10,000 小时经验法则被认为过于简化,但方向上仍有参考价值;人们强调的是有目的、逐步加难的练习,而不只是时间流逝。
  • 一些人指出,如果不持续挑战自己,某些开发者会停留在“把 1 年经验重复 10 次”的状态。

职业工作 vs. 业余项目

  • 有人认为,标准的每周 40 小时软件工作,经过多年积累就足以形成深厚技能。
  • 也有人说,只做“泛泛的商业工作”(尤其是在同一家公司或同一技术栈里)会让学习停滞;副项目和新领域能加速成长。
  • 这里存在一种张力:一边是“因为热爱所以全天候写代码”,另一边是“忙完一整天工作后,我不会再把晚上也拿去写代码”。

进入编程的路径:CS、训练营与自学

  • 有许多成功故事:训练营、短期密集课程、地下室里的自学、非 CS 背景转岗做开发。
  • 一个共同模式是:成功往往需要很强的动机、远超“核心”训练之外的大量时间,而且通常还要经历一份比较艰难的第一份工作,真正的学习往往在那里发生。
  • 缺乏 CS 基础有时会在后期显现出来(例如数据结构、算法),但很多人会在实践中逐步补齐。

软件工程的本质与知识衰减

  • 人们争论软件更接近科学、工程,还是社会/立法系统。
  • 有人认为基础(算法、操作系统理论、并发等)是稳定的;混乱主要来自语言、框架和工具,以及其背后的经济压力。
  • 也有人觉得日常大量精力都浪费在和糟糕的工具、库以及“熵”作斗争上,就像糟糕的实体工具或预制组件一样。

Scrum、流程与团队工作流

  • 对 Scrum 的批评非常强烈:每日站会被说成是“广告”,过度关注短期表象,割裂深度工作,更服务于管理层汇报而不是工程结果。
  • 也有人为其去芜存菁后的核心形式辩护(例如 Kanban、简单站会)是有用的;问题往往被归咎于糟糕文化和过度仪式化,而不是核心理念本身。

AI 工具、学习与刻意练习

  • 一些学习者说,像 ChatGPT 这样的工具在他们能力边缘为他们“解困”,让他们没有放弃。
  • 也有人担心 AI 和自动补全会削弱深度理解,把它类比为总用 GPS 却从不学习路线。
  • 正在形成的新常态:先自己挣扎,再把 AI 当作资深开发者来获取提示;大量用于样板代码和测试,但不要把它当成核心问题解决的拐杖。