
作为一名大学浑浑噩噩,实习期差点被辞退,后来逆风翻盘的程序员,我想通过这个回答来分享一下我个人总结出来的 3 个重要秘诀!
敲黑板了,记得收藏呀!
3 个重要秘诀是什么呢?先上答案!
先说热爱。
有的同学是一开始就热爱,所以选专业的时候就选择了计算机专业;有的同学是误打误撞,比如说我就是,大学其实选的是机械自动化,后来被调剂到了计算机网络专业,属于典型的后知后觉型。
一开始,和大多数新人一样,我认为编程好难学,班里面的好多同学也认为好难学,能转专业的就转,只有不能转的才留了下来。
十几年前的计算机专业远没有现在这么热闹,很多学校都是作为边缘专业来录的。和我同届的高中同学,我认识的当中,没有主动选择计算机专业的。
所以,我对计算机的热爱,纯粹是经过后天刻意练习的。
很多同学可能会不解,热爱也能练习?
当然。
当我发现这个专业找到工作,能养活自己,能不再伸手向父母要钱的时候,热爱就一点点的来了。随着年纪的增长,我越来越喜欢这个专业了,不是因为它充满魅力,而是它让我的生活变得越来越好。
对,我是个俗人。
一开始,这很难,因为经过两次高考的打击,我的厌学情绪特别强烈,以至于我大学的时候好几门专业课都挂科了,同学们可能很难想象:二哥,好多人心目中的榜样,大学还会挂科。
真实情况就是这样,所以很多新人给我抱怨说,“二哥,编程好难啊,总是学着忘着,我该怎么办?”我知道原因在哪?你对编程还不够热爱!
当我拿到第一笔实习工资的时候,1200 元,我记得清清楚楚,当时心里乐开了花,知道吗?人生第一次一次性地挣到这么多钱!拿到工资就赶紧给父母打了一通电话,对,现在回想起当时的场景还是有点热泪盈眶的。
虽然电话里没有喊出那句:“爸妈,你们的儿子终于挣钱了,终于不用再伸手找你们要钱了!”但其实,心里面早已经喊了几千遍!
同学们可能很难想象,1200 元的实习工资,能有那么激动!能,对于当时的我来说。
有了热爱,你自然就会去努力!这是水到渠成的一件事情。
但往往很多时候,我们会迷茫,不知道该往哪里去努力,不知道自己的劲往哪里使!
我也有过。当我拿着 1200 元的实习工资高兴的屁颠屁颠的时候,身边的一些同事,尤其是一些苏州的本地人,来实习根本就不是为了挣钱,而是给自己一些历练的机会而已。
印象很深刻。我问过一个同事,“你拿到工资后干嘛呀?”
“加油啊!这点钱还能做什么!”这个回答对我的冲击感特别强烈,有那么一刻,我觉得努力毫无意义。
但后来我想明白了。
原来,人与人之间的差距是与生俱来的!你只有努力地追赶,才有可能把这些差距缩小;而一旦你停止努力,差距就会被越拉越大!
想明白了之后,我就去一个叫编程入门网的网站上抄 Demo,每天一有时间我就去抄。对于那时候的我来说,看书提升得太慢,只有通过实战,我才能快速地提升。
后来,从前辈们那里又了解到,公司接下来会非常依赖一个前端框架,我就硬着头皮去研究源码,并利用空闲时间做了一个局域网性质的聊天工具。
learn by doing,就是我的经验心得,它让我急速地成长,很快就在技术上领先了同一批进公司的新人。
让你的代码量从 100 行到 1000 行,再到 10000 行,再到 10 万行,你就不会再有那种“学的时候能学会,做的时候不会做”的感觉了。
当然了,在敲代码的过程中,你要学会思考,为什么人家要这样实现,为什么不能换一种方法?举个很简单的例子,人家用的 ArrayList,你能不能用 LinkedList?人家用的插入排序,你能不能用冒泡排序?
在那段野蛮成长的过程中,我确实很少看书。但最近两年,我读了很多很多经典的书,比如说《代码整洁之道》、《人月神话》、《编程珠玑》、《重构》等等等等。
说到这里,给你分享一下吧。我花了一个月的时间,把近十年来读过的一系列计算机经典书籍(偏 Java 后端方向)全部都整理出来了,给你瞧瞧,可以说是包罗万象,应有尽有,但绝不是网上那些一丢 500G 的那种,划分了一个很清晰的路线(入门→工具→框架→数据库→并发编程→底层→性能优化→设计模式→操作系统→计算机网络→数据结构与算法→面试→架构→管理)。
不管是学习编程的新手,还是工作多年的老手,应该都很有帮助:
读书可以让你知道为什么要这样做,背后的原理是什么。
再加上大量的输出,就让我对编程的思考更加深刻了。
大家想一想,程序员最核心的竞争力是什么?
解决问题的能力,是我认为最核心的竞争力。
当一个问题摆在你面前,你不能束手无策呀!你热爱,你努力,最终是要解决问题的,你做不到的话,就只能被扣上“纸上谈兵”的帽子了。
解决问题的过程可以分为三步:
一开始,由于缺乏编程经验,我们很可能连问题到底是什么都搞不清楚。而解决一个 bug 的首要条件是要能够重现问题,然而编程和其他很多事情都不大一样,有些 bug 是很难重现的。
所以对于新人来说,一开始遇到问题的时候,只能面向搜索引擎,去看看别人有没有遇到类似的问题,有没有解决方案,然后套用一下,看能不能把问题给解决了。
问题解决不了的时候,想问领导,想问大佬,能不能手把手教一教啊!
有一说一,我一开始也是这样的。但渐渐地,我就会去思考,为什么会出现这个问题,这个问题的底层逻辑是什么,除了这种解决方案,还有没有其他更好的呢?要不自己再花点时间去研究一下?
当你有了敢一个人去解决问题的胆量后,其实已经证明你进步了,因为只有支撑你的基础扎实了,你才会有这样的胆量。
最后,总结一下我认为非常重要的东西吧。
热爱、努力,解决问题的能力,除此之外,你还应该重视基本功:
关于算法这块,我还想再多聊几句,如果你是奔着大厂去的,这块要趁早准备起来,至少刷 100-300 道吧。算法就像科举时代的八股文,必考的东西,才子们也不喜欢,但不刷就过了面试这关。
美团技术大佬的这份 LeetCode 刷题笔记,对算法薄弱的同学会很有帮助:
今年高考结束后,我有个表妹,想去西安上大学(西安的好大学比郑州要多一点),我去搜了一下,其中有一所 211 大学叫西安电子科技大学,它的官网上每年会把毕业生的报告写进去,2021 届的报告里提到了下面 5 点:
我觉得非常重要,这里就细说一下。
1)信息搜索与处理能力
互联网时代,信息不再是匮乏的,而是精华与糟粕并存,如果信息搜索和处理能力没有提高,看到的都是一些垃圾,那自然差距就和别人慢慢拉大了。
对于计算机专业来说,GitHub、Stack Overflow、百度、谷歌,一定要用得好,像 GitHub,大量优质的内容都在上面,学会搜索,基本上任何宝藏你都能 get 到。
你比如说这份 GitHub 上星标 115k+ 的 Java 教程,里面涵盖了 Java 所有的知识点,包括 Java 语法、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,内容不多,只讲重点。
对学习 Java 的同学就很有帮助:
2)环境适应能力
进入一个公司后,不管是实习,还是正式参加工作,一定要能尽快适应下来,和同事打成一片,关系融洽,才能更好的工作,把自己的能力表现出来。如果这不适应,那不适应,工作的状态就会很差。
3)解决问题能力
这个前面提到了,pass
4)终身学习能力
活到老,学到老,这没什么可说的,一旦停下来脚步,很可能马上就被别人超越了。生如逆旅,不进则退啊。
哪怕是你考上了 985、211 这样的名校,并不意味着高枕无忧了,可以放松警惕了,真的就像高中老师讲的那样,进了象牙塔,就可以躺平了。
我的高中同学有不少郑州大学毕业的,但有一说一,他们现在的收入基本上都被我碾压了。因为很多人进入职场后,就觉得好像还不错,也没有更进一步的打算了。
而我呢,一直在求索,一直的努力,并且正反馈了。所以,千万不要停滞不前呀。
5)阅读能力
前几天,有个同学问我该怎么学习 Java,我把我最近高赞的回答发给了他。
如何看待一些大学生说 3 天学会了 Java?(6000+赞,1.2 万收藏)
能推荐优秀的Java方面的UP主吗?(2700+赞,9k收藏)
这两个回答可以说是经过人民群众检验过的良药啊,并且内容真的非常的肝。结果你猜他怎么说,“这么多内容,无从下手啊!”
我当时想发火,忍了忍,小白吗,就手把手教。然后我告诉他,你应该先学哪一个,看哪一个视频,结果他又说,“还是不知道该怎么学啊?你能远程指导下吗?”
我直接拉黑了他。
我觉得哈,这种人明显就是阅读能力太差,不知道别人在说什么,也完全 get 不到学习方法的人,放弃吧,真不适合学编程。
最后,叮嘱大家一句,编程是看不会的,只有练,编程是门手艺活,唯手熟尔,任何时候,看别人怎么讲,没用的,一定要肯自己下手去实践。
我是二哥 @沉默王二 呀,记得点赞(为了劝你,我从网上专门找了一张骚气的动图)呀!
