我的一些学习经验:概述

工作那么多年,或多或少都会有自己的工作习惯、学习习惯。其实工作了,就不能谈“学习”,因为公司雇佣员工是为了产生效益的。但以“研究”作为标题的话,又显得自己太狂。本文就笔者的学习、研究经历——更多是自学,总结一些想法、步骤,虽不是具备代表性,但也是经过实践的。很多年不写理论性的文章了,行文难免略显幼稚。

不求甚解

我接触Linux大概有8年时间了。回想起当初自学的过程,十分痛苦,一度放弃。为了锻炼、证明自己的毅力,又重新拾起来。在自学之初,很多东西是不懂的,但我没使用对一个点穷追猛打。对于一些知识可能已经超出自己的理解,我就放过,但我会记录下来。若干时间后(或半年、或一年),可能就会实然理解、明白过来了。对于新知识,我一直不强调要精研得很深,那么太辛苦太花时间了。学习USB,不必先看USB协议,可以先从能提高直观认知的地方开始:以使用U盘入手,一步步追踪代码,根据代码学习协议。如果结合USB协议分析软件,可能效果更好。

学会抽象

很多时候,我们不能局限于某一个具体的板子、具体的接口、具体的应用场合。要学会抽象,学会举一反三。从较高层面上看,很多嵌入式系统就是“输入<->处理<->输出”这样的结构。输入有不同接口:串口、USB、SPI、IIC、PCI,等。输出可以有LCD显示屏、LED灯、串口打印、网络,等。对于模块来说亦是如此,从前一个模块接收数据,处理,然后发给下一个模块。对于系统或模块,可以先画出大略的结构图,再往里面添加细节,然后各个击破。

常做总结

所谓“好记性不如坏笔头”。我在大学时期就开始写技术博客,后来工作上也有部分问题是参考先前写的文章的。因为技术这东西更新太快,涉及太广,如果没有及时记录、总结,很容易会忘记。有时经常做重复性工作。就我而言,在没有使用云笔记工具之前,我一般使用记事本手写(大学时主要手写),或者用word文档来存档。后来主要使用云笔记进行总结。

开阔视野

我们不应就解决问题而解决问题,那样会将自己局限于某一个应用场合。或许和笔者工作多年未接触公司核心业务有关吧,这些年,都是基于TI芯片做底层、平台开发,偶尔写写上位机调整。在开发时,我从未将涉及的东西限制在TI芯片上,也未将技术点只限制于安防领域中。诚然,如onvif、gb28181都有安防行业密切相关,但如其它freetype、ffmpeg等,也可应用于其它行业中。往大方向来说,万一以后不在安防行业工作,也有几个傍身之技在手,到哪里都有饭吃。

博杂?精专?

在学习、工作上,往往出现两种不同观点,一是博,二是精。我和很多人讨论过这个话题,一些人说要专门研究一个领域,成为专家。笔者所读的专业,从模拟电子、数字电子,到四大原理课程,到计算机体系架构,还有各种编程语言,不可谓不杂。但正是这些基础,使得后来的工作中与硬件部门、业务部门流畅沟通。很难想象,一个8年工作经验的计算机科学与技术毕业的人,连RS485单工通信也没有概念。

某一年,我的主管在年底总结大会上对我进行点评,一共八字:广度有了,深度不够。言外之意,似乎是又要有广度,又要有深度。

我们公司有的部门专门研究视频方面的算法,其它业务无须接触,有的人甚至可能连产品如何使用也不知道。但并不妨碍他们将会成为专家。公司的分工是要明确的,但很多公司实际上并不这样。一些部门有专家,另一些部门也就会有打杂的机动人员。具体表现是哪里需要人,哪里就安排人,而不管这个人擅长哪方面,——这一点, 在我所在的部门的部分人(尤其是我)表现得十分突出。在此情况下,要向上峰争取成为某一方面的高手、专家,可能性几乎没有。事实上,我向主管争取过,甚至拿韩退之《师说》中“术业有专攻”来表明态度,无奈制度就在那里,只好接受事实。

所以,后来我在工作上对“博学”、“精通”两者做了调整:以工作任务为驱动,以精通技术为目标。就是说,对于工作上的安排要接爱,将工作任务抽象为技术点,然后对此技术点列出大纲,优先考虑、研究工作上要求的,其它要点待有时间再研究。前面我写的coreboot学习系列文章,就是一个典型:我认为领导极有可能安排我做BIOS(因为公司接触过X86底层开发的就我一个人),因此预先去研究。在接触初期对coreboot进行了解,然后列出提纲(或者说是要做的事务),然后去研究、学习。然后领导安排其它同事做BIOS事务,然后我就暂停了。但不排除后续实然让我负责。

所以,我工作这几年接触大量的杂七杂八的东西,基本全是工作任务驱动,出于自己自愿研究目的的少之又少。无论是freetype字符叠加,还是视频硬件加速,还是硬盘smart控制,还是pelco云台控制,我都来者不拒。但在杂乱当中,也保持着自己清醒的认知:我的本职是linux系统、底层驱动、C/C++等,其它的都是巩固和支撑个人知识面的东西,是用于提升技能、开阔视野的东西。

但是,公司毕竟是要赚钱的,完成工作是第一位的。记得几年前,部门一位同事要解决产品接U盘的问题,领导甚至要求该同事看完USB协议。有个新平台使用了PCI接口,领导又要求研究PCI协议,还买了书籍。在浮躁追求直观效益的公司,是不允许你花时间做研究的(因为你的研究领导看不到直观经济效益)。但当出现问题时,又以理论基础不牢为原由进行批评。在此管理风格下,我是无力改变现状的,只好坚持自己的做法,尽力做好事。其它的,管它呢。

李迟 2016.10 中旬

你可能感兴趣的:(我的一些学习经验:概述)