私人|有关BSP驱动该如何学习的个人看法


今天有位粉丝兄弟问一个这样的问题,我觉得说说挺有意义的。
为啥呢?


因为我前段时间面试了不少人,有不少人的情况是,岁数挺大,33-40多岁左右,
整场面试下来挺尴尬的,(我这不是年龄歧视,确实是真人真事,遇到过不少这种情况的面试者)

  • 问有没有什么精通的模块(答:没有),
  • 之前做过什么拿手的项目,负责的哪一块,大概讲讲(答:讲不出来,之前在手机ODM公司都是bringup+这修修那补补,ODM公司项目多加上周期短,平时也没时间去深入学什么模块)
  • 有没有什么印象深刻的,或者解决过什么具有挑战性的问题(答:也没没有,报啥问题看啥问题,解决不了就找高通或MTK等产商,慢慢磨)
  • 问C 语言基础(答:工作这么多年,忘的差不多了)
  • 问Linux 内核基础(答:工作这么多年,忘的差不多了)
你说,这种情况,招进来干什么?
同样的工资,能招两个能力差不多的年轻人进来,并且年轻人求知欲和学习能力还更强些,这种情况,为什么不招年轻人来培养替代呢?


这就是竞争力的问题,技术上没有与工龄匹配的竞争力,工作可被替代,自然而然可选择的机会就少了。
简单来说就是,工龄、工资、能力 这三者不对等,且相差太大。


当然这个话题比较敏感,我没有年龄歧视,毕竞过几年,我也算岁数大了,
所以我也一直在思考竞争力的问题,如何尽可能的提高自已的竞争力。


回归到粉丝的问题吧,以下的话都是刚刚回复问题时随手写的,没有经过深思熟虑,
纯属个人理解,如果理解不到位,或者写的有问题,也请指出来,我也来学习改正

问题交互见这篇文章:《【SemiDrive源码分析】系列文章链接汇总(全)》

问:我现在刚入行车载BSP很迷茫不知道咋学


答:
你这问题挺大的其实,每个人的情况都不一样的.
这要看你的打算了,我对你不太清楚,比如工作多少年,现况如何等等,所以不太好回答。
以下是我的想法,也不一定对,但可能可以作为参考


优先看你自已的计划,主要是下结合当下的工作,分析自已擅长什么,对什么有兴趣。
优先把这块的工作做好,以及也这个领域学习精通。
然后再发散的学习其他的模块。
以上说的是 精->广的 学习方式
(当然 广->精 或 精->广 哪个好?这个要看个人,没有哪个好哪个不好的说法)
最终的目的都是提高自已的竞争力。


我自已的话,因为工作的性质,我从毕业开始就做为项目驱动负责人带领整个项目驱动部分,负责项目的所有驱动。
带项目的好处是,各个模块的问题都要分析,所以我走的是 广->精的方式。
所以这个没什么好不好,只是每个人的方式不一样罢了,最终的目的都是提高自已的竞争力。


  1. 有关竞争力的理解
    做软件最大的问题就是软件更新迭代速度快,如果竞争力不足,很容易被替代,尤其岁数大在了。
    岁数大了有几个方向,一是往技术管理层转,另一个是往专家方面转,这个就看个人了,暂且不论。
    但不管怎么转,原理都是相通的,不管你怎么规划,都要有竞争力。
    回归到竞争力的问题,竞争力说白了就是不可被替代,
    要么是你在某个领域非常精通(深度),要么是你对多块领域融合贯通(广度),这个就是广度和深度的问题。
    作为专家,最好的情况是:某个领域是大佬,研究的很深,对于其他领域可能有一定的了解,能够融合贯通,
    作为技术领导,最好的情况是:对各个领域都有一定的了解,这样才好评估安排下面兄弟的工作,最好的情况也是自已有一个非常拿手的领域。
    综合上面的分析,某个领域研究深入,其他领域懂,这种情况是最吃香的
    (领域的话,估先考虑兴趣,其次考虑下未来更加吃香的领域,如音视频摄像头等等,会更好找工作些,相对其他BSP模块,这些领域有一定的门槛,也更加吃经验一些,因为不管未来怎么变,机器智能 AI 总是大方向的,像人一样,AI 听说看总是少不了的,这种模块做得好不会缺工作的)。
  2. 有关BSP的学习
    说到BSP方面,BSP与硬件是强相关的,不管哪个模块,学习都要懂原理,代码不管怎么迭代,原理总是相通的。
    包括硬件也要懂,比如有哪些引脚,作用是啥,有哪些重要寄存器等等。
    按我的习惯,我一般会这几个方面去总结一个新的模块:
    (1)代码移植
    (2)硬件原理
    (3)工作原理
    (4)代码框架
【私人|有关BSP驱动该如何学习的个人看法】以上都是自已的想法,也不一定对,你做个参考吧,重点还是要给自已做好规划

    推荐阅读