从3月底开始,到现在5月出,基本上算是话费了 1 个月的时间将项目的内容从头到位看过了一遍。
平均下来,自己一个星期大致会花费多少时间呢?大概有6-8个小时吧。
自己有一些编程的入门尝试经验,所以能够进入课程按照章节内容进行学习还是相对来说比较容易的。
之前在 Udacity 学习过一个课程内容,对于 jupyter notebook 的使用还是有经验的,所以应该相对刚刚接触这个软件的人来说,会比较容易上手。对于一些遇到的问题,知道大致的解决方法,会比较快地去定位寻找方法。
但是,第一次接触的同学也不用在意,各种视频网站上面有很丰富的使用入门视频,内容相对来说差别不大,只要找到一个入门教程,那么一步步跟着做下来,然后在自己反复摸索、复习一下,就可以明白使用的逻辑了。
PS:即使有经验,在初次配置 xiaolai 老师的环境的时候,也遇到了之前没有遇到过的问题,也坎坷了很久,还采取了「卸载、重新安装」的方法进行解决,但是也不是顺利解决,也还是多找了一些资料进行分析,找到了原因。
即使这样不顺利,但是也学习到了很多新的内容,所以,遇到问题不怕,这个正是学习成长的重要时间。
大家一定要养成记录笔记、日志或者发帖的习惯。
这是自己学习经历的一个提醒。
有很多内容当时遇到,寻找到方法并且解决了,但是以前的自己没有养成记录的习惯,所以即使曾经成功解决了的问题,过了一段时间再遇到,还是会想不出来自己以前到底怎么具体解决的,回看浏览器的记录,也很难顺利找到答案。
我后来的方法:
在课程 repo 里面的 my-notes
里面开了几个 ipynb 文件,在学习课程内容的过程里,记录学习过程中遇到的不同的内容、问题,如果有新的理解,就同样记录起来,进行迭代升级。
这样的做的好处,就是以后即使忘记了具体内容,但是可以快速索引到自己问题的针对性解决方法。
真的后悔为什么没有早点醒悟出这一点。
即使像我这样已经有一定的学习的基础,但是也没有具体好好使用过 GitHub,所以,在进入学习的开始阶段,被 GitHub 的 pull request 的操作搞得很难受,前后捣鼓了 1 个星期左右,才算是真正学会了 Git 的逻辑关系。
虽然很难,也正如一位曾经的编程高手说的:「GitHub 让所有人觉得自己很愚蠢」,but,真正学会了其中的逻辑和哲学思想,那真的是一件超级强大的工具,除了编程方面,还有很多方面值得我们去使用、探索。
这方面具体的内容见下面连接,是自己之前学习过程中写的这一点的心得体会,希望对你有所帮助:
Github进行fork后如何与原仓库同步:重新fork很省事,但不如反复练习版本合并 #67
部分章节的内容也是全新学习的新知识,有些内容琢磨明白了,但是还是有些内容不清楚——而这些内容就是自己第二遍学习的时候重点注意的内容了,需要反复查询资料进行攻克的内容了。
学习过,但是还不是很明白的内容,大致有下面这些内容:
- lambda 函数的使用。(就是数学里面的那个希腊字母的英文)
- recursion 的逻辑再次梳理。
- 「tdd 测试驱动开发」的再理解
- 「BNF 和 EBNF (扩展)巴科斯-诺尔范式」的理解。完全不知道到底和 RE 有什么区别。
- ……
暂时记录在这里,在接下来的第二遍过一遍的时候,再看看这些问题会不会有一些得到理解、进步。。
xiaolai 这个「入门」教程最大的不同,或者说是特点,就是完全从一个全新的角度,定义了「入门教程」可以有的形态。
再次之前,所有的入门教程,都是一个个小点、知识点讲解,并且使用的语言还是那么刻板,或者说死板,很难让一个新生理解所学新领域的特点和内容,而很多基础内容由于这个原因,无法继续下去,也就「从入门到放弃」。
而 xiaolai 是将读者看作一个有主观能动性的个体,所以不会在细节上讲解,即「不会授人以鱼」;而是,有自己学习过程中遇到的感受、以及解决方法的升级的过程的展示,相当于以一个朋友的角色,将内容娓娓道来,让读者欲罢不能,感觉有一个伙伴和自己一起学习,那种陪同的感觉实在是太美妙了,是见过的入门教程所从来不具有的高度。
正如 xiaolai 自己定位的,是把这个教程当作 Python 官方文档的引入、注释类的地位——相比就是是因为叫这个教程定位为「授人以渔」,所以里面有大量的链接,值得自己后期在按图索骥进行更加深入的学习。
要说最大的收获,那其实我想说的是入门的「GitHub 的学习和使用」,项目里面具体编程内容,反而没有那么大深刻印象。
在探索的过程中,发现问题、有什么想法,就尽可能去提交 PR,让自己头脑中不确定的想法得到一个正向反馈——更加兴奋的是这个反馈直接来自 xiaolai 老师,万分喜悦。
而在这一次次提交 PR 的过程中,对于 GitHub 的逻辑越来越熟悉、操作越来越顺手。
下面是第一遍学习提交的 PR 成果:
前后包括重复、试错的次数,一共 20 个,其中 7 个被 merge 到项目中(还有个别虽然没有 merged,但是也从 xiaolai 的评论里面得到了很好的交流),有 35% 的 merge rate,这个比例让刚刚大致学会 GitHub 和 协同工作的我来说,是一件及其喜悦的事情:
庆幸自己在项目的开始的时候,就知道了他的存在,从而进入到项目的学过程中,能够在「毛项目」有最多的迭代可能性的时候,不断学习,自己精进的同时,能够和项目一起升级,这种感觉实在是美妙。
回想之前得知项目后,还是拖延了 1 周才开始好好了解项目的内容,如果没有动手进入,错过了「项目学习的黄金时间」,那真的不知道自己的世界会变得多么的可悲,「不知道自己可悲其实是最大的可悲」。
后面加入学习的「同学们」也不用气馁,在我们开辟、完善的「新」项目里,少了很多不必要的坑,你们的学习效率会比我们大很多,今后还有很多其他的项目、内容值得我们去摸索。
或者,给个 xiaolai 老师的那个建议:想要获得我们那种完善项目一起升级的美妙感觉,可以用一个全新的方式进行:「教别人」。
「教别人」的过程里,会看到更多本来书上有、但是被自己忽视掉认为理所当然可以解决的坑,在这个过程里,你自己就升级了——在回答 issue
里面的帖子的时候,也看到了形形色色其他人的问题,虽然自己理解了,但是使用文字进行回复、讲解明白,还是会重新获得新的认识,自己也升级了。
祝这里所有学习的人,都学有收获,或大或小,加油~