不要犹豫,尽快行动

今天在知乎上看了一篇非常有意思的文章,题目是:别把时间浪费在工具选择上。文章大概讲的是作者在跑步之前犹豫穿什么鞋子的问题,最后发现其实随便穿一个就行,重点在于要跑起来。这让我想起大学时候在新生群说的一些难听话,其实表达的也是这个意思。

一直到现在,还时不时的看到低年级在群里问类似这样的问题:“哎呀,谭浩强的书是不是很烂啊,我该看哪本好?”,“c primer和c primer plus哪本适合入门?”,“我该买中文版还是英文版”,“据说中文数据结构很水,我是不是要选英文数据结构”。

对于这些问题,当年年少轻狂,便喜欢口出狂言直接怼。现在仔细想想,其实我真正想表达的意思是:在你入门阶段,相对于纠结书籍是否专业这种进阶选手考虑的问题,更重要的是及早的行动起来。

中国有句俗话叫“光说不练假把式,光练不说傻把式,又练又说真把式。”。那些质疑书籍质量的人,至少在我的观察中,很少有人去真正踏实下来学习并练习编程,更多的人是书买回来翻两页便垫桌脚了。

除了及时行动,我还想说的一个问题是,要脚踏实地。之前在iflab新生大会上说过这个观点,在这再详细解释下。不知道别人有没有思考过这个问题,反正我曾经思考了很久:在小学的时候,小数都是有穷的;初中,有理数就是所有的数;高中,实数才是所有的数…那么,小学数学老师是不是骗子呢?后来我是这么想的:数学老师并没有骗人,而是人学习知识,本来就是循序渐进的。很多时候,做事要看眼前,因为只有看清并迈出第一步,你才能设身处地的思考第二步的问题。如果你第一步都还没迈出去,便整天苦恼第二步怎么迈,你便会发现这一步总是因步伐过大而无法迈出。这里我想引用幸福课里的一个小故事:

同样的,在编程学习中,作为一个新手,考虑书籍专业性太过超前,可能你确实选了一个很专业的书,却在阅读的时候发现自己根本看不懂,每一个中文字都摆在面前,却一句话都无法了解,那你说你是选了一本好书还是一本烂书。有些书确实很不专业,错误一堆,但只要你能看懂,能给你带来进步,我觉得就可以了。选书其实有点像选老师,不是说大师就适合所有人,大师不可能天天教你如何扫地,就像中科院院士不会教小学生数数一样。

而什么时候你已经进阶,需要考虑书籍专业性这类的问题了呢。其实不用问,书会告诉你。

当你从这本书无法学到新知识,天天从里面挑错的时候,就是你该寻找下一本书的时候了。

最后附上《别把时间浪费在工具选择上》的全文:

2018ifLab新生大会演讲

刚开学就收到现任主席团的邀请,说让我在新生大会上讲几句话。我说都谁参加呢,他们说大一大二大三的都有。我想那我就本着务虚不务实的宗旨,说说我这两年的感悟,刚好大三决定考研到现在刚读了半年研究生自己有不少变化。

我最想分享的内容有三点:

第一、谨慎选择,勇担后果。

在大一的时候,我参加无人机协会的宣讲,当时他们的创始人唐荣宽(机械学院毕业,北信科大无人机协会前主席,启智天空CEO)问了一个问题。他问在座的有谁的家长是处级以上干部或者在北京已经有两套房了,现场举手的人很少。然后,他说这些同学是不用担心温饱问题的,因为他们的家庭可以保证他们以后在北京,不管有没有收入,收入多还是少,都能吃得上饭。而剩下的人,如果想要在北京站稳脚跟,就必须要解决温饱问题。后来我仔细思考了这个问题,也看到很多人大一大二无所事事,大三苦逼复习考研,到大四几个月内从一行代码都不会写变成合格的程序员找到工作。我觉得在大学4年中,每一个人都会面临很多选择,不同的选择会有不同的道路,也会有不同的后果。倒不是说有些选择是错的,其实任何选择都没有对错,但是你要了解每一种选择都会带来哪些后果,并坚强勇敢的去承担这种后果。就比如你选择了大一大二玩游戏,那么你就要承担苦逼复习考研或者找工作找不到的后果,而不要在后果面前怨天尤人。

第二、仰望星空,脚踏实地。

