00、写在前面
最近有读者反映学习编程困难,想放弃,询问是不是真的有不适合编程的人?我结合最近自己的学习经历和思考以及最近在数据结构与算法的折磨下得出的一些心得。
唐代大臣魏徵的【谏太宗十思疏】中写道,"善始者实繁,克终者盖寡"。大概的意思是:如果有好多人同时做一件事情,善于开始去做的人是非常多的,但是能够把这件事做好的人就寥寥无几了。
这句千古名言可以说是非常经典了,用来形容学习编程的过程同样适合。在成为专家大佬甚至科学家之前,困难会一直伴随着你,有多少人放弃可想而知,所以才会有了另一句【行百里者半九十】。
在这篇文章里,给所有的编程者提供了 10 个真实有用的建议。
01、双屏分屏
如果经济条件负担得起的话,我真的建议搞一个双屏幕。
但是如果实在负担不起的话,分屏也是可以的,当然屏幕不能太小,,,
在大多数情况下,学习编程时最好把有两个并排的面板可以使用——一个给你的 Jupyter notebook
或者 vscode
;而另一个则是 Google Chrome
浏览器。IDE用来编程编译运行查看代码结果,浏览器用来查看文档、CSDN、知乎或者 Stack Overflow
和一些教程博客等等。等你渐渐熟悉了这一切之后,越来越熟练时,你就会无法逃离这种专注于工作的感觉了,而且非常之方便(爽)。
PS:如果想用快捷键来切换分屏和全屏,可以看下面的两个动图:
- Windows:
- Mac:
02、手机静音
这么多年摸爬滚打,经过九年义务教育和考研的洗礼,我觉得成功一个决定性的因素就是【专注】。
让你的手机静音,尤其是你的微信。如果可以的话,把手机拿开,放到另一个屋子去;如果不可以的话,就把手机设置成静音而不是震动;如果在嘈杂的环境,就播放安静的纯音乐(钢琴曲之类的)或者使用降噪耳机;如果你不能容忍太过干净的环境的话,就可以放一些白噪声或者雨林等等。
你越能专注集中注意力,你就越能学得快,越能学的好。
03、只学一个
虽然越来越多的信息出现在互联网上,越来越多的付费课程,越来越多的博客,越来越多的专业,其中最为明显的就是【人工智能】。
你需要【英语】,【python】,【框架】,【理论】,【第三方库】,【显卡】,还得搞【竞赛】,【项目】,【论文】。
不要试图同时开多个科目,比如学习两个或者三个,这样时间就不只是变成1/2或者1/3,而是变成1/5甚至1/10,同时效率也会受到影响,因为人的大脑会存留记忆。同理, 不要分心于闪闪发光的诱人的但和你正在学习的东西不相关的东西,如果真的很感兴趣,就找个地方,保存一下 url,比如Chrome 的书签,
或者是插件 One Tab 都很好用。
04、学会沟通
在你学习编程的过程中,会试图封闭自己,什么都自己完成,你猜怎么着?
效率不高。
要学会使用社区和伙伴,比如,如果有一个朋友和你一起合作,你会学习得更快(同辈压力和更多沟通)。
当和他人合作时,个人程序的缺点就会暴露出来,所以你学会编写更有效的代码,因为有人在变相地监视你。可能最开始你会极度不适应,但是作为一个程序员,总有人在审查校验你的代码,所以习惯这些。
05、精力管理
其实如果你有过一阵子的经历,就应该知道程序员绝对是一个体力活,所以睡觉,保持体力是一件多么重要的事就不言而喻了。
大多数人在下午时间的效率都低,而上午时间大脑则处于最好的状态,之前看一个Facebook工程师说他们培训的时候也是这么教的,就是学会给今日的 to do list 做一个优先级序列,在上午先去做优先级高的任务,可见精力管理是多么重要。
另一个小故事,Dinesh教授有一个,保持了几十年的习惯,就是(平均)每天只睡4个多小时,可以说是智力超群、体力超群、习惯超群。。。恐怖如斯,体力的竞争上老外明显要更强,中国人重视程度还是差一些,反正我自己是深有体会,加强中,每天跳跳绳也是好的。
06、示例代码
现在资源泛滥的时代,代码一抓一大把,GitHub或者博客,再或者书籍源代码,琳琅满目的。
现在摆在你面前的是一些代码,你能看得懂,是的,是能看得懂,但是你能写出来嘛?答案自然是。。。不能的,【光看不练假把式】,古人诚不欺我也~
亲手去把那些示例代码敲一遍吧,须知【好记性不如烂笔头】。
07、温故知新
相信大家第一想到应该是大名鼎鼎的艾宾浩斯记忆曲线。
其实新背的单词或者刚学的知识概念,从你学完的那一刻起就开始遗忘了,这就是所谓的【打开书马冬梅,合上书孙红雷】。
研究表明,如果不抓紧复习,最后就只能记得剩下的21%,所以要每隔一段时间,就重复一次,这是比死记硬背有效得多的。
08、用快捷键
常用快捷键的人效率确实要比别人高,比如PPT。
这里整理了一份快捷键,当然还有其他的快捷键,比如:
pycharm:
jupyter notebook:
网上一搜索一大堆,关键是学会熟练使用。
09、语言基础
在使用官方或者个人编写的程序库之前,要充分理解一门编程语言,比如python或者C 。
当你接触底层书写的时候,你会发现真的很无聊同时又很难,而直接调用属性和方法的类似乎又高级又容易。
但是如果你不能很好地理解了编程语言,那么你就会陷入抽象泄露的情况之中,你无法搞清楚库在干什么,只是单纯地会调用,也就是江湖人称的调包侠。
10、代码错误
在绝大多数时候,作为一个程序员,你都是在寻找项目中的 Bug,否则你无法继续前进。
过程如下,首先读读错误信息,看看能不能看得懂:
- 比如是不是代码打错了
- 是不是旧版本资源
如果都不是,那么可以直接复制错误信息,去使用百度或者谷歌,再或者博客论坛之类的去查询你的错误,对网络资源进行筛选,以分清哪些是有效的。
再不行,可以 debug 查看输出结果,确定错误为止,一遍解决问题。
当然一些低级错误除外,主要是不熟悉导致的,比如C 的分号,Python的缩进。