1

我有一些很正经的建议

 3 years ago
source link: http://www.itwanger.com/life/2021/07/24/jianyi.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我有一些很正经的建议

2021/07/24

今天不聊别的,给大家聊一下我认为学编程当中最重要的三点,尤其是针对新人来说。

  • 解决问题的能力

先说热爱。

有的同学是一开始就热爱,所以选专业的时候就选择了计算机专业;有的同学是误打误撞,比如说我就是,大学其实选的是机械自动化,后来被调剂到了计算机网络专业,属于典型的后知后觉型。

一开始,和大多数新人一样,我认为编程好难学,班里面的好多同学也认为好难学,能转专业的就转,只有不能转的才留了下来。

十几年前的计算机专业远没有现在这么热闹,很多学校都是作为边缘专业来录的。和我同届的高中同学,我认识的当中,没有主动选择计算机专业的。

所以,我对计算机的热爱,纯粹是经过后天刻意练习的。

很多同学可能会不解,热爱也能练习?

当我发现这个专业找到工作,能养活自己,能不再伸手向父母要钱的时候,热爱就一点点的来了。随着年纪的增长,我越来越喜欢这个专业了,不是因为它充满魅力,而是它让我的生活变得越来越好。

对,我是个俗人。

一开始,这很难,因为经过两次高考的打击,我的厌学情绪特别强烈,以至于我大学的时候好几门专业课都挂科了,同学们可能很难想象:二哥,好多人心目中的榜样,大学还会挂科。

jianyi-01.png

真实情况就是这样,所以很多新人给我抱怨说,“二哥,编程好难啊,总是学着忘着,我该怎么办?”我知道原因在哪?你对编程还不够热爱!

当我拿到第一笔实习工资的时候,1200 元,我记得清清楚楚,当时心里乐开了花,知道吗?人生第一次一次性地挣到这么多钱!拿到工资就赶紧给父母打了一通电话,对,现在回想起当时的场景还是有点热泪盈眶的。

虽然电话里没有喊出那句:“爸妈,你们的儿子终于挣钱了,终于不用再伸手找你们要钱了!”但其实,心里面早已经喊了几千遍!

同学们可能很难想象,1200 元的实习工资,能有那么激动!能,对于当时的我来说。

有了热爱,你自然就会去努力!这是水到渠成的一件事情。

但往往很多时候,我们会迷茫,不知道该往哪里去努力,不知道自己的劲往哪里使!

我也有过。当我拿着 1200 元的实习工资高兴的屁颠屁颠的时候,身边的一些同事,尤其是一些苏州的本地人,来实习根本就不是为了挣钱,而是给自己一些历练的机会而已。

印象很深刻。我问过一个同事,“你拿到工资后干嘛呀?”

“加油啊!这点钱还能做什么!”这个回答对我的冲击感特别强烈,有那么一刻,我觉得努力毫无意义。

但后来我想明白了。

原来,人与人之间的差距是与生俱来的!你只有努力地追赶,才有可能把这些差距缩小;而一旦你停止努力,差距就会被越拉越大!

想明白了之后,我就去一个叫编程入门网的网站上抄 Demo,每天一有时间我就去抄。对于那时候的我来说,看书提升得太慢,只有通过实战,我才能快速地提升。

后来,从前辈们那里又了解到,公司接下来会非常依赖一个前端框架,我就硬着头皮去研究源码,并利用空闲时间做了一个局域网性质的聊天工具。

learn by doing,就是我的经验心得,它让我急速地成长,很快就在技术上领先了同一批进公司的新人。

让你的代码量从 100 行到 1000 行,再到 10000 行,再到 10 万行,你就不会再有那种“学的时候能学会,做的时候不会做”的感觉了。

当然了,在敲代码的过程中,你要学会思考,为什么人家要这样实现,为什么不能换一种方法?举个很简单的例子,人家用的 ArrayList,你能不能用 LinkedList?人家用的插入排序,你能不能用冒泡排序?

在那段野蛮成长的过程中,我确实很少看书。但最近两年,我读了很多很多经典的书,比如说《代码整洁之道》、《人月神话》、《编程珠玑》、《重构》等等等等。

读书可以让你知道为什么要这样做,背后的原理是什么。

再加上大量的输出,就让我对编程的思考更加深刻了。

大家想一想,程序员最核心的竞争力是什么?

解决问题的能力,是我认为最核心的竞争力

当一个问题摆在你面前,你不能束手无策呀!你热爱,你努力,最终是要解决问题的,你做不到的话,就只能被扣上“纸上谈兵”的帽子了。

解决问题的过程可以分为三步:

  • 透彻理解问题是什么?
  • 导致问题出现的根本原因是什么?
  • 找到最佳的解决方案。

一开始,由于缺乏编程经验,我们很可能连问题到底是什么都搞不清楚。而解决一个 bug 的首要条件是要能够重现问题,然而编程和其他很多事情都不大一样,有些 bug 是很难重现的。

所以对于新人来说,一开始遇到问题的时候,只能面向搜索引擎,去看看别人有没有遇到类似的问题,有没有解决方案,然后套用一下,看能不能把问题给解决了。

问题解决不了的时候,想问领导,想问大佬,能不能手把手教一教啊!

有一说一,我一开始也是这样的。但渐渐地,我就会去思考,为什么会出现这个问题,这个问题的底层逻辑是什么,除了这种解决方案,还有没有其他更好的呢?要不自己再花点时间去研究一下?

当你有了敢一个人去解决问题的胆量后,其实已经证明你进步了,因为只有支撑你的基础扎实了,你才会有这样的胆量。

最后,总结一下我认为非常重要的东西吧。

热爱、努力,解决问题的能力,除此之外,你还应该重视基本功:

  • 编程能力:大量地练习、会 debug,追求高质量的代码;
  • 基础知识:操作系统、计算机网络、数据结构与算法;
  • 抽象思维:现实是物理的,而程序是虚拟的,这个转化的过程,需要极强的抽象思维能力。

好了,今天就聊到这吧。

多说一句,今年的计算机专业真的特别卷,就连我的二舅家的一个妹妹都要主动报计算机专业,刚刚我二舅给我打电话的时候我都有点小惊呆了!

难道是我因为我这个“榜样”,潜移默化了弟弟妹妹们?

(不过,我打算把她劝退到医护专业,她的成绩不太理想,大家怎么看?)

一枚沉默但有趣的程序员
chenmowanger_430.jpg
微信扫描二维码,关注我的公众号,回复“资源”领取海量学习资料

(转载本站文章请注明作者和出处 沉默王二

Show Disqus Comments

Related Issues not found

Please contact @qinggee to initialize the comment


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK