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

学习 · hkliya · 于 发布 · 最后由 hkliya回复 · 4639 次阅读
1

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

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

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

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

如何打破无休止的加班?

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

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

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

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

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

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

别把工作当练习

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

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

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

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

怎样练习才有效?

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

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

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

程序员怎么练习

走出自己的舒适区

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

发现自己的不足

有以下方式:

  • 录视频
  • Code Review
  • 结对编程
  • 参加编程道场

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

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

程序员练什么?

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

  • 打字
  • 编程语言
  • 编程范式
  • 编辑器
  • 快捷键
  • TDD
  • Clean Code
  • 重构
  • ...

没时间不是借口

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

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

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

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


「软件匠艺社区」旨在传播匠艺精神,通过分享好的「工作方式」和「习惯」以帮助程序员更加快乐高效地编程。
本帖已被设为精华帖!
共收到 2 条回复
549
bbpandas · #1 ·

做程序的是不是到了30岁开始都不太愿意自己写程序了,只愿意做些带队的指导工作?

1
hkliya · #2 ·

#1楼 @bbpandas 很多人是尝试做管理后,发现最爱的还是写代码。但房价物价把很多人逼得走上了自己并不想走的路。

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。