一、背景
前一段时间有朋友说“学习的最好方式就是创造”,即想学某个源码,就自己写一套。
果真如此吗?
今天读《编程的原则》有讲到,可以为了学习的目的而创造。
下面是其中一个节选:
二、学习的原则
2.1 循序渐进
万事万物无非是两个维度,一个是时间维度,一个是空间维度。
从时空维度来讲,学习通常需要循序渐进、先易后难、先整体后局部(先局部后整体)。
日本剑道有一个非常有名的原则 “守、破、离”
守」,一切盡量遵守教條,練習基本功夫直到熟練。這個階段專心學習一種實務,比學習各種理論重要。
「破」,開始打破一些規範限制,可以因地制宜靈活運用。這個階段開始思考理論,也會參考看看其他門派是怎麼做的。
「離」,超越所有規範的限制,自創一格,達到無招勝有招的境界。
这和所谓的“循序渐进”的思想差不多。
这里的学而思其实和 PDCA 理论很相似
你想你的能力就在这里了,你想提高注定就要和现在有些不一样,肯定要改缺点提高优点,那你怎么找到缺点不对的地方,就需要反思(思考)
这个和机器学习算法调优差不多,如果没有实验结果的检查,怎么知道好坏
很多牛逼的人要不然善于思考 要不然喜欢读书 甚至二者皆有
要不然就说程序员就靠着 Google 百度 StackOverflow
就像编程的时候很多你需要的库,人家也遇到过,都已经有开源的了
就像很多人写(研究生)论文,你会发现哪个领域几乎都有牛逼的人,好的算法,虽然写一个新的很厉害,但是大多数也就改改参数,几个算法综合一下,能有一点点改进就可以发不错的论文了
实际学习和工作中技术不好的主要原因有两个方面:学而不思、思而不学。
还是孔子那句话:学而不思则罔,思而不学则殆 真的是经典
很多人就是TL说怎么设计就怎么设计 学而不思 面试的时候问你为啥这么设计就凉了
还有些人是思而不学,想的挺多的 但是基础不扎实 或者懒 导致无法落地 或者想的脱离实际
2.2 以终为始
有些人会说你“从设计者的角度学代码” 是帮助自己学习和理解的一个好方法 。
但是这不是目的!
学习的目的还是学以致用 能够在工作中灵活运用源码的技巧 思想
三、总结
总之学技术要遵循规律,循序渐进、先易后难,然后学而思。