第388期 | 你的编程能力是从什么时候开始突飞猛进的?
你好,这里是卖桃者说,今天和你聊聊编程能力这个话题。
相信你对这个词一定不会陌生,对咱们程序员这一群体来说,编程能力是最基础也是最有价值的一项能力。
所谓编程能力,简单来说就是用代码解决问题的能力。有的人编程能力强,写出来的代码正确、优雅、性能好、质量高,用简单的代码就可以解决复杂的问题;有的人编程能力弱,写出来的代码 bug 多、性能低、可读性差,用复杂的代码解决简单的问题,甚至有时候还解决不了。
有句话形容得很贴切,“好的代码像首诗,差的代码像坨屎”。而好代码和差代码的背后,其实就是一个人编程能力的强弱。当然,编程能力强的人也不是天生就是大神,都是在学习和工作中不断总结经验,一路升级打怪,慢慢成为今天的样子的。
之前网络上有一个热门话题讨论:你的编程能力是从什么时候开始突飞猛进的?里面的答案五花八门。有人是把书本上学到的内容实践了之后;有人是处理线上故障,加班的时候;也有人是开始参与一个新项目的时候;还有人是为了追女生,写了一款游戏的时候。
其中,有一条回复特别动人。答主的原话是这么说的:
“突飞猛进往往是自然发生的。你在某个夜晚苦熬一个知识点时,不会觉得自己突飞猛进;只有在多年后某日熟练地给别人讲解这个知识点后,内心才会小小地波动一下,猛然忆起当年深夜中的青灯一盏。”
现在回想起来,我第一阶段成长速度最快的时候是洪恩时代,那时候是编程能力,第二阶段是在锤子科技和做极客时间的时候,这时候是创业和做产品的能力。
在洪恩的三年半里我算是接受了真正的编程挑战,也遇到了我的良师益友。因为自己底子差,于是从基础开始恶补,一边写业务代码,一边啃操作系统、数据结构、算法等大部头。那时候也没什么事,天天泡在办公室编程和学习,每天工作十几个小时,编程能力和速度算是有了一点点成长。
等我觉得自己真正迈入了程序之门,差不多也快 30 了。
其实多数人都是像我一样,编程能力的迅速提升来源于自己在工作中真刀真枪地解决问题,一点一点地学习积累。
比如微软创始人比尔·盖茨,他刚创办微软的那几年,也是他编程能力迅速提升的关键阶段。他在《编程大师访谈录》中是这么说的:
“在公司成立后最初的 4 年,我参与编写和设计了微软所有的程序。在所有这些最初的产品中,无论是 BASIC、Fortran、BASIC 6800 还是 BASIC 6502,没有一行代码是我没有检查过的。作为程序员,我认为自己在 1975 年到 1980 年的提高是最明显的。”
阿里的技术大神毕玄也分享过,自己编程能力突飞猛进的故事。当时是 2009 年左右,毕玄作为淘宝消防队的成员,经常要处理各种故障和问题。其实每次处理的过程,也是自己学习和提升能力的过程。在那个阶段,他处理过各种各样匪夷所思的问题,就像升级打怪,不知不觉,自己的等级也提升到了很高的段位。
在工作如果能遇到大神指点,会比自己闷头学提升得更快。毕玄当时就从阿里传奇工程师多隆那里,学习到了很多排查问题的技巧,这也是他当时能力迅速提升的一大关键。
不过,好的导师可遇而不可求。如果你身边没有合适的导师,该如何快速提升自己的编程能力,达到突飞猛进的效果呢?我觉得方法只有两个字:学和练。
你可以多去阅读别人的代码,比如你的同事、你崇拜的大牛等等。就编程来说,我们的大部分时间都是花在了读代码上面,所以阅读代码也是提升编程能力的有效方法之一。当你拿到一段代码时,可以先在宏观层面上了解这些代码,知道这些代码是由哪些部分构成的,然后再去了解整个程序的逻辑。
阅读之外,你也可以多刷题。很多人会为了拿到更好的 offer,大量刷题,把它当做面试前的突击准备。事实上,刷题也能锻炼你的逻辑思维能力、写出 bug free 代码的能力、快速实现复杂逻辑的能力,这些都有助于你在平时的业务开发中写出好的代码。
最后就是多练习,多写写代码。之前我们的作者王争老师就曾在《设计模式之美》专栏里分享过练习的方法:
- 当你拿到一个功能需求的时候,先去思考一下如何设计,而不是上来就写代码。
- 写代码时,要时刻思考代码是否遵循了经典的设计思想、设计原则,比如是否足够可扩展、是否满足 SOLID 原则、可读性如何等等。
- 写完代码之后,再思考一下,代码是否有进一步优化的空间。关于这一点,大神比尔·盖茨有一个很特别的习惯,他在写完代码之后,还会把它从头到尾再全部重写一遍——这样做既有利于对设计细节加深理解、优化设计,又有利于对程序的整体把握。
- 做 Code Review 的时候,看到别人的优秀的代码,可以思考有哪些值得借鉴的地方。
总之,在平时的工作中,刻意地去学习和练习,持续修炼,大功可成。
好,今天的话题就先聊到这里。最后做个小话题讨论:你的编程能力是从什么时候开始突飞猛进的?欢迎在留言区说出你的故事和方法,一起交流,一起成长。
卖桃者说,明天见。
(编辑:夏天)