※ 引述《classic500ml (TB)》之铭言:
: 大家好
: 小弟最近想换工作,不过实在不清楚大环境方向,
: 想寻求各位前辈指点迷津!!先谢谢大家了orz!!
: 我的背景:
: 国立科大,电子电机相关科系毕业(不是资工)。
: 退伍后担任软件工程师三年多(没换过工作),
: 专长C/C++,全部靠估狗,边上班边学,三年做了好几个嵌入式系统案子。
: 公司是消费性电子产业,所以产品都是要透过GUI才能让user使用。
: 工作分配是我跟一家外包两个人写,各忙各案子这样,
: 简单来说:
: 外包的案子,外包全部自己搞定。
: 我的案子,只有GUI我能自己搞定,其他像是 linux porting, driver, firmware等等,
: 都要靠外包商搞定。
: 我在这些非GUI部分中,对于"原理、基本概念、大方向"大致也都了解,但是都没有实际
: 做过。
: =================================
: 写了三年多GUI,觉得在这样下去不行了,
: 所以想转换方向,目前是想找韧体工程师,
: 但是打开104真的是眼花撩乱,
: 想请问:
: 1. 假设我以"外包商的能力"当目标,我该找什么样的 "产业or工作内容" 呢?
: P.S.
: 至少我目前觉得外包商能力很强,
: 从linux移植到arm上,到driver,firmware,GUI等等,
: 都可以一条龙全部搞定,
: 公司专案内容也可以说包山包海吧,
: 就我目前有经历过的就有:
: USB storage、SD、LCD、touch panel、WIFI、ethernet等等,
: 以上也是外包一个人搞定。
: 2. 或者是说我应该只朝一个方向做深入发展呢?
: 看了104职位名称:
: EX: 影像处理IC韧体设计工程师、蓝芽韧体设计工程师、Nand Flash韧体设计,等等一堆
: 。
: 每个都是很专业领域,很担心产业选下去,路越来越窄...
: 抱歉文长,然后再次谢谢大家!!
小弟是人在美国系统厂工作的韧体工程师,想分享一些经验。
我个人认为做韧体主要三个能力:
1. C 语言。
语法或指标只是基本,给你一包 open source 你要能在短时间看懂
且进一步修改。进一步开发环境、toolchain、gdb、make 都是基
本功。
2. OS / architecture
对 OS 的观念掌握度高吗?paging、virtual memory、file system
等都会用到。常见的状况是给你一个破破的文件要你写个 driver,
找 ODM 没用因为他们也不会,找原厂没用因为没给钱 XD。
ARM 的架构也要熟。kernel 出现 stack dump 如何去找到凶手等。
各种稀奇古怪的 bug 到底跟硬件有关或无关也要靠你厘清,还是有人
code 乱写导致同步烂掉,各种状况考验你的基本功力。
3. 耐心与学习
在没足够的文件下要让 HW 动起来,try & error 少不了。issue 太广
,只要是底层都你的,自然必须一直学习。
做 porting 只是韧体工程师的一部分,更进一步是对 Linux kernel 与对
系统的掌握度。东西太多都是遇到 issue 以后边学边解。但只要基本功扎实
基本上都能学的起来也能做的出来。
因此个人建议将基础功打好,从 C 的指标,简单的 device 与 kernel
module 开始。良好的观念可以让你面对复杂的问题时有个头绪。公司也要
慎选,尽量找老板会认真面对 issue 并想解决的地方工作。小弟在台工作时,
共事过的ODM 韧体工程师,强的不是没有,只是非常的少,摆烂的居多,还有
摆老的。毕竟对这些公司而言,卖的是硬件,软件只是验证硬件用的,
在这种地方公司自然不重视软件,也学不到东西。
而美国的就业市场,小弟的观察是韧体工程师相对蓝海,大概太黑手想做的
人不多,机会也多。mobile app 或 front end 等反而竞争激烈。另外高薪
伴随着高税与其他状况,这就是别的故事了,但可以确的定是做 10 年就退
休的人是凤毛麟角。