这个句子是我自己总结的,分两段理解。第一部分是仰望星空,意思是当你要走自己的人生道路的时候,你得抬起头来找方向,要眼光长远,视角开阔,仰望星空。为什么呢?因为你低着头是不可能找对方向的,过多的考虑一些眼前的得失,是无法获得长远的发展的,会让自己陷入一些误区。有很多坎坷,短期看仿佛重似泰山,但放到整个人生的角度,却不算什么事。第二部分是脚踏实地,这部分的意思是,找到方向后,走路的时候,要脚踏实地,低头看路。永远不要只盯着目标不放,你那样是永远无法前进的。不低头,就不知道脚下怎么迈步,连第一步都迈不出,你怎么可能走到终点?只有低下头,分析自己当前的状态,并找到自己在当前状态下,有利于自己达成目标的,所能做的最微小的一步,并坚定的走出去。不断的重复这个过程,才能在一段时间后,猛然抬起头,发现自己已经距离目标近了很多。

第三、不忘初心,砥砺前行。

做好了前两点,就剩下不断坚持了。在通往自己目标的路上,会有很多磨难。这里所谓的磨难,不是特制难题,或是很难的bug,而是泛指的一切阻碍,可能是难题,也可能是家庭,也可能是自身能力,等等。其实具体什么困难并没有什么区别,因为任何人都有任何人的困难,没有困难a会有困难b,所有人都会有自己道路上的困难。在遇到这些阻碍的时候,一定要不忘初心,牢记自己是为什么选择这条道路的,并且克服困难,砥砺前行。只要不断坚持,终有一天你会达到理想的彼岸。

以上这些其实说的挺虚的,但是也包含了很多的人生哲理,这些可以说是我整个大学的经历外加近两年的酝酿所产生的肤浅的感悟,不同的人有不同的理解,其实你怎么理解并不重要,正如和尚说的:愿世人心境祥和,愿大家也都有所收获。

最后推荐大家一本书:陈海贤的《幸福课:不完美人生的解答书》

零基础新生如何学技术——我的技术入门分享

今天曾老师发动大家在ifLab的问答社区回答关于新生学习技术的路线和技术栈,正好这几天还算不忙,就尽快写一下吧,免得之后又没时间。

首先,我自认为我目前技术算是比较一般的,只是会耍点小聪明,显得懂而已。不想以成功者的身份引导什么,只是分享下自己的学习经验,供大家参考。

编程接触的比较早,第一次是在初中,08年那会吧,选修vb课,什么都不懂,最后也啥都没学会,稀里糊涂就过去了,虽然没学到东西,不过编程这个事算是在内心埋下了种子,真正学习是在高中,高一选修了vb,又是vb,基本限于看懂老师的代码,改改的程度,自己写,完全写不出来。高二自己买了谭浩强的C语言红皮书,看了几章吧,不多,主要看了基本语句。自己试着写了命令行带菜单选择的简单计算器,就是输入特定字符选择加减乘除,输入第一个数,输入第二个数,输出结果,重新选择,这种。高三就没心思了。

入学前的暑假本来想好好学C,然而只是炒冷饭罢了,重新看了指针之前的内容,熟悉了基本语句和三大结构,重点难点的指针一点没搞定,更别提后面的了。当时,我只会用中文版VC6,不知道什么是VS,不知道编译器和集成开发环境的区别,代码格式全是谭浩强风格,不知道什么是命名法,喜欢用拼音命名函数,甚至不会盲打,敲字母是一个个看。

说前面这么多铺垫的接触经历,主要是想告诉各位新生,我并不比很多同届的人早学了很多,入学时大家其实都在同一起跑线上,只要你有兴趣,能投入精力,就一定能在技术路上走的比别人快,比别人远。

对于没有任何编程基础的新手,或者像当时的我一样接触不深,我觉得应该随便找一本C语言基础开始看!很多新生在问:我看什么书好啊?XXX的书是不是不好?XX天入门是不是写的很烂?我只能说,你的这个程度,遇不上什么烂书,与其纠结书好与不好,不如赶紧去看,看了才有提升,才看得懂,懂了才知道好不好。如果不喜欢看书,也可以去看视频,极客学院,网易云课堂,有很多C课程,同样是找一个自己喜欢的看。不管是书还是视频,自己喜欢,能看下去,就行了,不用考虑别的。很多人说黑皮的机械工业出版社出的C好,是国外大神写的……我想说的是,人与人不同,作为一个新手,你能适应国外的教学顺序吗,如果能,那当然很好,如果不能呢,看半截不看了,或者是看的很慢,还不如找个所谓的烂书看完呢!

然后说一下上手的语言吧,计算机专业的就是C了,没跑,早晚都要吃透,早学早熟悉。非计算机专业的我觉得其实可以直接上Python,更现代化,更友好,更容易出效果(有用的程序,能让自己有成就感,激励自己继续学)。

在学的过程中,切记一点就是,要去写!写!写!请问你整天看数学公式能考高分吗?整天看数学答案能会做题吗?所以,反复看书没用,看代码没用,要去写!写!写!不会写抄着写,一遍不会抄两遍,用电脑在和书上一样的环境里写,按照书上步骤模仿者操作。抄熟了再改写,仿写,直到能自己写!大学里有太多的人不写代码,或者打折扣的写,比如写在纸上,比如永远只抄写,你打折扣的写,就不要怪自己打折扣的编程能力!

说一下C语言的学习进度吧。指针之前要快看,没啥东西。尤其是helloworld之前的东西,读一遍了解即可,都是些思想之类的虚货,看懂了也理解不了,更何况还不一定能看懂,上道以后自然就懂了。主要看helloworld之后,有实际编程和操作的,但是不要拖沓。什么?你说看不懂,记不住?写啊,写会为止。到指针,你遇到了第一个硬骨头,指针需要尽量理解,光写也能会,就是会累一些,可以先多看几遍,理解了再写会快一些,如果理解不了,只有写!写!写!了。如果指针理解不了,后面都很难搞定,而一旦理解了指针,大一一整年都可以非常轻松搞定,所以在指针多花一点时间是值得的。指针搞定以后,链表也会很快搞定,C就算学的差不多了,建议之后写一个使用链表且储存文件的学生成绩管理系统或者大数加减乘计算器,或者类似的东西,虽然很无聊,没新意,但是对于提升熟练度非常有帮助。

C搞定以后,就可以找一些自己喜欢的语言了。然后会遇到第二个坎:面向对象,这个面向对象我理解了一年以上,在那一年中,随着写的代码量的增加,对面向对象有渐进式的理解,所以说还是要写。

 

最后说一些我觉得可以帮助新手入门的工具吧,还是本着顺手来,如果你就用着中文VC6舒服,没问题。

1、sublime text  用2或者3都可以,一个简单的文本编辑器,编辑功能强大,具体就不介绍了,官网有视频介绍。很轻量化,有基础语法提示。不过在Windows里用,写的代码运行时,中文会是乱码。。。可以下载一个win优化版

2、开发环境win就直接用VS吧,虽然复杂但是功能强大,值得花时间熟悉。而且中文加持,大大加分。Mac就用Xcode,简单便捷,英文不懂?看图啊,图标多形象啊!

 

先写这些,以后想到了再更。

一些新生群里的难听话

自从进了大学,就在iflab学习,感觉学长的引导实在是非常的重要,便也觉得自己应该引导其他人,也算是回报别人对我的帮助了。于是大二搞新生群,大三搞技术论坛,已至大四,心却凉了。学院也一直在致力于重铸当年信息工程学院的辉煌,但是现实却相去甚远,听老师讲一些宏大的计划,时而觉得心血澎湃,时而又觉得毫无意义。昨天又是心血来潮,在新生群里说了一些难听的话
46FE57B4A84A10B71EBB6907C6FAC358AE3A2F7A7AC2AE44359D326B408FC66A

然后就惹了不少人,怎么说呢,话糙理不糙吧。

说真的,我真是看不过去某些人,技术学了半拉,还装作很爱学学的很好的样子。人各有志,条条大路通罗马,不是非要学技术,想学技术连c的指针都搞不定的话,大二的数据结构里的链表怎么搞定?总结自己入门的经验,真不是看了什么高大上的教材或者书,看本身才是重要的,不要总挑书,而是看书。

不能说水群的都是不行的,但是历史经验统计的结果就是水群水的程度和技术好坏程度有相关性,水的厉害的技术大都不行,这也很好理解,都花时间水了,那还有时间干别的。我觉得没必要为这个道歉,自己的选择自己承担吧,我也不算是时间利用率高的。要不也不至于在群里心血来潮…

当然了,你要是不搞技术,水群也是锻炼交际能力,又没说水群的人都成不了事,成功的团队里都有一个能忽悠的。