说明
本文内容取自作者就读研究生期间在实验室工作时,从导师处接受的谆谆教诲。当年深感导师严苛,压力甚大。如今回想,有师敬业如此,实乃大幸。
本文为求原汁原味,不进行规整或扩展,仅按时间顺序一一记录。点滴琐碎,还请见谅。
正文
对研一研二同学的要求:
- 要求突破自己,不断自我更新。
- 多问问题,勤于讨论!实事求是。自己是什么认识就怎么说。
- 从不同角度看一个小问题,而不是立足于过于宽泛的层面。
- 先做出来,然后再适当考虑优化,构建通用平台。规划好“一切”后再动手实现的做法,其实是一种懒惰的表现!研究生重在提高能力,这种能力就是在动手做的过程中获得的。只有做出东西,在做的过程中会不断涌现新的想法,不断取得进步(先实现基本的功能,再进行扩展)。
- 汇报要及时!汇报不是表现你的“成果”,现在就出“成果”说明你没有勇于犯错!研究生就是培养能力,不要追求什么“成果”。
- 要勇于犯错,在错误中学习,提高。出问题时,把你认为“正确”的地方好好检查一遍。
- 要动手。光动脑只会把理论做得更枯燥,只有积极动手才能找到自己的路。必须自己动手去实践,不要等别人告诉你该干什么,怎么做。要做事,而不是等、蒙。投机、懒惰、等待“指令”只会害了自己。
- 学过的东西基本没用,要用的东西基本没学过。不要满足于短期的“出色”表现,这在长远看来很不利于个人成长。
- 不要记结论,要记原理;不要记公式,要记公式的含义。
- 向研二研三的师兄师姐请教,他们的成功和挫折都是宝贵的“遗产”(学习对问题的理解和思路)
- 尽量不要半理论半工程,否则往往两面都做不好。
(2008.3.3)
(一)
刚开始接触硬件时,一次就焊好板子是不可能的。焊10次后有所收获(比如焊接的技巧,怎样放置板子焊漆干得最快,等等),才算是有潜力值得培养的学生。10次还没焊成功又无所获,这学生就不适合搞科研。
首先弄清楚你的研究方向的整体面目(而不是一上来就问要做什么东西),广搜资料并加以整理消化。网上的论文不可盲从,但别人的观点有助于你的理解。
找到别人的程序,运行正确后试着“精简”。先一小段一小段地减少代码并调试,若结果出错,则添回代码,并着重考虑该关键性代码的作用及实现功能。如此反复,直至得到“最小内核”(别人的程序往往因考虑接入平台而显得冗长)。再以最小内核为基础,扩展生成自己的代码。这样有助于深化理解对象。
不必将资料或文档从头至尾通读一遍,坚决抛弃那种因为用到面向对象就捧起一本C++教程从头看的做法。国外学生一般是用到哪块知识再去学习哪块。先做下去再说,在研究的过程中不断发现和解决问题。
如掌握以上几点,则别人需要两三个月才能做完的事情,你一个月甚至两三个星期就可以做完。
(二)
不要互相“攀比”,导师看重的是你是否在“前进”。原先能背20斤现在却背不起10斤,就是“退步”;原先能背5斤现在能背起10斤,这就是“前进”。
导师让做什么就做什么,让怎么做就怎么做。不要认为自己有多聪明,先做好规定的任务再说,等完成任务后再尝试自己的“构想”。想得太多就会没有头绪,极易走入泥潭。
讨论并不是让你意识到比别人差,而是要设法从“高手”的思路或方法中找到问题(漏洞)。要勇于和高手讨论,提出问题很重要,而同别人“争论”又可锻炼自己的即时思考能力。
用力+方向。不能偷懒,但仅仅用力也不可取,还应时时调整方向,确保走在正确的路上。如果方向出现了哪怕很小的偏差,最终就会离目标越来越远。并且能力越强,走得越快,错得越多。
(三)
很多失误其实源于对研究对象理解错误。思路错了,后续工作就白做了。
提出问题很重要。连问题都提不出,还谈什么解决问题。
有疑问的地方你要说清楚,你光说“不太清楚”怎么行?最起码你要说清楚什么问题,你连问题是什么都说不清楚,别人怎么能清楚?
(四)
报告不是罗列理论的书面作业,而是向导师汇报你看/做了些什么,对哪部分有深刻体会或很感兴趣,或者提出自己的见解——总之哪些工作是你自己做的!
报告应该重点写自己的理解和体会,还有对不清楚的地方提出问题——不是那种“问答题”的形式,而是首先谈你的想法和尝试,这样导师才知道问题出在哪里!
报告可以几句话,也可以一两页,但一定要有自己的东西。如果报告中仅仅描述了自己看/做了什么,那是敷衍了事,试图蒙混过关。
不懂就问,自以为理解的心态很可怕。有不明白的地方就问导师,在互相探讨中明晰概念。自己不懂还不问,只顾闷头想,这样能进步吗?
(2008.3.7)
“对比”的学习方法:先不看别人的方案,根据需求自己设计,然后与别人的设计对比,明白自己方案的优缺点。
别人的程序哪怕通过了,也不能说明你通过了。必须重新编写代码。阅读别人的东西时一定要提出问题,否则相当于没看。
(2008.3.17)
先有电路设计思想,再学VHDL。反之很容易走弯路。
看你做出了什么,而不是你知道什么。做不出东西,一切都是假的!
把所有东西都看完整,那你还做什么?边看边做,简单地实现功能,在实践中学习。把所有东西都看懂还是做不出来,只有在“做”的过程中才能弄懂。要的是实践!
别找复杂的做,从基本的简单的做起。边做边想。再时时回头琢磨琢磨,总之,千万别想着把东西都看懂再开始做。
把协议用笔写在纸上清楚地描述出来,讲给导师听。
把能分析的分析透彻,不能分析的不要瞎分析。不能因为这块分析不了做不出来,就认为所有部分都分析不出来,做不了。先做自己能做的!
(2008.3.18)
做不出来很正常,做出来就是异常。你要放低姿态,就当自己很笨,从头虚心学习。
导师要看你做了什么,不要给导师说看了多少多少——导师不可能打开你的脑子看看你是否掌握了。
能提出问题当然最好了,也值得鼓励,只是不要一个人瞎琢磨,你的水平还很不够哪。如果你都能看懂,那还不如直接去读博士。把能搜集到的资料都搜集起来,看看他们是怎么想怎么做的。然后将你的疑问和大家讨论!
用硬件设计的思想编程。比如CRC-16,硬件逻辑电路实现应该不复杂,而从纯编程的角度仿真实现,可能会走弯路。其实现在就可以在编程时兼顾硬件设计思想。
(2008.3.24)
要想走得更快,就得常常总结以往的经验教训,不在同一个地方再跌倒。可以走快,但每一步都不能省。
转换思路,换几个角度思考。把自己融入所做工作中,而不是作为一个旁观者想当然。
通过提高能力来解决问题,而不是看别人的东西。求人不如求己。
勿轻下结论,盲目自信。千万不要过于相信自己的结论和认识,往往错误都出在这里。
(2008.4.14)
要有偷懒的想法,但不要有偷懒的行为。
不清楚的地方反复思考不得解,则要么讨论要么放下。不需要弄清楚的地方不要去深究,以免误了整体。
用最熟悉的方法迅速做出东西,再通过分析学到知识。
不懂马上就问!一定要多问!哪怕别人不懂,也可能从最根本、最科学的角度提出问题,而这问题也许正是你所忽略的。
做工程不要轻易下结论。遇到问题不要想着去解释,要去分析问题所在。你的解释往往成了“借口”,掩盖了实际问题。
理论部分包括Matlab仿真,尽量有自己的东西,比如别人的设计是先A后B,你先B后A,结果效果相当或更好。工程部分主要是FPGA。先保证工程,因为板子调试很困难,而程序仿真几乎人人可做。
尽量不要花费精力去优化,没时间也没有相应的经验。
效果+速度!
(2008.5.11)
先把别人的程序过一遍,不要莽闯硬干,这样效率很低。先做出来再说!
尽量用VHDL,而不是电路图,因为后面要进行电路集成。
状态机状态尽量不要用枚举型。用one-hot编码更省资源。
看资料时特别注意图表!
如果信号起始就有延迟,可以等一小段时间让它稳定后再读写。
不要单步优化来优化去,能用就行,先把工作完成再说!
用VHDL做的可以在Matlab中仿真一下,分析比较一下。
用功努力学习本身是个优点,但若用错了地方,就成缺点了。不要只按自己的想法闷头去做,要多讨论,尤其是跟导师,经过导师认可后再做可以少走很多弯路。
大家总希望通过自己思索“学”到东西,但这样恰恰阻碍了学习。你们缺乏经验,为什么不跟别人讨论,借鉴别人的成果?这样才能事半功倍!
自己“摸索”其实大多是啃书本,这还不如与别人讨论。与人讨论不仅可能解决疑难,而且可能带出自己没想到的新问题——这就是进步!
明确目标。直指目标,无关的不要看!
(2008.5.27)
边学边问,不要认真过头。
首先弄清端口,再看电气特性,不要费大力自上而下做工程。看芯片!
测试报告(测试性能):
1. 目的;
2.
思路;
3. 步骤;
4. 每步结果;
必须可执行!不要使用别人的论文结果,这与复制粘贴没什么区别。应该自己编写可运行的程序,设计可执行的电路...
不要用搞理论的思路做工程。理论要求严谨,工程则要求实现。
如果看书看了两三个小时还没有眉目,就赶紧找导师讨论!
不讨论不请教不互动怎么学习?光知道埋头工作那还读什么研究生?
你不对自己负责,导师怎么对你负责?
有的同学觉得导师的管理方式不适合自己,但“适合”就意味着你没有改变,没有改变就意味着学习中没有进步!
讨论不在于解决问题,而是发现新的问题,产生新的思路。
与其给别人“灌输”你的思路,不如征求他们的意见,看看他们是怎样处理类似的问题。
如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。 如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【+加关注】。 如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【clover_toeic】。 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
研究生期间接受的指导(一)