通过「刻意练习」,你才能成为顶尖的程序员

2015-12-28 19:17:06 +08:00
 seabornlee

作家格拉德威尔在《异类》一书中指出:

人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。 1 万小时的锤炼是任何人从平凡变成超凡的必要条件。

他将此称为「一万小时定律」。

要成为某个领域的专家,需要 10000 小时,按比例计算就是:如果每天工作八个小时,一周工作五天,那么成为一个领域的专家至少需要五年。这就是一万小时定律。

如何打破无休止的加班?

在中国, IT 行业普遍加班严重,先不说行业特征与企业文化。
就我最近面试的经验来看,很多程序员的开发效率实在是低到不忍直视。

所以「效率」是一个导致加班的重要因素。
如果你效率高,但迫于企业有加班的文化,你完全可以用加班的时间来学习一些新的技术,进一步提高自己的效率。

效率低会引起下图的怪圈:

效率低 -> 无法按时完成工作 -> 加班 -> 没有时间练习 -> 效率越来越低。

要打破怪圈,有效的办法就是「刻意练习」,从此进入一个正向循环:

效率高 -> 提前完成工作 -> 练习提升 -> 效率越来越高。

别把工作当练习

演员在台上的表演算是练习吗?球员在比赛场上算练习吗?不算。
那么对程序员而言,工作上做项目算刻意练习吗?

我以前以「能边学边做」为荣, API 、语法之类的没必要看,反正我们有 Google 和 Stack Overflow 嘛。
直到我参加了 Hackthon 之后改变了这个观点。在极短的时间内,要把一个创新的想法,用技术手段实现出来。
这个时候如果你还在查某个接口应该怎么用,某个语法应该怎么写,能竞争得过别人吗?

现实工作中何尝不是如此?商业竞争如此激烈,假设你要做个推荐系统,你是找做过的来做,还是边学边做?

所以我认为练习应当发生在工作之外,一旦上了战场,不是你死就是我活。

怎样练习才有效?

并不是所有的练习都是有效的,没找准地方,只是在浪费时间。
比如,我用吉他弹一首曲子时,某个小节老是弹不好,我就会单独把这一个小节拿出来重复练习,而不是把整首曲子一遍一遍地重复练。

专家研究表明,只有在「学习区」练习才最有成效。
我们应当走出舒适区,多在学习区练习,将其变成舒适区;
接触恐慌区,将其慢慢变成学习区。

这样才能避免原地踏步,持续提高。

程序员怎么练习

走出自己的舒适区

首先要走出自己的舒适区,接触一些不熟悉的技术领域。比如后端很熟悉了,去写写前端试试。 Web 很熟悉了,去写移动端试试。
业务开发很熟悉了,去研究一下搜索,推荐系统,大数据试试。 OO 很熟悉了,玩 FP 试试。
老守着自己会的那点儿东西,总有一天会坐吃山空。

发现自己的不足

有以下方式:

没有对比,很难发现自己的不足,所以把自己的代码和编码过程展示出来,一定会发现许多可以改进的地方。

只有菜鸟才会觉得自己特别牛,因为物以类聚,他的圈子里全是菜鸟。
你越牛,接触的圈子也越牛,你越会觉得自己渺小。

程序员练什么?

程序员要练习东西很多,一些基本功如下:

没时间不是借口

我第一次组织 Code Retreat 的时候,到 QQ 群里宣传活动,结果得到的是嘲讽:

周末还在写代码,肯定是屌丝。

很多人没有时间练习,却有大把的时间打 LOL ,大把时间在群里吹水,大把时间讨论楼市股市。
当然,人都有选择自己生活方式的权利,并没有谁对谁错。

说这么多,只是希望真正热爱编程的同学们知道,只有通过刻意练习,才有可能成为顶尖的程序员!
CodingStyle.cn 这个社区里,我们会组织 Code Review , Code Retreat , Coding Dojo 。
希望我们一起成长,成为顶尖的程序员!

3605 次点击
所在节点    分享发现
18 条回复
imcj
2015-12-28 19:36:20 +08:00
成为顶尖程序员不是每一个程序员的梦想,讲真,这个点真不是大部分程序员的点。
PublicID
2015-12-28 20:00:52 +08:00
隔壁村王狗蛋说他想当全球最顶尖的民工,版搬运世界上最好的砖
hahasong
2015-12-28 20:05:00 +08:00
老板看到你不加班,就会发展更多的业务,提更多的需求,保证让你满负荷运转,这就是资本运作
kisnows
2015-12-28 22:46:16 +08:00
多数情况下,加班并不是因为效率低
ljdawn
2015-12-29 08:44:59 +08:00
网站挂了.
kffoog
2015-12-29 09:18:17 +08:00
502 的网站真是够了。。。
sheldoner
2015-12-29 09:45:02 +08:00
说了这么多话,就是为了打一个广告....然后网站还挂了....,兄弟,你累不累?
看完这个我好累啊....
seabornlee
2015-12-29 13:50:53 +08:00
@sheldoner 恢复了 : )
seabornlee
2015-12-29 13:51:14 +08:00
@kffoog 恢复了 : )
seabornlee
2015-12-29 13:51:24 +08:00
@ljdawn 恢复了 : )
seabornlee
2015-12-29 13:51:43 +08:00
@kisnows 那是另一种情况 : )
Khlieb
2015-12-29 21:06:37 +08:00
@hahasong @kisnows 现在社会变得更像《资本论》上面写的样子了
seabornlee
2015-12-30 00:18:42 +08:00
@Khlieb 整个 IT 环境就是老板要看着你加班才觉得值,不加班就认为你「没有工作激情」,「不够敬业」。针对这种「不得不加班给老板看」的情况,你可以:早早完成工作,加班时做自己的事,比如写博客,学习新技术,做自己的业余项目等。
或者换一个地方工作,只要你够牛,你可以选择不加班的工作。

最怕的就是:「反正要加班,白天就慢慢悠悠的,拖到晚上才完成」,这种心态浪费的是自己的青春。
Khlieb
2015-12-30 00:30:13 +08:00
@seabornlee 那种心态确实不应该。如果老板知道你加班时候及早完成了工作却又要给你加码就更麻烦了。
wuyuchenshishabi
2015-12-30 13:30:36 +08:00
我还以为你是那个什么清醒疯子
seabornlee
2015-12-30 19:24:12 +08:00
@wuyuchenshishabi 我清醒,还没疯 : )
wuyuchenshishabi
2015-12-31 10:18:04 +08:00
@seabornlee 但你说话的风格还真是挺像那个 ID 号的
wangyifei6817
2015-12-31 10:35:14 +08:00
哥 你工作过吗?
加班和效率低有关系吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/246749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX