用户故事 | Jerry银银:这一年我的脑海里只有算法
下载APP
关闭
渠道合作
推荐作者
用户故事 | Jerry银银:这一年我的脑海里只有算法
2019-02-13 Jerry银银 来自北京
《数据结构与算法之美》
课程介绍
讲述:修阳
时长08:22大小7.65M
比尔·盖茨曾说过:“如果你自以为是一个很好的程序员,请去读读 Donald E. Knuth 的《计算机程序设计艺术》吧……要是你真把它读下来了,就毫无疑问可以给我递简历了。”虽然比尔·盖茨推荐的是《计算机程序设计艺术》这本书,但是本质却折射出了算法的重要性。
大家好,我是 Jerry 银银,购买过算法专栏的同学应该时不时会看到我的留言!目前我是一名 Android 应用开发工程师,主要从事移动互联网教育软件的研发,坐标上海。
我为何要学算法?
细细想来,从毕业到现在,7 年多的时间,我的脑海里一直没有停止过思考这样一个问题:技术人究竟能够走多远,技术人的路究竟该如何走下去?相信很多技术人应该有同样的感受,因为技术的更新迭代实在是太快了,但是我心里明白:我得为长远做打算,否则,就算换公司、换工作,可能本质也不会有什么改变。
但是,我其实不太清楚自己到底应该往什么地方努力。于是,我翻阅了好多书籍,搜寻 IT 领域各种牛人的观点。多方比较之后,我终于决定,从基础开始,从计算机领域最基础、最重要的一门课开始。毫无疑问,这门课就是数据结构和算法。
我是如何遇见极客时间的?
既然找到了方向,那就开始吧。可是问题来了,从哪儿开始呢?大方向虽然有了,可是具体的实现细节还是得慢慢摸索。大学没怎么学,工作这么多年也没有刻意练习,起初我还真不知道从哪儿开始,只是买了本书,慢慢地啃,也找了一些简单的题目开始做。有过自学经历的同学,应该有同感吧?刚开始连单链表翻转这样简单的题都要折腾半天,真心觉得“痛苦”。
之前我在极客时间上订阅过“Java 核心技术 36 讲”,体会到了专栏和书本的不同。极客时间的专栏作者都是有着丰富的一线开发经验,能很好地把知识和实战结合在一起的大牛。这些课听起来非常爽。估计你应该经常跟我一样感叹:“哦!原来这些知识还可以这么使用!”当时我就在想,极客时间啥时候有一门算法课就好了。
说来真是巧,没多久,极客时间就推出了“数据结构与算法之美”。我试读了《为什么要学习数据结构和算法》和《数组:为什么很多编程语言中数组都从 0 开始编号?》这两篇之后,立即购买了。
到现在,专栏学完了,但是我依然记得,王争老师在《为什么要学习数据结构和算法》这篇文章里面提到的三句话,因为这每一句话都刺痛了我的小心脏!
第一句:业务开发工程师,你真的愿意做一辈子 CRUD Boy 吗?
第二句:基础架构研发工程师,写出达到开源水平的框架才是你的目标!
第三句:对编程还有追求?不想被行业淘汰?那就不要只会写凑合能用的代码!
我每天是怎么学专栏的?
于是,每天早上醒来,我的第一件事就是听专栏!专栏在每周的一、三、五更新,每周的这三天早上,我会听更新的文章。其它时间,我就听老的文章,当作复习。
听的过程,我一般会分这么几种情况。
第一种情况,更新的内容是我之前就已经学过的,基本已经掌握了的。这种情况下,听起来相对轻松点,基本上听一遍就够了。起床之后,再做一下老师给的思考题。这种情况在专栏的基础部分出现得比较多,像数组、链表、栈、队列、哈希表这些章节,我基本上都是这么过来的。
第二种情况,更新的内容是我学过的,但是还不太精通的。这种情况下,王争老师讲的内容都会将我的认知往前“推进”一步。顺利的话,我会在上班之前就搞懂今天更新的内容。这种情况是曾经没有接触过的内容,但是整体来说不难的理解的,比如跳表、递归等。
还有一种情况,就是听一遍不够,听完再看一遍也不行,上午上班之前也搞不定的。不过,我也不会急躁。我心里知道,我可能需要换换脑子,说不定,在上午工作期间,灵感会突然冒出来。这种情况一般出现在红黑树、字符串查找算法、动态规划这些章节。
到了中午休息时间,我会一个人在公司楼下转一圈,同样,还是听专栏、看专栏。
如果今天的文章,早上已经搞定了,我会重新看下其他同学的留言,看看其他同学是如何思考文章的课后思考题的,还有就是,我会看看其他同学学习过程中,会有哪些疑问,这些疑问自己曾经是否遇到过,现在是否已经完全解决了。
如果今天的文章,早上没有彻底搞懂,这种情况下,我会极力利用中午的时间去思考。
晚上的时间通常无法确定,我有时候会加班到很晚,回到家,再去啃算法,效率也不高。所以,我一般会在晚上“看”算法。为什么我会用双引号呢?是因为我真得只是“看”,目的就是加深印象。
以上基本是我工作日学专栏的“套路”。
等到了周末或者其它节假日,就是“打攻坚战”的时候了。估计很多上班族和我一样,只有周末才有大量集中思考的时间。这时候,我一般会通过做题来反向推动自己的算法学习。
像红黑树、Trie 树、递归、动态规划这些内容,我都是在周末和节假日搞懂的。虽然到现在对其中一些知识还不能达到游刃有余的地步,但是对一般的问题,大体上我都知道该如何抽象、如何拆解了。
我在学习算法时记的笔记
通过学习专栏,我有什么不一样的收获?
首先,专栏学习拓宽了我的知识面。例如,很多书本不讲的跳表,王争老师用了一篇文章来讲解。犹记得当我看完跳表时,心想,这么简单、易懂、高效的数据结构,为什么很多书籍都没有呢?这个专栏真的买值了!
其次,专栏的理论和实践结合很强。书籍是通用性很强的教材,一般很少会涉及软件系统是如何使用具体的数据结构和算法的。在专栏中,老师把对应的知识和实践相互结合,听起来特别过瘾!比如堆这种数据结构,理解起来不难,但是要用好它,还得下点功夫,经过老师一讲解,搭配音频,我的理解也变得更加深入了。
最后,专栏留言这个功能真的太好了,为自学带来了诸多便利,也让我获得了很多正向反馈。很多时候,经过相当长的一段时间思考,还是不能打通任督二脉,其实后来回想,当时就差那一层窗户纸了。于是,我在文末留下了自己的疑问,结果王争老师轻描淡写一句话我就明白了。
留言功能还有个非常大的好处。如果你用心学习,用心思考,用心留言,你的留言很大概率会被同伴点赞,很多时候还能被置顶。这本身就是一种正向反馈,也会更加促进自己的学习动力。还有一种更爽的体验,突然有一天早上,我照例醒来听专栏,突然听到了自己的名字。这个专栏 4 万多人订阅,老师居然记得我!可见王争老师真的认真看了每一条留言。
最后,我总结下自己学这个专栏的收获。尽管很多,但是我想用三句话来概括。
第一,写代码的时候,我会很自然地从时间和空间角度去衡量代码的优劣,时间、空间意识被加强了很多。
第二,学习算法的过程,有很多的“痛苦”,也正是因为这些“痛苦”,我学到了很多知识以外的东西。
第三,过程可能比知识更重要。要从过程中体会成长和精进的乐趣,而知识是附加产品!
专栏虽然结束,但是学习并没有结束。同学们,我们开头见!
分享给需要的人,Ta购买本课程,你将得20元
生成海报并分享
赞 55
提建议
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
上一篇
春节7天练 | Day 7:贪心、分治、回溯和动态规划
下一篇
用户故事 | zixuan:站在思维的高处,才有足够的视野和能力欣赏“美”
精选留言(39)
- Jerry银银2019-02-13今天的文章是我个人新年开工收到的最大红包共 2 条评论471
- 吴庆2019-02-13深有同感。 我也是一个毕业7年的嵌入式初级软件工程师,绕了一大圈才发现基础理论知识是何等重要。 吴军老师说过: 基础理论知识是一个人的基线,理论越强基线越高。再为自己定一个目标和向上攀附的阶梯,那么达到目标就是时间问题。 而很多野路子工程师搞了半辈子也未达到优秀工程师的基线。很多他们绞尽脑汁得出的高深学问,不过是正规工程师看起来很自然的东西。 关于工程师发展路线,或是成长阶段,吴军老师给出了一个参考(每一级能力相差一个数量级): - 第五级: 能独立解决问题完成工程工作 - 熟练应用工程知识和技能,无需他人指导,根据分配的需求完成任务。 - 第四级: 能指导和带领其他人一同完成更有影响力的工作 - 根据大需求确立目标以及实现方式,并将解决方案进行分解,领导团队(分配、协调、沟通等)完成此目标 - 第三级: 能独立设计和实现产品,并且在市场上获得成功 - 充分了解行业,提炼需求,并独立领导团队完成产品研发。随后可以将其量产化并营销至市场。 - 第二级: 能设计和实现别人不能做出的产品,具有不可替代性 - 对行业有深入认知和独特见解,能够做出先前没有的产品,且别人无法复制。 - 第一级: 能开创一个产业 - 站在科技最前沿,充分认识哪些科研成果已经成熟,在当前时代已经被满足,并将其产业化,形成巨大的生态链展开共 6 条评论77
- 纯洁的憎恶2019-02-13我本硕都是计算机专业,但工作却属于第二次工业革命就已经存在的传统工业领域。这几年,看着同学们在计算机领域一个接一个的实现财务自由,或在极客时间上开课,我深深的感到被时代抛弃了。同时也慢慢发现选择有时候真的比很多自己过去重视的东西更重要,而且没得选很可能也是一种优势。回去是不可能了,以我的年纪与天赋,很难带着数年的劣势去和新一代的工程师竞争。本应置身浪潮之中,却在智能时代掉队,既令人遗憾,也使人恐惧。 下面的路该怎么走?这是无论多么焦虑都要面对的问题。智能时代是变革的时代,在新生产力的驱动下,一些旧业态将被淘汰,新产业出现,还有一些传统产业被重新塑造、如虎添翼。投身于最新生产力的创造,无遗更机会成为时代的弄潮儿。然而,使新生产力迸发出最惊人创造力的场景,往往是在与传统产业的结合上。第一次工业革命的“蒸汽机+传统产业”,第二次工业革命的“发电机+传统产业”,二战后信息革命的“电子化+传统产业”,本世纪初的“互联网+传统产业”,以及当下的“机器智能+传统产业”,都成为或将成为人类文明加速腾飞的推进器。也许这是我的选择被赋予的新使命,当然它需要千万人的共同努力。新的时代已经来临,无论我们愿不愿意。在这个时代,我们可以做技术的主人,可以做技术的仆人,也可以做“隐身人”,但唯独不能站在技术的对立面。我不能做技术的敌人,也不想做“隐身人”,那么我就要同技术站在一起。 从哪里开始?单纯的写写Java和Python代码,也许可以建立与智能时代联系,但它难以建立宏观、深刻、系统的时代体感。我认为要从最根本的地方入手,直接切入这个时代的“第一性原理”,也就是机器智能的“第一性原理”。算法与数据结构是机器的思维方式,依旧是智能时代的灵魂,这里应该是我再出发的起点。相应的还有计算机体系结构、计算机网络、操作系统,以及有关的数学知识体系。然而这些知识我在学校都学过,仅仅再回忆一遍就可以吗?不,这远远不够。因为我需要更系统的学习,需要知道这些知识在工业界的最新进展与实践,需要把这些知识连接到更广泛的行业领域中举一反三,需要能够判断哪些任务适合交给机器而哪些还不能,需要引发更多有价值的深入思考……很幸运我遇到了极客时间。 带着问题学习、用学到的知识解决实际问题,是最高效的学习方法。记得在学校学习算法与数据结构的时候,我实在无法理解这些反直觉的机器逻辑,能够理解的知识点非常有限,更不用说形成完备知识体系了。更可惜的是,那时心浮气躁,没有沉下心由浅入深,却靠疯狂做题刷存在感,以题量衡量学习水平,实则是狗熊掰棒子、只见树木不见森林,更很少能与工业场景建立联系。走出校园后没有优质的学习环境,缺乏有效学习渠道,再想“补课”就难了。极客时间提供了比较优质的环境与渠道,降低了领域间的信息门槛,使我能够接触到一线工程师与技术人员的新视角,与工业界建立一定的联系。在这里计算机知识不是数字游戏与考试题,而是一个个真实的工程问题,有助于引导建立时代体感。 师傅领进门修行在个人。然而想学好算法与数据结构,乃至于达到个人目标,仅仅啃一遍王争老师的课是远远不够的。这是一个很好的开始,它很重要,但也只是一个开始,后面的路还要靠自己。这个时代没有地图,也没有路标,只有广阔的天地和一块指南针。那么就从更多的接触、更加系统的学习、更加深入的思考,以及第二遍阅读《算法与数据结构之美》开始吧。展开共 6 条评论71
- 广洲2019-02-13我也是通过Jerry银银的分享购买的专栏,我目前是在自学,刚起步的,学习的很痛苦、很吃力。但相对培训班那两万块的学费,我们这个专栏太值了。感谢王老师,感谢Jerry银银。24
- 王加武2019-09-17我今年刚上大二,学完了JAVA 基础知识,现在转向了数据结构与算法共 1 条评论12
- 笑笑2019-02-13看到前辈们的文章感触很多,自己是一个大三安卓开发,学校课基本上不咋听,上学期在百度实习,现在准备阿里面试,但是面试时候全问我的都是操作系统编译原理数据结构比较多,自己觉得老师这门课讲的很好,真的是循序渐进,有时候自己偷懒没看,就堆了一大堆课现在边准备面试继续复习老师的课,很谢谢老师和那些在留言区总结知识的人。共 1 条评论9
- lianlian2019-02-13王争老师早上好啊,我第一个订阅的极客时间专栏就是数据结构与算法之美,看到第一篇中您写着“基础知识就像是一座大楼的地基,它决定了我们技术的高度”,我感到很惊喜,两年多前我也跟人说过“基础不是100分考60分,而是建摩天大楼的地基。”哈哈(ಡωಡ)hiahiahia 我是2018年11月11号晚上吧知道这个专栏,当天信号不好,我等到凌晨一点多购买成功后,迫不及待听了2节课才睡觉。王争老师的专栏太棒了,内容价值远超价格。走路,吃饭,空闲,学而时习之,勤加练习,不亦乐乎!感谢王争老师的分享o(^o^)o展开9
- Michael2019-02-21这门课程是从去年十一月份买的,当时买了之后就发现非常值,讲的不枯燥,都能听的进去,就拿堆这个数据结构来说,我自己练习了真的至少有十几遍了,而且做LeetCode题目的时候,我自己都避免使用类库,每次自己都是手动实现一个堆自己用。我个人一般每篇文章会看两遍,难一点的例如红黑树,动态规划,回溯,分支会反复的看,做题,体会个中道理,感谢老师的专栏8
- 2019-02-13我还以为我真太差了,看到你是安卓工程师,我就放心了😂😂共 2 条评论7
- Neo_Zhang2019-02-13在大学期间断断续续的学习了算法,参加了一些编程竞赛。本科毕业半年,在部门内算法老哥的指导下逐渐体会它在项目中的实际用途和神奇之处。 《数据结构和算法之美》是我在极客订阅的第一个专栏,我个人觉得看专栏和书的区别是——看书是一个人在看,而专栏里有老师的答疑,用户的相互探讨,集思广益。 半年时间过得很快,虽然专栏里的文章已经看过大半,但老师列出的课后练习和算法实战还没有完全掌握,专栏里的文章我仍需多次阅读。 谢谢老师!展开7
- 融梨2019-04-09学习跟年龄无关,最开始跑不一定赢。让我想起《几何原本》的五个公理,在各个领域借鉴它的思想。共 1 条评论6
- zixuan2019-02-13厉害厉害,非常扎实。另外你的字写得好😄。5
- $Jason2019-02-13我也是掉队的那一批,学到20几的时候还是有点吃力,感觉之前学的都忘了,就又回头学,但是还是在排序那边绕的我很晕,学习很受挫。但是我不放弃,接着学。共 1 条评论5
- Abner2019-02-13半年时间过去了,我也是开始掉队的那一批,中后期开始慢慢赶上进度,虽然只是浏览了一遍,之后到现在开始从头仔细看,也结合着必知必会的30道题进行练习,感觉效果还是有的,接下来会投入更多的时间学习专栏,立个小目标:这周把必知必会30题做完,在2月底把专栏至少刷3遍。 另,老师开设这么好的一个专栏,真的谢谢!4
- 沐风2020-05-15刚毕业两年,后悔大学没有用功了,重温算法还是有点吃力的,有的时候老师讲的内容理解了,但遇到了具体场景又很难联想起来,而且经常容易断片和健忘,应该是没有理解透彻吧。这东西平时用的少,就像数学题一样,长时间不用遇到就回一脸懵,真的需要经常练题回顾。感谢jerry的学习分享,让我知道优秀的人也并不是超人,只是他们更加努力罢了😁。3
- vate2019-03-13庆幸我在初步接触工作时能意识到底层基础原理得重要性,希望这能让我走得更远一点叭hhhh3
- DasonCheng2019-02-13感谢老师和同学的分享!也来谈谈我个人对成长的,暂不成熟的小认识: 人生道路上我们不断优化自己的信息源,初级阶段更多的是接收已有的信息,比如以接受教育开始,利用大块时间系统性学习新知识,构建某一领域的知识大厦。后期更多的是思考与使用,在接收新信息的同时,归纳总结到之前构建的属于自己的知识殿堂,这一阶段知识不在单纯是知识,融合为可以提高效率,运用自如的“智慧”。 另外也向老师和同学们提一些问题: - 在社区、社交(twitter、 medium、quora、reddit)等互联网平台上有哪些值得关注的人、blog、或专栏 - 网络上大部分内容是讲“怎么用”,对于入门来说这些知识确实有用,但是在爬坡的时候,原理性的“为什么”及历史脉络更有用处,这类“为什么”的信息源有那写展开3
- aguan(^・ェ・^)2019-02-13谢谢老师。谢谢Jerry的分享。3
- Justin2020-10-30有同感,工作快四年了,我也是android开发,也在思考程序员的未来,共勉吧,好好学习,相信努力是不会辜负自己的2
- J.Smile2019-07-16以前大学学习学得糊里糊涂的,工作后看了一些书但都只是掌握些皮毛,从来没有感觉能像这个专栏一样让我感觉那么清晰,老师太棒了,让我建立了自信心。2