研究生期间接受的指导(二)

 

说明

     本文内容取自作者就读研究生期间在实验室工作时,从导师和师兄师姐处接受的谆谆教诲。点滴琐碎,还请见谅。

 

正文

1. 导师的教诲

     模块化编程,由基本功能扩展,由小函数“垒”成大程序。
     一个模块一个模块调试,用“排除法”找到问题的根源。
     “特殊值试探”,如赋给某一确定输入观察输出是否合理。
     开始不要急于用程序控制,可先用电路控制电路,易于调试和理解。如片内生成时钟完全可以用仿真时钟源代替。又如LCD管脚接上开关和上拉电阻,就可代替外部输入电平。
     70%是电路的问题,30%是程序的问题。如果程序正确,那么80%是自己的问题。
     想不累就要提高能力,尽快完成任务。练就快速上手的能力(面向工作)。

     遇到现象时应能“并行思考”,由一处改变想到所引发的多个后续模块的改变。
     出现问题时多试几种方法,不要钻牛角尖。
     把自己想象成CPU,这样写出来的指令代码更合理。

     每做一个任务之前都要reset,不要受以前思维定势的影响。

     你不在乎自己的时间/事情,别人也不会在乎你的时间/事情。所以去争取吧,不要坐等时机。

     以用促学,要“边用边学”,而不是“边学边用”。
     “先完成,后完善。”
     实现功能(只要能用就行),然后扩展并标准化。

     先分析思路,产生想法,再从书籍或资料里摘取所需的部分。
     尽量突破自己,把不会的做好才是真能力。
     把没水平的东西做得有水平。拿到任务后先要想如何做好,而不是任务本身有没有水平。把任务“分解”为小模块。
     想要提高效率?不经实践怎知效率高低?
     听报告讲座时懂不懂并不重要,重在观察力(包括图表、符号的细微差别)。
     基础知识举一反三;倾听吸收的能力。

     接到任务/项目后——
     1/3时间:设计(做小实验和整体规划等)、讨论、反馈。最好写成设计文档,跟老师沟通需求,经老师拍板后再着手下一步。此步很重要,否则做到后面很可能被迫推倒重来!
     1/3时间:基本程序的编制和设计。同样遇到问题后要及时与老师沟通,告诉老师已经做了哪些步,现在的问题是什么,然后寻求解决方案。
     1/3时间:调试完成,撰写报告。
     其中,交互、讨论应放在前期,自己的思考放在最后,否则闭门造车,如同老牛掉进枯井里,越陷越深。

     有些事情,应该听不同人的意见,从中找出最适合的,而不是开始就决定问题的难度。可先从简单的出发想办法,实在想不出来再上升,而不是一开始就定性问题的复杂度。

     编程序时,一要想保证算法正确,二要想如何方便检查。
     调程序通常是一个模块一个模块调。所以,模块化非常重要。为了通用一点,在设计算法时尽量考虑其通用型结构。
     好好练。开始不贪理论多高深,先把做事基本功扎实。打好基础功对后面工作有非常大的好处,而基本功只能通过自己实践来获取。 

     学编函数,先看系统自带的函数是怎么编的。不然,你靠什么学会别人的思路?对于开始做的东西,要自己通过实践弄明白。
     (C语言基本功)不是记住语句,而是应该面对一个事情或想法,能够很快知道用什么方法和语句实现。这才是编程能力。你们缺的不是C语言的语句,而是思维。
     自己不会给自己出题,你永远不会学到东西。
     对每个命令或函数都要进行一次实践测试,这是学语言的最基本要求,光从文字上理解会有一些偏差的。
     为什么不用帮助呢。大部分学生不看用帮助,有时你的想法就可能在帮助中存在。你想到的,别人也想到了。用VC的同学好多都不用MSDN,遇到问题就不知怎么办了。能力就体现在这里,有人能找到答案,有人就束手无策。其实不是天资,而是方法与态度。 

     能力是体现在能用现有的知识进行分析挖掘,不是知道越多,能力越强。知道越多,可能记忆性越强,逻辑分析能力越差。只有领会才能提高能力。

     理论研究需要基本技能好。我国之所以科研总上不了台阶,一是研究人员没有好的技能支持,二是不练基本功,图新图热,只是改进一下,再也没有什么东西了。真正的科研成果,是找到一个更为有效的方法,而不是更为复杂的方法。这需要你有非常丰富的技能经验的思维。

     人做技能时,总想找到通用且高效的方法,这会使人对事物的认识更加具体和逻辑化,能够从整体把握。 有了这个技能,就相当于练了九阳神功一样,虽没招,却可利用别人的招打败别人,即只要你看一下别人的方法,立刻就有了更有效的你的方法。只有自通,方可通人。目前自己都通不了,如何通别的?
     不要找题目,而是根据自己的疑问解决问题。你不是想把DISP所显示的内容存在文件中吗?那这是非常好的开始。因为这个问题是你在实践中得到的,别看它小,那是比你找一千个题目都重要,因为这是出自内心的问题,是你思维发展的小站。你却放弃了,就是放弃了自己的前进。如果这种事多了,就是你放弃了你自己。

     只有出自心的东西才是最宝贵的,最感人的,也是最能使人前进的。永远记住:只有你内心的冲动才是你成功的唯一动力。如果你做一件事,不能让内心产生冲动,那只是一件事情,不是做事情。
     你们这个阶段非常重要,直接决定了你的能力。许多学生把眼光盯在技术上,最终他们迷失了自我。

     做事情最怕的是总是找不知道的。只有把知道的进行分析综合,才能解决不知道的。什么事,都不能看解决不了的,而是看你能解决什么。如果你对你能做的都不进行分析,你还可能解决当前你不能做的吗?
     思维来源于生活。思维的变迁,就是用解决别的事情的方法,最后来思考需要解决的问题。

 

