卖桃者说
池建强
极客时间创始人、墨问西东创始人
30376 人已学习
免费领取
课程目录
已完结/共 523 讲
第一季 (135讲)
第二季 (134讲)
第三季 (124讲)
第四季 (90讲)
卖桃者说
15
15
1.0x
00:00/07:04
登录|注册

第388期 | 你的编程能力是从什么时候开始突飞猛进的?

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

全部留言(10)

  • 最新
  • 精选
  • 橙橘猿先生
    做完新项目之后,收获许多宝贵的经验,认识自己的坏习惯并修正,以前闷声独自做,现越发重视沟通
    5
  • 长发姑娘
    关于代码检视,这一点真的是认同的不能再认同了。 三年前那会的工作强制要求代码检视,刚开始是极度排斥这个工作的。因为作为一个职场小菜鸟检视代码真的是见很痛苦的事,硬着头皮拉上架构师组织了我们那帮小菜鸟的第一次检视会,10 分钟就结束了。 我们讲完,架构师给我们提了一些检视代码要着手的点,一一记录下来,会后通知到参会的人。在后来的代码检视过程中对照着那些可以入手的点,慢慢的写代码就有了一个比较好的习惯,不再因为编码习惯去犯一些低级错误。 再后来将代码和业务逻辑挂钩,虽然大家水平差别不大,但是有的功能实现总有人会用到很巧妙的思路。配合起来看有一种豁然开朗的感觉,这个原来还可以这样用啊!又 get 到了一个新技能呢! 再后来换了工作,这几年再也没有过代码检视,为了业务而业务。突然间有点怀念以前的日子,折腾并成长着。
    4
  • 瀚海星尘
    每次参与新项目的时候,可能原因是因为这点所以得读大量代码😃
    3
  • 林毅鑫
    年初疫情期间自己咬牙,坚持不外包自己承担下来的项目,让我突然有一种进阶了的感觉。 顺便提一下,很喜欢InfoQ的文章,搜索功能太好用了。
    2
  • 李洪亮
    当能够用所学知识解决工作中的难题时,那种成就感会不断激励自己不断努力前进,只要你对技术还保有激情,那种快乐是任何东西都比拟不了的。
  • 爱学习的大叔
    保持努力,不见其增,日有所长。润物细无声。
  • 叶小鍵
    公司最近离职人员与退休人员较多,造成人手不足。 这个时候,原来这些人的工作会分担到你的身上,这时,工作能力会有段量的上升,从量多再到质变。 这个是好事,我觉得获得更多的工作机会,也得到更多的经验与角度来精进自我。 我的方法,是记录与提问, 记录:工作的流程,与投入的时间 提问:有什么方式可以更快更好完成它?
  • Joke
    勤学苦练,日积月累,水滴石穿
  • Edward Lee
    说实在的,还未有过这种感觉 : (
  • 渣渣
    我想突飞猛进的话也有很多方面吧,有基础,有技巧,有沟通,有认知 我想我进步第一次是毕业后工作的第一家创业型公司,也是实习的地方,让我稍微入门了一些(虽然现在也还在入门),那个时候刚从学校出来,很多东西都不懂(之前还在一家单位实习了两个月,好像就是锻炼了下独立处理问题的能力,或者说沉得住气-看文档),当时领导让我负责一个web业务系统的小模块的小功能,但由于业务和框架不熟,期间出现了一些问题,记得那个时候框架还是springframework+mybatis,基于公司自己的后台框架,到现在有还有那时候的一点习惯和精神传承下来 第二次是现在时,由于前一份工作之前是做.net,后面转岗到Java,有段时间没用,有些脱节了,现在在工作中学习吧,在和一些优秀的人一起工作,也能帮助我慢慢进步,每周正常情况下有讨论会,codereviewer或分享,我也乐于发表一些观点,每周尽量codereviewer和分享真是蛮好的,虽然大多数时候讲的一些东西没去复盘,主要是工作任务重,是有这个心,有点无这个力。 总结了下,作为一个程序员,应该保持思考和总结: 1.任何技术衍生都有理论基础,或者是论文参考,这个创造是少数人做的,我作为使用者,更多的要使用、熟悉,慢慢掌握它 2.要提升只有学习和实践,学习要系统化,比如数据结构和算法,这些既是基石,也是天台,但是感觉平时的学习是有点碎片化的,一个是时间不多吧,另外可能是没有特别紧要的应用需要,很多时候去研究一个东西,比如Api,分库分表, 研究完了应用到工作中,那就能说学会了么, 或许可能只是平时用的技术的另一个展现,或者说是一个新的东西,但也可能只能说是会用吧,它所在的知识体系或许很庞大。 3.多看优秀的代码,多向优秀的人请教和学习。 4.好奇与务实
收起评论
显示
设置
留言
10
收藏
95
沉浸
阅读
分享
手机端
快捷键
回顶部