马尔科姆·格拉德威尔曾著名地宣称,掌握一门技艺需要 10,000 小时的深思熟虑的练习,彼得·诺维格在他的文章 Teach Yourself Programming In Ten Years 中引用了这一发现。程序员在工作 5.2 年,每天 8 小时,每年 48 周后将获得 10,000 小时的办公室时间。这并不意味着程序员在 5 或 6 年后就会成为专家,因为这 10,000 小时的办公室时间并不全是深思熟虑的练习。

深思熟虑的练习包括阅读书籍、学习新语言、参加 Udacity 课程或解决挑战性的问题,锻炼你的思维。花 3 小时在谷歌上搜索如何操作 Ruby Gem 的 DSL 并不算入你的 10,000 小时中。一些深思熟虑的练习发生在工作中,但大多数发生在深夜和周末。

如果一份工作的 40% 被视为深思熟虑的练习(这个估计对于大多数工作来说可能偏高),那么一个每天工作 8 小时、每年工作 48 周的程序员每年只会获得 768 小时的深思熟虑的练习,达到 10,000 小时的练习将需要 13 年。如果只有 20% 的工作被视为深思熟虑的练习(由于重复任务、会议等),那么将需要 26 年才能达到精通。

Hacker News 的评论者也迅速指出,有些人拥有 1 年的经验 10 次。第一年的工作是一个陡峭的学习曲线,几乎全是深思熟虑的练习,但随后的几年是重复的,因此没有额外的深思熟虑的练习。这些程序员从未达到精通,且 是无法编程的程序员

深思熟虑的练习是从事一些超出你当前技能水平的工作(例如,如果你不理解递归,弄清楚如何递归地解决阶乘问题)。随着你当前技能水平的提高,你需要不断地从事更难的项目并挑战自己。那些有纪律、从事困难问题并花费大量时间编码的人,才会在这门技艺上达到精通。

我想象 20 年前的网页程序员会通过弄清楚如何做事情来获得 10,000 小时的深思熟虑的练习。如今的网页开发者可以访问强大的库,很多深思熟虑的练习都用于弄清楚现有解决方案的工作原理。以下是网页程序员在授权方面可能的进展:创建一个带有 CanCan 的 Rails 应用,从 RailsCast 学习如何从零开始进行授权,在 Rails 中创建自己的授权解决方案,将授权添加到你创建的网页开发框架中。这些网页开发者将不断深入,了解编程的本质(例如,Ruby 代码生成了什么 HTML,发出了什么 HTTP 请求,HTTP 是如何工作的……)。

我直到 27 岁才开始认真编程,28 岁时才找到编程工作,因此在成为专家程序员之前还有很多工作要做。我几乎每天都待到晚上 10 点,并试图在每个周末至少进行 8 小时的编程,以补充我在工作中获得的深思熟虑的练习。希望对这门技艺的专注能让我快速成为专家。

来源:Deliberate Programming Practice
作者: intelligentinvestingplan

最后修改:2024 年 10 月 01 日
如果觉得我的文章对你有用,请随意赞赏