2. 导师与师姐的对话

     导师T:如果你把日常开销账目存档到公文包中,把你的这个过程说给我听听。
     师姐L:根据时间,每天分多少个项目,像填表一样写进去,然后保存。
     T:我不是说你存什么账目,而是如何存。请想一想,我给你这个例子的目的,不是如何记账,而是如何存账。你把你今天的开支账目存在公文包中,如何做?
     L:找一块空白页,把我脑子想的写在纸上,从哪一行开始写,开始标记,结束标记。
     T:你如何把你的账目写在账本上。说这个吧,把做的过程说一遍,具体操作。
     L:打一张适合存账目的表格。
     T:现在就是账本上写。写在账本上。
     L:就一个字符一个字符写啊,项目:内容。
     T:请比较一下我们俩人的思维方式:我首先找一张纸,把账目理一理,进行必要的归整,以保证与账本账目内容格式相符;接着,我打开账本,找到相应页;然后,我把纸上归整好的内容一一对应写在账本上;最后,合上账本。结束了。你是不是要这样做?
     L:恩,不过没有打草稿的过程。
     T:你总盯在内容上,而我是盯在步骤上。你没说第二步,第三步和第四步。只是笼统的说。你的思维就是差在这上。我是粗中有细,你是细中无粗。我是把过程关系理得很清,对具体内容一带而过。你对所有的都是一带而过。
     L:我的思维显的混乱。
     T:这个小误差,你觉得就差一点。当用同样的思维去解决问题时,可能差得就是一个档次或多个档次。不要认为这点小误差没什么。不要自己给自己找个理由安慰自己。没有写出上面四步,就是天壤之别。
     L:恩,大毛病。我这样的思维会让我浮躁。
     T:你要能把你想到的东西理出来,哪怕是一个最简单的事。越是这种事,越能练人的认识和分析能力。平时做一些小事情,恰是丰富你的思维。同样的一件小事,不同人对其思考是不同的。小事只做不思考,遇到大事就没什么可思考的。所以,事虽小,理不小。多注重基本生活中的基本技能吧。
     如果把我上面的四部分通了,程序就出来了。它每句对应一个操作(不是一个语句)。
     L:恩,其实平时也有体会,别人说的我似乎都想到过,就是没条理,说不出来,别人以为我不知道。
     T:你知道也罢,不知道也罢。希望你就认为自己不知道。如果认为自己知道,总为自己有点打抱不平,就会让自己走上一种可怕的路,不但不接受别人,最后也不接受自己了。如果你认为自己就是不知道,那就重新认识重新做,不是非常好吗。也没什么别的感想,还不误事。退一步,有时比进一步更有效。为自己找理由,等于是慢性自杀。自己分析自己,是积极进步。年轻时,练好本领和心态,将来可使你乐观对待人生。

 

3. 师兄师姐们的忠告

     平时做东西时,不要投机取巧。比如需要用C的时候借助Matlab“简化”编程,用运行于Windows下的仿真工具代替基于Linux平台的软件——也许省力省时了,但却丧失学习新知识和技能的大好时机,而这些知识技能往往可能成为你在迈入职场的“敲门砖”(同时这种勇于接纳新事物的心态也会让你今后受益匪浅)!
     做东西务必对自己使用的工具应用纯熟。比如,研究生时做过FPGA,面试时人家可能会问你关于FPGA的问题。如果你在这方面表现得很专业,很可能被马上高薪录取(尤其是当公司正在承接此方面项目时)。
     面试的表现全在平时的讨论,所以不要小看平时的交流。不要从网上找到相关的答案应付讨论,重在自如地发表自己的观点。
     “沉默是金”?——大错特错了!为什么XX(邻校)学生专业技能比不上XX(我校)学生,但他们往往都能找到更好的工作,也更容易进入外企?因为他们特别能“说”,总是有各种各样的新鲜ideas,并且能有效地表达出来!平时讨论时积极发言,经常向导师汇报工作和请教问题(不仅能得到及时的指导从而提高工作效率,还能明白导师对你工作的期望)。
     发现问题远比解决问题重要。勤于发现问题并积极寻求解决方案,不仅能深入理解知识,更重要的是极大地提高了能力!比如,编程中出现的问题,不要依赖编译器的报错,应该自己发掘问题所在;即使不得以求助于网络,也务必弄清问题症结所在。又比如报告中的某个问题或想法,不要满足于完成任务,而有意忽视原本可能带来灵感的切入点。
     任何事情包括完成导师分配的任务,务必从底层,从最基本的问题入手,一步步弄清楚,这样会极大地提高后续工作的效率。把任务分成若干小部分小问题,循序渐进,各个击破。千万不要求快,导师不赞成提前完成任务,那样只表明你没有下功夫——因为他给你分配的时间是基于你自身能力的。先把资料读懂,电路啦接口啦务必弄明白,先从最基本的开始,千万别一开始就整个超复杂的(否则以后必然遇到难以跨越的门槛)。
     师兄师姐留下的心得资料仅供参考,千万不要指望走“捷径”——除非你是抱着“混”的态度。诚然,完成任务很重要,但导师更愿意看到你有所进步。从这个意义上来看,在任务过程中学到东西远比得到结果更重要,也更有益。

 

 

如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】。
如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【+加关注】。
如果,您对我的博客所讲述的内容有兴趣,请继续关注我的后续博客,我是【clover_toeic】。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

 

 

posted @ 2014-06-06 17:05  clover_toeic  阅读(1223)  评论(4编辑  收藏  举报