关于学习新技能

入门就好,最开始不要系统的学习

学了三年物理,都是在系统的学习,学习了再去解决物理问题,这是我最开始一年学物理摸不着头脑的地方,看着同学能够很快的得到计算结果,我自己却连怎么算都不知道,即使看了别人这么算,还是不能理解,其实很多时候都是一些近似和小量的忽略不理解,总觉得这样子怪怪的。现在知道为什么会这样了,这违背了学习的过程。

学习的正常过程应该是:遇到问题 -> 尝试去解决 -> 现有知识不够 -> 学习新的知识来解决问题 -> 这个问题很有意思,值得深入学习 -> 系统的学习这个方向的知识

世上的知识千千万,并不是每一个都值得花大量的时间去深入系统的学习,即使要深入系统的学习,也应该从源头开始,而不是一上手就得到一个系统知识。

如果一上手就学习系统知识,那么多半就废了,不是项目或者课题黄了,就是自己的兴趣黄了!

所以最好的办法就是硬着头皮上,先看最简单最基础的部分,然后直接进入应用,先把东西跑起来,等系统运行起来了再来尝试修改某个参数,看一看会有什么效果。这应该是人类最基本的本能,再不懂背后原理的时候做一些尝试,然后看系统有什么反应,简单尝试之后,虽然说不出什么道理,但是让系统正常运作应该是没问题的,就像很多小孩子对家里电器操作掌握很快一样,虽然不懂电视怎么工作的,也没有看说明书,但是不妨碍流畅的使用电视的各种功能,一定要好好利用这种植根于本能的学习能力,会极大的提高学习的动力。

如果要反复用某个知识,一定要系统学习

绝大部分的知识用一遍就没有机会用第二遍了,但是也总有要用第二遍的知识,比如说现在吃饭的本事 Verilog HDL。很长一段时间都没有再去深入学习过这门语言,虽然直到自己还有很多不会的,但是没想到不会的有这么多。举个简单的例子: generate for 这个语法,如果掌握了的话,会减少很多的代码工作量,再结合 generate if 语法,代码复用的功能也能够实现。

这还只是停留再“术”的层面,正真有意思的是在“道”的层面,同样的功能,用不同的方式实现,编译速度和资源量占用会相差很大,这一点上不得不佩服业内老大哥 Xilinx 公司,出了很多写代码的 White paper,非常值得看。

最小系统,快速迭代

这涉及到去年做的一个大印刷电路板,面积差不多有 $1000cm^2$,画起来也很慢,画的方法也不科学,导致前前后后一共花了接近四个月的时间在画板上面,加上制板、焊接和简单测试,又是两个月过去了,然后写硬件代码和软件代码,花了整整一个夏天,等电路板刻度完,发现糟了,设计上有没有考虑到的地方,有一些通道干扰很大,硬着头皮继续往下测,然后再上探测器带着问题也要测,其实这样很不好,既浪费时间又拖延进度。

模仿而不是自己造轮子

最近在思考怎么做自定义协议的数据传输,最开始想的很简单,有数据了就发送,再往下实现的时候就会发现不是这么简单的,需要考虑数据的缓冲、数据封包格式、封包长度、数据包结束等等一系列的问题。 其实这些问题早就有人研究过了,简单来说 USB 和 Ethernet 传输都是采用类似的协议,只要理解了其中一个协议,照着做就好了,如果非得要自己造轮子,又要把别人走过的路再走一遍得不偿失。 当然,不是说直接 Copy 就好了,之所以要做自定义协议是因为有项目需求,而之前的传输方式不能满足这个需求,所以才退而求其次自己写代码实现,最好的方式还是“拿来主义”,拿来能用是最好的,不能用就照着改造一个,如果连改造都没得改造,再自己造一个。 这里涉及到另外一个问题,版权的问题,Copy 别人的就老老实实承认 Copy 的,模仿的也要承认是模仿的,不要把别人的东西说成自己的就好。

代码不规范,后人两行泪

最近和同门说的最多的话题就是自己之前的代码写的很烂,以至于现在都想把它们重写一遍(当然并不推荐重写,除非有新的项目需求)。其实能够意识到之前写得烂也是种进步,最可怕的是写得烂还意识不到,比如说去年写代码的时候我觉得我的 Verilog 写得挺好的,比之前好了不少,现在看来,是好了不少,算是烂的代码里稍微好点的那种。 回到系统学习的那里提到的,如果要反复的用某个知识了,一定要系统学习,系统学习的一个很容易被忽视的地方就是规范,尤其是代码规范,否则等水平进一步提升了,会发现之前欠下的不规范的债还是要还的,关于代码规范晚上有很多,找大牛的文章看看就能入门,再实际写代码的时候一定要用上,多用几次就习惯了。在这里推荐两本书:《这样编码才规范》和《Verilog 编程艺术》,前者是今天吴川斌推的,看了几页觉得很有道理,后者是最近一直在看的一本 Verilog 的书,讲的很好,尤其是细节方面对新手和需要进阶学习的朋友很友好。

暂时先这么多,后面有想法再更新,以今天看到的一句很扎心的话来结尾: 技术类书籍是拿来获取知识的,不是拿来收藏的!!!别以为得到了 PDF 就得到了知识!!记住,要记得看!!要经常翻看!!!

results matching ""

    No results matching ""