http://www.programmer-club.com.tw/ShowSameTitleN/exp/13338.html
作者 : weber
本文可视为“我的 DDK 学习经验”的续篇, 不谈软件技术, 而是写我在华硕 10 年的职场经验. 描述学会了 DDK 这套工具, 我是如何运用它, 在工作上落实创意, 供各位参考. 另外我的为官经验, 可说是失败中的失败, 各位可引以为鉴
我在华硕的第一位老板是 HC, 我日后对软件价值的想法, 受到他的影响极深.
他以前在宏碁是 Jonney 的助理, 参与天龙中文终端机开发计划. 当时工作, 是用宏碁自行开发的 ASIC, 搭配 firmware 来处理中文显示.
这份工作累积的经验, 让他日后有能力自己开一家 VGA Chip IC 公司. 而也使他成为在华硕中最了解软件价值的董事.
他在华硕第一份工作, 是从无到有成立 VGA 部门. 当时 3D VGA Chip 霸主是加拿大 ATi , PM 大主管属意这家公司, 预计与其全面合作. 但 HC从 Chip 架构及规格, 反而看好另一家风中残烛的 nVidia. 那时候 nVidia 找过丽台跟其他家 VGA 卡厂商, 都吃闭门羹, 没人想理它.
部门内成立 3 条产品线, 分别使用 ATi , nVidia, S3 公司的芯片. 当时与其他部门最大的不同处是, VGA 部门 RD 是以软3: 硬1的分配. 成为公司部门中, 拥有人数最多, 水平最整齐, 都是台清交硕士毕业的软件人员. 连我跟他面试时, 还被他嫌在资策会待太久, 怕染上不好习性.
HC 的个性是, 技术不愿受制于人. 他逼 nVidia 吐出所有的 VGAsource code, 命令底下一组软件工程师来做效能优化的工作. 我分配到的工作是, 做安装光盘程序, 及用 X86 汇编语言来加速 VGA Driver执行效能. (因当时有许多 2D/3D 指令是用 CPU 先处里过, 然后再传给 VGA 芯片处里).
因解掉 1 个 nVidia 驱动程序的 Bug, 使华硕 V3000 绘图卡领先其他对手, 早 1 个月出货, 打响公司在 3D VGA 市场的名号. 因为这一点贡献, 经 HC 推荐, 而获得 Jonney 额外的奖励奖金.
VGA 部门在所有同仁努力下, 不到 2 年时间内, 就挤下原先在台湾第一名的丽台.
———————————————————————
因在驱动程序这个领域的耕耘, 我获得在资策会时, 做梦也不敢梦到的高额报酬, 有感于当时 (1997 年) BBS, 杂志文章皆是财团法人, 学术界人士, 学生的论调, 鲜少来自工业界的声音. 而且是一面倒向 MIS, 数据库.
于是在 BBS 上写篇“我的DDK学习经验”文章, 鼓励其他软件从业人员,朝驱动程序发展, 而不是只押宝在 MIS, 数据库.
当时在 BBS 上引起支持 RAD Tool, MIS, VooDoo 学生的笔战, 搞到连 HC 去交大演讲招募工程师时, 现场都有学生呛声点名, 说要找我单挑. 回来后问我是不是觉得时间太闲, 没事做. (XD! 现在是 nVidia 还是 VooDoo 活下来 ? MIS 公司还是 IC 公司钱赚的多 ?)
事隔 3 年后, 在台湾微软 WinCE 技术研讨会上, 有一名微软工程师趋前自我介绍. 他原本是在交大担任助理, 看过该文后, 放弃原有安稳待遇的工作, 自愿降薪一半, 投身驱动程序开发领域. 我相信, 经过 MS SmartPhone, SoC 的兴起, 联发科, 宏达电跃升为股王后, 他现在应居要职领高薪, 远比当交大助理, 来得更有成就感.
HC 深信公版公 Driver, 绝对无法支撑起产品竞争力.于是在不增加任何硬件成本下, 极力要求我们要用软件来增加附加功能. 而我们也不负他所望, 连续推出 3D Glass, Game OSD, 3D See Through, Time-Shift, Smart Doctor,OverLock 等特殊软件功能, 让 Sales 在报章杂志上, 有材料来连连为华硕绘图卡创造话题.
在不到 5 年内, 他成立的 VGA 部门, 成为世界第一品牌的VGA 卡公司. 而以往称霸的外国 VGA 卡公司, Diamond 跟 Elsa 公司, 一个倒闭, 一个缩编.
当 Win95 问世, 引发一波 MB 大换潮, 得以让华硕连续蝉联 3 年股王. (但套句台语, 摇摆没落魄的久, 10 年内, 股价从 800 多元变成现在的 80 几元) 而 MB 也需要搭配 Win95 驱动程序的安装光盘出货, MB 的主管 Jerry 向他要求软件人力协助. 他就派我去成立 MB 软件支持课. 我虽然心中不愿, 但却也不得不舍下喜欢的 VGA 驱动程序工作.
当时的 MB 部门是以 EE 及 BIOS RD 为主导. 软件支持课形同鸡肋般, 扮演的角色,仅比 QT 部门高一点而已. 工作内容仅是制作安装光盘, 检查驱动程序的稳定度.不过因 MB 种类日益频繁, 使这份工作变成繁琐的制式工作. 也让我心中不时思考, XD! 自己是 RD 还是高级 QT ?
然而繁琐工作还是要做, 最后受不了, 我模仿 Win95 Plug and Play 的 driver 安装机制, 写出半自动安装程序, 将公司所有的 Chipset, Audio, Lan 等等 driver 全部放在一张光盘. 当放进光驱时, 安装程序自动启动来侦测 MB 上所有 Device 的 PID/VID, 挑出正确的 driver 供使用者安装.
这套方法, 不仅让这个软件支持课逃出繁种无聊的工作, 也大大减少 PM 的安装光盘库存压力. 不用一种 MB 就要准备一张光盘, 而是 Intel, SiS, VIA 芯片组系列的 MB, 各一张安装光盘.
而我就利用这多出来的工作时间, 私下做一些自己感兴趣的题目. 因没影响到 MB 出货, 所以 MB PM Joe 跟 Jerry , 根本都不晓得我私下在搞什么东西.
———————————————————————
有鉴于 Win95 后, MS 宣称要停止支持 DOS. 我就将 DOS 版的 MB BIOS Flash 程序, 改写成 Win 版的 WinFlash. 大概捞过界, 惹毛负责 DOS 版 Flash 程序的 RD, 而让 BIOS Team 不愿导入. 完成的 WinFlash 只好静静躺在硬盘中.
过了半年, 当时公司为康柏 (Compaq, 现被 HP 并购) 制作一款无软盘驱动器, 安装 WinNT 的 PC. 原先的 DOS Flash 程序无法在其上使用. (NT 上无法在 DOS 模式下去存取硬件, 也没有软盘可以 bootup DOS). 康柏限期要提供解决方法, 藉由康柏施加在 PM 的压力, 让这套尘封的 WinFlash 程序, 得以应用到产品上, 在市面流传.
而另一家 MB 公司微星, 在我完成WinFlash的 2 年后, 也做出做法不同但相同功能的程序, 并在杂志上大打能在 Win 上作 BIOS flash 的广告. 看见其他公司的重视程度, 想起自家公司的态度, 真觉得 MB 软件部门只是个打杂部门, 丝毫不受重视.
完成 WinFlash 后, 当时 WWW 网络刚兴起不久, 洞悉到网络潜力, 我跟部属合作开发 Asus LiveUpdate, 利用网络, 在 Win95 下来自动更新驱动程序跟 BIOS. 由于 Asus LiveUpdate 是由 Client 跟 Server 两部分程序组成的. Client 端的检查, 下载机制完成后, 尚须要后端 Server 的配合, 才能启动.
但初期 MIS 部门根本无配合意愿, 最后透过 HC 的影响力, 总算帮 VGA 部门架设更新网站. 经过 3 年后, 微软把类似概念的在线更新功能, 直接内建到 Win 2000. 而现在华硕官方软件下载网页, 及 MB/NB/VGA/EeePC 的安装光盘上, 都存在着这套软件.
同一时期 Intel 在 MB 上推出 Health Monitor 的功能, 用来侦测 CPU 温度, 风扇转速, 及机壳入侵. 同时推销网管软件 LDCM (Lan DeskTop Configuration Management) 给公司来 bundle 在 intel 系列主板上. 而 maintainLDCM 的工作就落到我头上.
因 LDCM 既有的InstallShield 安装程序, 需事先提供硬件配置文件, 注明 MB 有几颗风扇, CPU 温度范围等数据. 我的天啊 ! 若每一片 MB 都要这样搞, 那我岂不是被 LDCM 搞死.
于是修改既有的 InstallShield 程序, 让它能挂上 device driver. 在安装过程去侦测有多少颗风扇, CPU 现在温度, 然后动态产生硬件配置文件, 喂给后面的 LDCM 设定程序去正确执行安装.
后来上 LDCM 训练课程时, 听到 Intel 人员提到 Acer 一个软件部门, 正在进行于 LDSM Client-Server 架构下, 从 Server 端把 BIOS/Application/Driver 安装到 client 端. 于是自己独力将WinFlash 修改成 LDCM 能使用的 PLUG-IN module, 提供 MIS 人员直接在 Server 端更新 Client 端 BIOS 的功能.
因为 Intel 限制 LDCM 只能用在 Intel chipset 系列的 MB 上. HC 叫我想办法, 在 SiS/VIA Chipset MB 上提供相同功能的软件. 于是就开发 PC Probe 这套软件, 但也发现让问题越来越复杂.
3 家芯片组公司(Intel, VIA,SiS) 有各自不同的接口/地址去读取 Health Monitor, 甚至同家不同系列的芯片组也有所不同, 有用 SMB Bus, 也有用 I2C Bus 的. 而 Health Monitor IC 来源, 也有 3 家 IC 公司提供. 产生一堆芯片组加 Monitor IC 的不同组合.
做第一片 MB 时, 还觉得有趣. 但做到第 10 片 MB 时, 就觉得又烦又无聊. 所以一直在想, 有没有一劳永逸的解决方法.
———————————————————————
当初是 1999 年, Win2000 beta 版还在测试, WDM DDK beta 版首度出现在 Win98 ME上, ACPI BIOS 1.0 spec 也刚出炉.
看完 ACPI Spec 后, 加上几年的 Window Programming 经验, 我察觉到 MS 想利用此一规格, 迫使各硬件系统厂商必须提供 ACPI BIOS, 来让 Windows OS 能直接控制硬件. 并且把 BIOS 角色压缩成 Boot Loader. 一但 OS 启动后, 让 BIOS 没有主控权, 以避免 BIOS 影响 OS 运作. (MS 够邪恶, 但很明显并未得逞, 直到现在, 在 Vista 上, programmer 还是可以用 device driver 下 SMI 指令, 让BIOS 取得控制权)
看过 ACPI BIOS 规格跟 WDM DDK beta 版后, 我终于找到处理 Health Monitor IC Access 跟 BIOS Flash 的一劳永逸方法. 让所有硬件存取相关的动作,全部集中在 BIOS 的 ACPI ASL code 中, 由应用程序透过 ACPI driver 来让 ACPI.SYS 执行对应的 ASL ocde. 如此就不用三天两头为 SMBus I/O port来改device driver.
于是一头栽进去, 偷偷在 Win98 ME 平台上开发 Asus ACPI Driver. 同样的, 因为有把该做的工作完成, HC 检查进度时, 没发觉异样, 所以才不会对我碎碎念, 说做这个东西有什么用.
但是 ACPI Driver 需要 ACPI ASL code 配合才能启动.自知惹毛过 MB BIOS Team, 他们是不会帮忙的. 求人不如求己. 于是找刚成立的 NB BIOS RD 部门, 向其要了 Lotus NB 的 BIOS 原始码, 自己边看 ACPI BIOS Spec, 边在 Lotus 上修改 ACPI ASL code.
当花了 3 个月时间, 写出 Asus ACPI Driver 跟对应的 ASL Code 时. 因深知此技术的发展潜力, 便主动开技术介绍会, 邀请 NB/MB BIOS RD 来参加. 但会议结束后, 没有一个 BIOS RD 感到兴趣.
但我并不灰心, 因 Win2000 WHQL Logo program 规定 BIOS 一定 要支持 ACPI. 我知道总有一天, AsusACPI Driver 会派上用场. 只不过却没料到, 这“总有一天”, 却是在 3 年后才来到.
———————————————————————
2002 年, 公司 的 NB 种类增多. 原先 NB BIOS RD是直接 program VGA , 在各家 VGA Chip 的 Frame Buffer 上画 OSD (On Screen Display), 但多种不同的繁琐 VGA FrameBuffer 寻址, 让 NB BIOS 主管 Jason 受不了, 因他有听过我的 ACPI 技术介绍会, 于是私下请我帮忙解决.
我当时也没多想, 本着同公司就应互相帮助, 将 Asus ACPI Driver 原始码提供出来, 做投影片, 并教 NB 软件工程师如何移植到 NB 平台.
HC 常跟我说, 我是做事的人, 但却不是做官的料, 有股 RD 的技术狂热, 却不懂职场的游戏规则. 但我毫不在意, 老是把他的话当耳边风.
但这次无私的 ACPI 技术提供, 不仅没有获得任何回馈, (NB 部门可没因此而多发薪水股票给我). 反而种下 4 年后不愉快的起因.
虽然那时是在做 MB 的事, 但还是会关心 VGA team 的发展. 把 MB 上学到的 Health Monitor 跟动态超降频的概念, 介绍给 HC. 在大家一遍喊 VGA 超频的时候, 逆势提出降频观念.
我认为做字处理或上网时, VGA 根本不需要启动 3D Engine 跟拉高频率. 于是在 VGA 上实作出 Smart Doctor 软件, 依据 VGA/CPU 实际工作负荷, 来动态超降频, 以避免 VGA 长期处于高热超频状况, 降低正常使用期限.
事隔 1 年半后, nVidia 公司受到其他 VGA 卡制造商的压力, 将这项功能, 直接内建在 Driver 中. 可惜当初没人告诉我要申请专利. 不过虽然如此, 这套动态超降频功能, 已经领先其他对手早 1 年半.
当 VGA 部门闯出名号后, HC 为了寻求下一波成长动力. 将目光摆在当时热门的 IA 题材: Setop Box 跟 PDA 上. 但因 VGA 软件人力不足, 想将软件人力从 MB 部门抽回来, 于是询问我的意愿.
但他同时也点出, MB 软件支持课虽然工作无趣繁琐, 但会影响 MB 出货, 公司不能没有这个课, 而且未来将会随 MB 产能大幅成长变成一个大部门.
但我二话不说, 自废武功, 自动解散 MB 软件支持课. 将底下的台清信息硕士, 从无趣工作中解放出来, 投入 Embedded System 研发项目中. 我也不再想当管理阶层, 跟 PM review 进度跟开会, 我觉得是浪费生命.
———————————————————————
在 2002 年时, 掀起一股 IA 热潮. “PC 已死, IA 当道”. Embedded System, 如 WinCE 3.0, Embedded Linux, VxWork 纷纷跳上台面. 我被分派去做以Embedded Linux 为主的 Setop Box 跟 Thin Client.
当时曾接触过 Luxsonor IC 公司, 原想用其 IC 在 Setop Box 上. Luxsonor 的华裔罗副总, 因意识到 PC 运算能力提升, 以硬件为主的 MPEG2 decoder 将倍受威胁, 后因理念不合, 于是自立门户, 成立 InterVideo (IVI) DVD 播放软件公司. 而 Luxsonor 在将 MEPG2 decoder IP 授权给联发科后, 被 Cirrus Logic 并购.
因 IA 口号正热, 一些软件工程师很容易从传产股金主募得资金, 在国内外, 小型 Embedded Linux 公司如雨后春笋, 陆续冒出. 连 Mr. Taiwan 谷月涵, 也插花当网虎国际的执行长, 来搞股票上市上柜. 就可知道这些公司分名是摆明想 A 钱, 用股票换钞票. (XD! 我打电话给网虎 Sale 问些事情, 结果隔天他就发新闻稿, 说华硕即将采用网虎的 embedded linux)
在 Setop Box 上的 Embedded Linux 上执行的 Browser 功能很阳春, 涵盖 PC NetScape/IE 的功能不到 30%, 而他们又无法克服 TV resoultion 及 interlacing 问题. 最后沦落为无实用性的玩具. 我也因而劝阻 HC 入股某家美国 Embedded Linux公司的念头.
Settop box 做半年后收起来, 改做 Web Pad, 一共享 TransmataTM5400, NS GEODE, VIA C3 3 家 CPU 来开发原型机.
开发Transmata TM5400 WebPAD 时, 我负责 BIOS 与负责硬件的同事Alex, 仅仅两人完成该 Prototype. 当时我们好像是在搞家庭代工, 什么事都自己来, 我边下 BIOS 命令, 他就用 LA 去抓硬件讯号. 那阵子, 虽然压力大, 但也学到 Phoneix NoteBook BIOS 架构, 并得知更多 Window 与 BIOS 沟通接口.
当时触控面板的接口 IC 并无支持传统 PS2 接口, 于是我写个 Win98 驱动程序, 用南桥芯片空出来的 GPIO pin 去接收接口 IC 的输出数据, 透过驱动程序将其转化成 PS2 Mouse Event, 去模拟出一个 PS2 Mouse Driver. 这是我第一次用软件驱动程序仿真出特定硬件接口的经验.
5 年前的 SoC 刚萌芽, 硬件省电能力很弱,LCD-TV, 跟 LCD Panel 价格昂贵. 原型机完成后, 因暸解成本昂贵, 功能有限. 我向 HC 建议, 不要导入市场. (有够呆吧! 如果煽动成功, 让老板投钱投人, 起码可以捞到个副理官位来做, 至于赚不钱, 那是他家的事, 反正有其他赚钱的部门在养, 怕什么!) 结果同时期有两家公司, 大众计算机跟旺? 做出 WebPAD 商品, 想也知道, 都赔赔赔, 成了 3 赔产品.
IA 热潮的泡沫, 不到 2 年就消失. 但 PDA 因有 Palm 及 WinCE PDA 的销售成长, 得以继续生存下来.
———————————————————————
HC 意识到趋势变化, 停止 Steop Box,WebPad 开发, 将所有软件人力投入 PDA 开发. 于是我被指派去做 Intel Bulverde VC (Validated Customer) 计划.
Bulverde 是颗 SoC, 非 CPU. 它将 ARM baseCPU, VGA, Peripheral, Memory Controller 全部塞到 1 颗 Chip 中. VC 计划是, 在 Intel 提供的 pre-alpha SoC 板子上, 架上 MS WinCE 3.0 OS, 写程序去测试功能.
当时是利用 ICE, 透过 JTAG 接口来 program SoC, 使 SoC 发出预期的控制讯号, 接着用 LA 去量讯号, 检查是否正确. 然后每星期回报 Bug 给 Intel 做除错之用. 简言之, 就是写程序帮 Intel 作 SoC 硬件功能验证测试.
在参与过 Setop Box, Thin Client, 及 Bulverde VC 计划, 让我无意中充实对 IC 规格和硬件设计方面的知识,有时候当下看是不相干的工作经验, 往往是日后技术提升的基石. 经历这时期实作经验, 对日后软件设计, 有极大帮助.
但因部门政治因素, 外加 VGA 软件主管离职. 不得不放下喜欢的 Bulverde VC计划, 再度听从 HC 的安排, 转任 VGA 软件主管.
HC 一直想为 VGA 部门寻找另一波成长动力. 于是指派我去执行 DVDRecorder 及 LCD-TV 项目. 初接任 VGA 软件副理一职时, 一位负责维护 Display Driver Hooking 机制的 RD, 提出可以将 Video 结合 3D Game 的点子时, 我赞同他的想法, 并加码加派一位 RD 去做 MPEG4 压缩跟网络实时通讯功能来配合. 做出全球首套支持 3D Game 的视讯软件. Sale 部门看到这套软件后, 取名为 Game Face 来大力促销.
随后因 HC 想在大陆成立一个软件团队, 我暂时放下 LCD-TV 案子, 前往苏州, 武汉, 西安等地的大学去招募员工. (有人跑大连, 哈尔滨的路线, 11 月, 还好不是我) 因老婆不愿举家迁移到大陆, 在苏州华鼎成立团队雏型后就返台.
在 LCD-TV/ DVD Recorder 这些项目中, 我陆续接触到 WIS, LSI, TI OMAP, Sigma Design, Trident, OPlus, Genesis,PixelWork, Morning Star 等各家的芯片. 这段期间大量接触各类的 IC 公司, 也读了一堆相关的 IC spec and datasheet, 我试着去比较各家芯片性能. 遇到不懂的规格名词时, 就上 Google, 翻 paper, 从基础理论去了解其规格背后的含义. 而垫下对消费性电子 IC 方面的知识.
因为国外 IC Design 公司的规格书写得非常详细, 我从中接触到MPEG 2/4, H.264, Scaler, DE-INTERLACE, 视讯规格, 以及色彩学等方面的知识.
记得当时 Trident 代理商的某个 FAE 很臭屁, 欺负我没摸过 LCD-TV Chip, 还说 LCD-TV Chip 很有深度, 技术很难懂, 要像他这样的人才才能搞懂. 结果事后 K 过 paper 跟 Video Demystified后, 才知道他夸口的那些知识, 根本是入门级.
做这些案子期间, 我观察到一些 IC 公司只专注在硬件开发, 如LSI, TI. 而其 IC 所需的 DSP firmware 或 embedded system 却要系统厂商, 花钱向其他家软件公司购买, 相关的 Video/Audio codec 授权问题, 也是由系统厂各自向 MPEG2/Dobly 谈判. 对玩惯 WinTel 的我为此深感不解. 为何无法提供一套完整的方案, 却还要系统厂到处张罗硬件,软件,权利金等事项 ?
相同时期, 随着 SoC 蓬勃发展, 联发科洞悉到系统厂的需求, 招募众多软件工程师, 搭配自家芯片, 提供完整的 solution, 在不到 4 年时间, DVD Recorder 方面就打败 LSI, 手机芯片方面, 则是严重威胁到 TI. 逼得 TI 也出 Davanci SDK for WinCE. 如果 TI 还不亲自提供完整TurnKey Solution, 中低阶, 甚至高阶手机芯片, 被联发科攻陷是指日可待.
———————————————————————
在 2000 年, 华硕获利大幅衰退, Jonney 意识到主板高毛利时代, 已经一去不返, 连精英都严重威胁到华硕 (股价 130 : 70), 一堆 VGA 部门的软件工程师, 集体跳槽到精英.
Jonney 开始推动巨狮计划. 进行公司组织重整后,VGA 部门被划给 Jerry. 我因而失去重视软件功能 HC 的支持, 我曾经因案子无预警被中断, 当面对着 HC 拍桌子, 但他心胸宽大有雅量, 没把这件事放在心上, 日后反而常常在暗中拉我一把.
直属长官变成 VGA 部门的硬件经理. LCD-TV 项目也被迫停摆, 由 Jerry 新成立的数位家电部门来主导. 而底下的一些软件工程师看苗头不对, 全部跳去负责 VGA 卡的软件单位.
但上帝关起门时, 同时也为你开了另一扇窗. 2004 年时 MS 推出 Media Center, 并且全球数字电视陆续开播. 虽然处于冰冻状态, 算是苦中寻乐吧, 花时间 K 数字电视讯号规格, 去了解 RF, IF, BF, demodulator,及 OFDM 编码的原理. 从这些规格跟通讯编码原理中,找到属于技术人员的乐趣. (数字电视讯号规格有牵涉到视频压缩, 因有看过 MPEG2/H.264 数据, 所以蛮快就进入状况. 有烧香就有保佑, 有读书就有收获)
不久后, Jerry 对 Barebone 部门报以高度的期许, 于是我转移阵地, 设立一个软件团队来支持 Barebone 部门, 虽然还挂在 VGA 部门, 但 VGA 部门最高主管早就不理我, 考绩被打得很烂.
在 BareBone 部门初期帮忙接 Samsung 的代工案及自有品牌 E-Spreso. 但后期 Barebone PM 部门换主管后, 无意朝创新发展, 以冲产量为优先. 也不管软件功能, 把底下的工程师当工具来使用.
为了不让底下的软件工程师闲闲没事干. 加上看到 MB/NB 朝消费性电子化的发展趋势, 同时也知道 LCD Panel 的色彩缺陷性. 我不想浪费在 LCD-TV 项目上获得的一些研究经验, 于是开案子, 将 LCD-TV 色彩处理功能导入到 VGA/NB 上.
初期我将这个概念跟专利草稿给另一家 IC 设计的子公司参考, 希望能共同开发. 但后来子公司毫无分享意愿. 认清现实一面后, 靠人不如靠己, 我分配 2 名 RD, 成立 Cameleon (变色龙) 项目, 从事 NB 上的色彩功能开发, 并将此观念介绍给某位 NB 高级 PM.
因为这位高阶 PM 是工程师出身, 有过 TV CRT 的相关开发经验, 知道此功能的实用性. 虽然NB 内部有阻力存在, 但他仍尽力协助我在NB 部门内介绍这项功能.
幸运的是, 当时 Toshiba 推出强调色泽鲜艳的 Qosmio NoteBook, 该 NB 加装 1 颗我以前摸过的 Trident LCD-TV Chip, 用来处理色彩运算. 而公司代工的另一家日系公司也想要有类似功能. 要求 NB team 评估用日本 Jepico 图像处理 IC 在其代工 NB 上的可能性.
就在日系公司派出技术科长来台湾, 讨论代工 NB 的技术相关问题时. IC 子公司透过高层主管安排, 向其 demo 他们开发的色彩软件功能. 而我是幸好有该 PM 的私下安排, 向日本科长展示 Cameleon.
虽然IC 子公司想透过高层主管的政治影响力, 来左右日系公司的选择. 但在看过 IC 子公司, Cameleon, 及 Jepico 3 种解决方案后, 基于扩充性, 效能, 及价格的考虑. 日系公司决定采用 Cameleon, 并派出其 TV 部门技师, 提供调校色彩参数, 来配合 Cameleon 使用, 正式导入在日本销售的 NB 上.
因为日系公司采用, 形成强而有力的背书, 原先反对的人都默不出声, 顺利消除 NB 部门内部阻力, Sales 部门将 Cameleon 改名为 Video Splendid, 如同 Asus ACPI Driver 般, 成为公司 NB 的基本功能.
由于 Jerry 所辖的 VGA/Barebone 部门主管, 无意朝创新发展, 只优先冲产量. 外加看到 XBox 360/ PS 3 研发售价消息不断冒出, 以及 LCD-TV 低价化. 魔兽争霸也放出消息要移植到 Xbox 360 上时, 我判断高阶 VGA 卡, DMA 及客厅式 PC, 绝对不是Xbox 360/ PS 3 的对手.
试问当一台 Blue-Ray BD, 40 GB HDD, WLAN 801g 无线上网, 3 颗 CPU 的 PS3 只卖台币 1 万 4 千时, 还会有多少人去买 1 张 1 万多元的高阶 VGA 卡 ?
MS 跟 Sony 可以卖一台亏一台, 以后靠 contentservice 跟 game license 来获利. 但 Dell, HP, Acer, Asus 有可能亏钱卖 PC/NB/VGA 吗 ?
NB 市场的 VGA 方案都是内建, VGA 卡公司是看的到吃不着. 同时 NB 长力道已经逐步赶上Desktop 时. 看不出有其它位来发展机会, 于是离开 VGA 部门, 转调到以系统为主的 NB 部门.
———————————————————————
公司一变大, 一些事情再也不是以技术优劣来考虑. 原先以为在 NB Team 可以开发第 2 代的 ACPI Driver 及 Video Splenedid, 尤其是 ACPI BIOS 已经出到 3.0B 版, 而 ASUS ACPI Driver 还停留在 7 年前的 ACPI BIOS 1.0 时.
但这些想法都被 NB 软件大主管拒绝. 有次讨论工厂测试流程时, 还跟我解释 ACPI Driver 的功能. 当时心想, 他还以为 ACPI Driver 真的是他手下自行开发出来的.
在不被重用, 近乎被冷冻的状况下. 又开始自己找事做, 看到大部分人用 NB 时, 通常是用 Mouse 居多, 而 TouchPad 就白白浪费在那边. 加上当时 iPod的触控屏幕功能造成热门话题. 所以交代部下去搞个将 TouchPad 当 Touch Panel 用的程序并申请专利.
结果搞出来后, PM 对其兴趣缺缺. 但却没料到,过 1 年半后, 在 2008 年 CES show 展上, NB Sales 把这个 TouchPad 功能当成一个卖点.
因从 2004 WinHEC 资料得知, 微软即将力推 MCE 2005 跟 Vista Premium (code name Diamond), 会拉升 NB 对 TV 功能需求. 又看到大陆工资成长的趋势,及公司内部如火如荼的 LSS 精实运动. 我想到用软件自动化来做工厂检测.
当时 NB工厂大多依赖人工作检测, 无法有精确的量化数据. 在 6 Sigma 的 DMCIA 步骤中, 需有 M (Measurement) 步骤提供量化数据, 以统计手法分析, 作为方案效果评估, 来找出引起质量差异化的关键.
假想若能提供每月数十万台的 NB 测试量化数据来加以分析, 又能加速测试流程, 减少作业员需求量. 对公司的硬件设计, 供货商的电子组件良率控制, 应当有所帮助.
于是实际到工厂待一个下午, 发现作业员真辛苦, 因为工厂没能力去写测试程序, 为了测试 TV, Camera, Audio 的功能, 须操作繁复设定的商用应用程序 (IVI Home Theate, Cyberlink Power Cinema, 3D Mark 2003), 以人眼人耳去判断,
而长期沿用 DOS/Assembly 的单工观念, 将刺是测试几个小站, 一站一站去测, 丝毫没利用到目前 CPU/Windows 的多任务能力, 也无法执行驱动程序来测试 device 功能. 而在测试声音时, NB 啦叭跟机具运转的噪音, 此起彼落, 真是个恶劣工作环境.
于是回来后写个快速测试 TV/camera 的程序, 交给部属, 由他修改接口, 依工厂需求, 协助导入 Digital/Analog TV 软件检测, 因 MCE 2005/Vista Premium 的 NB 产量持续成长, 对 TV 的检测需求, 大幅成长. 这套方便的TV/Camera 检测程序很快就正式导入 NB 生产线, 颇受作业员的欢迎.
受到顺利导入的鼓舞, 我计划接下来开发 Audio, WLAN, BlueTooth 等检测功能. 再度请出 Google 大神, 上网查声音相关的论文跟原理文章, 最后使用麻省理工学院的快速复利叶转换链接库( MIT FFTW), 以及参考普林斯顿声音研究室 ( Princeton Sound Lab)的公开原始码, 在 DirectSound上写一个可同时测录放音功能的快速声频检测程序, 来检测 NB 声音输出入的 Channel Balance, Frequency Response, Total Harmonic Distortion,Back Ground Noise Level 品质. 为了确保声音检测的正确性, 我拿商用音频测试软件 SpectraLab 来比对.
但是要导入时, 又发生政治因素, 让快速音频检测程序无法上线. 软件主管单位摆明, 要导入的话, 就把原始码全部公开给他们, 并提供训练课程. 不然的话, 就别想导入.
大概因接 2 连 3 惹毛其他软件部门, 造成 NB 新主管在管理上的困扰. 最后他丢个 PC Camera 的案子给我做. 并告诉我只准做这个案子, 不要再乱想或乱碰其他案子, 免得跟其他部门起冲突. 好吧, 反正不是第一次, 我再度发挥苦中寻乐精神, 自我寻找技术人员的乐趣.
于是跟几家 Camera USB IC 公司接洽, 初期因刚接触 PC Camera 领域, 对相关技术不懂. 于是把 PC Camera 整个软硬件架构拆解掉, 从 Lens, CMOS sensor, 步进马达, USB IC, UVC/WDM Capture driver, KsProxy, DirectShow 等硬韧软件功能, 从头到尾走过一次.
知道影像清晰度跟色彩对 camera 非常重要, 就花时间做快速 Auto Focus, 因嫌 USB IC 的清晰度判断能力太烂, 自己写 MTF base 清晰判断程序来取代. 并上网去读 Glass/Plastic Len 镀膜对色彩的影响, 以及 CCD vs CMOS sensor 的色彩处理物理特性的优略点分析.
甚至到最后, 觉得 CMOS sensor 的硬件色彩处理功能 (3×3 matrix process), 还是无法真正解决色偏问题, 还找到 Nikkon 的色彩处理芯片专利文章, 来了解 Nikkon 单眼相机对色偏的解法.
在看过 Micron CMOS Sensor 2020 的 datasheet 及 USB UVCSpec 后, 花了 2, 3 个月, 去修改 USB IC 8051 firmware, 利用 UVC Extension 接口 从 Windows App 关掉 USB IC 的功能, 直接去 programCMOS sensor. 才发觉原来一开始被 USB IC 公司的 sales 给呼?了.
原来 USB IC 公司把 Micron 2020 优异的硬件功能关掉, 只开自家 IC 的图像处理功能. 而 Sales 宣称其因 IC 具有特殊的附加功能, 如 AWB, Scaling, Sharpness detection 等, 所以要卖得比较贵.
但单纯从指令周期来看, USB IC 的 8051 根本比不上 Micron 2020 的 68H11. 而这些功能可以被 CMOS sensor, VGA Scaling 及 Window App 所取代, 而且效果远远超过它.
因 PC Camera 硬件设计进度一直拖延, 要做不做的. 一直等也不是办法. 为了证明自己不是只会放炮爱吹牛, 写虚拟摄影机驱动程序, 用 UVC Extension 接口去控制步进马达, 做出快速自动对焦. (1.2 秒, 可以更快, 但受限于马达步进机构精密度的缺陷)
将撷取到的画面导入VGA Vertex/Pixel Shader, 去做 face detection. 同时研读微软北京软件学院的电子白板相关论文. 想将电子白板的功能导入虚拟摄影机驱动程序. 但最后还是看出主管并无心去推动这个案子.
经过 WinFlash, Asus ACPI Driver, Video Splendid 的推动经验后, 我已经对由内部推动创新的方法绝望, 都要靠外部的市场压力, 来弥平内部阻力, 一些被 PM/RD 主管轻视的软件功能才能出头.
这时兴起辞职去其他系统厂发展的想法. 但就如同电影”东方不败”中所说 : “江湖在哪里? 有人的地方就有江湖 !”
其他系统厂也会存在相同状况, 如果没有总经理级的支持, 到时候铁定也是被排挤的份. 在华硕起码还有 HC 知道我是会做事的人. 还好过没多久, 果真 HC 就暗中帮了我一把.
———————————————————————
2007 年四月某晚 8 点多时, 接到 Jerry 秘书的电话, 说要找我一起吃饭. 搭着 Jerry 的 Lexus 460LS 加长豪华版, 去台北艺术大学吃饭. 席间才得知, 原来 Jonney 交代 Jerry 去执行百元计算机计划, 但 Jonney 一直对软件部分放心不下, 要 Jerry特别留意, Jerry 就请 HC 推荐合适的软件人员来帮他看软件这一块.
虽然 HC 大力推荐, 但 Jerry 担心我常跟其他软件部门有磨擦, HC 反问他, 是要找一个会打仗, 攻山头的人(对啦, 这种人死的最快, 无法享受胜利成果), 还是守成, 注重部门和谐圆容的主管 (割稻尾最在行, 处世圆融, 见缝插针). 几经思考后, Jerry 最后还是找上我.
其实在 2007 年 1 月时, Jerry 因底下的 PM 不懂软件, 就叫我帮他看数字像框的发展机会, 我经过 2 天的技术 survey 后, 建议他取消, 因以其成本, 大可做一台 Thin Client 或 WebPAD. 如果真得要做, 建议 PM 考虑用 VIA C3 CPU + Linux 来开发.
而邀请 VIA CPU Sale 来开会时, 负责 AMD 百元计算机的 PM 也跑来插花. 后因华硕跟 VIA, AMD 价格谈不拢, 最后连百元计算机的案子都停矲. 所幸 Intel 看到 AMD 在 OLPC 上的声势, 为防止AMD 咸鱼翻身, 就跟华硕合作, 进入百元计算机市场, 而使这台小计算机起死回生.
餐叙后隔天就跟 PM, MID 等相关人员, 一起被关到北投春天酒店. 2 天后赶出百元计算机的UI/软件功能规格初稿. (吃了两天的生鱼片, 真得有点反胃)
那时候公司内部并不看好百元计算机的前途, 只好用我们这群从四处征招来的散兵游勇来执行. 但因这是 Jonney 非常重视的案子, 使 Jerry 认真执行, 一个星期开 3 次会, 常常开到凌晨.
当时也不知道百元计算机会不会起来, 但与其继续待在 NB team 被冰冻, 到不如把握这个机会闯一闯. 百元计算机是个人人不看好的案子, 没有高官想进来插旗占山头, 完全没有历史包袱. 只有一群笨蛋, 傻傻的做. 有点像在公司内部创业的感觉, 如同 VGA 部门刚成立时一样, 大家只想把东西做好. Just Do It! 而不会去想些有的没的, 非技术性的事情.
出关后, 上网查一下 Intel 对百元计算机的策略, 结果发现另一个消息, 原来 Intel 老早把 Xscale CPU 卖给 MARVEL, 全力专攻 X86 CPU 的省电技术, 并在以色列海法分部进行该项目.
虽然那时 HC 知道我想换部门, 叫我去帮他看车用计算机这一块, 但他底下也有山头问题, 犯不着跟那些人玩政治. 而且我觉得跟随 Intel 脚步比较有搞头, 如同宏达电跟随微软般. 新兴的产品, 有大公司在背后推, 才有机会成功.
所以就接受 Jerry 的邀约, 加入百元计算机团队. 忙了 1 个月多月后, 在 2007 年台北计算机国际展上, Jonney 拿出这一部百元计算机亮相, 并正式命名为 Eee PC.
EeePC 会不会是昙花一现, 或是乘势崛起, 我不晓得. 但我个人相信, 在 UMPC/MID 这块领域能存活下来而且能获利的, 必定是强调系统整合功能的公司, 绝对不是只相想靠低价成本抢单的公司.
我非常佩服宏达电, 死死跟着 MS 的 Window Mobile 平台. 跟到第 4 年时, 公司差点倒闭. 因而引进王雪红的资金. 但等到 WinCE 3.0 够稳定, 能拿出来卖时, 宏达电是第一家有量产能力的公司. 同时它也聘请许多软件工程师来做系统整合.
当宏达电推自有品牌时, 一堆分析师看衰. 但因系统整合难度高, 其他手机代工公司是看的到, 吃不着. 后来连原先解约的电信公司, 迫于市场现实压力, 也回头找它代工, 甚至直接贴牌.
我是天生反骨, 在 WinTel 体制下讨生活讨了 10 年, 因为了解所以不满, 对其架构, 越看越不顺眼. 在我眼中, EeePC 应是属消费性电子产品, 但又需具有 PC 般的扩充能力. 能执行现有 Linux/Windows 庞大的 X86 base 软件, 让 User 可以自行添加自己惯用的软件. 而不会像 PDA, 手机般, 被绑得死死.
若按照传统 NB 的观念来设计, 铁定无法持续稳住目前的地位. 竞争对手只要猛攻低价化, 体积小的罩门, 很快就追上来.
现阶段 EeePC 竞争对手, 都是以硬件成本来挑战 EeePC . 谈硬件成本(CPU, Panel, Battery)的功力, Acer, HP, Dell 会输华硕吗 ? 谈垂直整合生产制造, 鸿海会输华硕吗 ? 更何况还有 Apple 神秘的 iBook.
等 2008 年 Q2/Q3 这些重量级厂商的类似产品陆续出笼后, 必定是一场大厮杀. 策略不对, 研发能力不强化的话, EeePC 铁定被痛宰 ! 或许现在一些的好消息, 让华硕一些人飘飘然, 我可是蛮忧心, 挫着等.
若 EeePC 朝更轻更薄, 更稳定, 更省电, 更快速开关机, 影音质量更好, 屏幕更大, 操作接口更人性化, 而且能控制住价格. 或许能产生许多差异性系统功能来持续吸引 USER 的眼光.
其中系统稳定/省电功能/影音质量/人机操作接口, 软件都可以帮的上忙.
当然, 打嘴炮想当官性格的我, 一定会考虑到:
没人逼你做, 却笨到自己主动挖个洞, 往下跳. 给自己找麻烦. 做出来, 没人感激你, 反而还惹毛一些人. 做不出来, 别人逮到机会落井下石, 说你是大嘴巴, 爱吹牛. 若乖乖按照现有 NB 业界的安全方法来做, 跟大家都一样. 老板拿不出对照组来评估, 当然满意你的绩效.
如同银行的信息长爱用 IBM 的软件, 如果出问题, 他可说国际级银行都用 IBM, 拿其他银行来当挡箭牌. 采用一家名不经传, 可以省 200 万成本的本土信息厂商方案, 万一出错, 让银行赔上几千万时, 铁定被迫辞职或降级. 老狐狸的信息长当然打安全牌.
但工程师性格的我会想: 如果在相同硬件成本下, 能用软件充分发挥整所有硬件功能, 创造出更多附加价值, 而且软件成本是在人事上, 卖 1 万台跟卖 100 万台, 是相同的成本. 当 CPU/VGA 硬件能力成长时, 软件功能也随之成长, 而且是以加速度来成长.
另一方面, 软件也可用来压低硬件成本. PS3 因用软件搞定 PS2 兼容问题, 而省下 PS2 Chip 的成本. 那 EeePC 可不可以如法泡制 ? 若有 5 成把握, 我就放手一搏. 只要一台省下 1 块美金硬件成本, 卖 300 万台就省下台币 9000 万, 若失败, 只是多花 2 个人月的成本, 这个算盘实在是太划算!
而这些观念也获得一名协理的支持, 帮忙我跟 BIOS/HW 部门沟通. 要是我出面的话, 根本没人鸟我.
这位协理, 以前华硕还小时, 我就跟他有过几次合作经验. 这次被关到北投春天酒店, 他 review 某个卡了1 个多月的软件问题时, 我马上提出解法. 2 个小时后, RD 回报已经解掉问题, 给他留深刻下印象. 后来在正式成立 EeePC 事业处之时, 他在 Jerry 面前也帮了我不少忙.
———————————————————————
一些 PM 开规格时, 因没有深厚的技术背景, 为打安全牌, 常常就是:
1. 照抄大厂 (DELL, HP, Acer)的规格
2. 照收 WinTel 的 roadmap.
3. 照收 component/software厂商的 solution.
例如每家都配讯连的 PowerDVD, 在 UI 上打上公司 LOGO 来自欺欺人这种做法只能做到消极防御, 无法积极攻击竞争对手. 搞到最后, 大家功能都一模一样, 只爽到讯连.
而 Microsoft 在 MCE 2005 上推的 SideShow, 其起因是 PortPlayer 的 MP3 chip 被 Apple 取消用在 iPod上, 而改用 Samsung 的. 为了活下去, 它就跑去向 Microsoft 努力推销 SideShow 观念.
SideShow 说穿了, 就是把PortPlayer 的 MP3 Player (成本 US $50) 黏在 NB 背板上, 让 NB 同时有 X86 CPU 跟 ARM CPU. 当 X86 CPU 关掉时, 可用 ARM CPU 的 SideShow 功能来看 picture, 听 MP3, 和看 e-mail 通知.
有没有搞错 ? 随身携带的手机都可以做这些事. 一般 User/ 根本不需要这种华而无用的功能, 而且 SideShow 一直开着会耗掉 NB 电源. 在 NB 上加 SideShow, 获利者是 PortPlayer, 而倒霉的是 NB 厂.
在 EeePC 会议上, PM 计划导入某家 PCI-E 3G 无线网卡, 内建在 EeePC. 同时要求软件团队来协助. 有没有搞错 ? 应该是这家公司要从头包到尾, 自行负责, 它如果做不来, 还有其他家的方案. 哪有动用内部资源去帮外面公司赚钱的道理. PM 到底是领 EeePC 部门的薪水, 还是外面公司的薪水 ?
在会议上我就开炮, 认为最重要的是, 赶快推出内建 BlueTooth, 跟能轻松与各家 3G 手机联机的软件. 不必为 3G 上网的功能, 还要让 USER 负担 3,4 千元去买额外的 USB/PCI-E 3G 硬件. 况且用 3G 手机, 可马上解决:
1. 全球各国 Field Test 的问题
2. 高速移动时的联机质量,
3. 让 3G 手机的电池去负担天线/3GChip 的电源, 不用耗掉 EeePC 的电力.
便宜, 好用又省电. 对 EeePC 价格, 软件团队, 及 User, 是三赢的局面.
就是这种鸡婆个性, 常常捞过界, 挑战别人的专业, 无意间就得罪别人. 但我觉得, 工作除了赚钱, 还要有理想, 外带对自我技术的提升, 看看自己的底限为何. 如果自己多花些时间, 从使用者的角度, 来改善产品质量, 帮 user 省钱. 而不是已交差了事的心态来做事. 当参与开发的产品能大卖时, 多分些 Bonus, 能获得工程师最好的工作满足感跟合理报酬
Jerry 看到 EeePC 大受欢迎, 冲到 Amazone 网站最受欢迎 NB 的第一名时, 决定把这堆妾身未明的散兵游勇组织起来, 成为正规军. 于是成立EeePC 事业处, 地位跟规模将与 NB/MB/手机事业处平起平坐.
———————————————————————
原先我喜欢当工程师, 独自躲在安静的角落, 把上级交代的事做完后, 就天马行空想新点子, 上网找数据看论文, 然后动手实作出来. 坦白说, 软件工程师是蛮幸福的, 只需一台 PC, 有上网环境, 就可以实践创意. 不需像硬件工程师需要一堆设备跟很多单位配合, 才能动手.
然而经历过 6 年不受重视被冰冻的职场生涯后, 我的态度改变了.
公司规模变很大后, 一些事情都慢慢变复杂, 日后能给我自由空间发挥的直属高级主管恐怕也不多见. 而且遇上一些案子, 高层会先考虑需求的研发/维护人力, 来交给一个 team, 而非一个人来执行.
工程师的我永远是边缘人, 只有发生问题解不掉时, 才会想到我. 而论功行赏, 封官加爵时, 根本忘记我的存在, 铁定没我的份.
成立有战斗力的研发团队, 是很费时费力, 还要靠运气(产品大卖). 但要摧毁它, 只需派个只会打嘴炮的主管, 不出半年, 很快就搞定.
与其如此, 倒不如自己出任管理阶层, 参与高层主管决策, 来争取预算, 在自己业务范围内, 营造出良好软件开发环境, 吸引志同道合的 RD, 将所学 10 几年的软件经验承传下去, 为公司培养具执行能力的中阶干部, 来担任士官长的角色. 只要具工程师性格, 有创意跟执行力的中阶主管, 越来越多时, 我在公司内部, 才不会到处被视为麻烦制造者.
若 EeePC 打算要冲出 500 百万台的大量, 需要成立更多课级单位, 应付现阶段出货需求, 着手开发未来次代机种, 以及研发新软件技术, 拉高技术竞争门坎, 降低生产成本. 到时候就急需一群能独立作战, 充分授权的士官长来贯测执行.
软件产业不是比人多, 而是比头脑好的产业. 派个没实务经验的软件主管, 马上去大陆找一堆 2, 3 百个软件人员来成立软件部门, 没有 20 几个中阶干部来有组织规划, 落实执行, 铁定是一场灾难.
我原本打算只成立小型团队, 从 2007 年 7 月时慢慢找, 才找到一些合适人员. 但因接下来 EeePC 的延生机种, 系统客制化, 以及相关软件的开发, 让高层一直催促我要储备更多的软件人才, 来应付未来的产品规划.
要加人可以, 但我要高层先答应, 以后分 Bonus 时, 是要看部门绩效, 而不是数人头. 如果我够厉害, 其他软件部门要用 10 个人做的绩效, 而我能用 4 个人搞定. 到时就分 7 个人的 quota 给这 4 个人.
如此公司可省 3 个人事成本, 而有实质贡献的 RD 可拿到较好薪水, 愿意长期待下来, 自我提升技术, 创造更多竞争力. 造成双赢局面.
另一方面, 若 EeePC 未来销售不如预期, 养不起这么多软件工程师时, 我还能确保部门内 RD 的薪资能优于其他部门, 不用辞退多余人力.
为了引进更多志同道合的伙伴, 极力向高层推荐老战友 Alex, Alex 在华硕任职期间, 曾做过 WebPAD, PDA, SmartPhone 等案子, 后因政治因素辞职去BenQ, BenQ 的第一代 MP3 Player, 就是他做起来的. 最后也因政治因素, 斗不过 BenQ PM 而回锅华硕. (也就是有他这个案例, 我才打消辞职念头, 继续龟缩在华硕内, 等待机会)
他对 Embedded System 硬件架构/省电功能相当清楚, 我跟他合作过 2 款 WebPAD, 彼此具强烈工程师性格, 在系统功能设计上有相同看法. 而他归到 EeePC 事业处后, 马上就抓出一些硬件线路漏电问题, 作为改版及次代机种的改善目标.
我建构软件部门的想法是:
1. 以驱动程序或跟硬件绑在一起的应用程序为主,向外延伸.
2. 用软件手段来求系统稳定, 省电.
3. 用软件手段来降低生产成本.
4. 用软件来降低硬件设计成本, 并能提供更多的附加功能.
5. 成立 “软件 IC” team, 研究 algorithm 搭配既有的硬件设计,
在不增加任何硬件成本下, 用软件手段提升 EeePC 影音质量.
越老鸟的 Programmer 越谦虚, 因为越清楚自己的能力底线. 全球 Open Soucrce 高手的功力是远远胜过华硕软件工程师. 要跟他们拼纯软件应用程序开发功力, 无异以卵击石. 但因公司机密, 无法让他们取得 EeePC 硬件设计图及相关 IC 规格. 而这就是华硕软件工程师能发挥最大价值的所在点:
帮 Open Soucrce 高手解决硬件相关问题, 提供 Library 让他们使用. 使他们随心所欲改机, 修改软件, 很容易将其他 OS移植到 EeePC.
———————————————————————
虽然 EeePC 事业处另有软件部门负责 Linux, 而我是负责 Windows, 但我极力争取在部门内成立 2 个 Linux 开发课.
为此, 找到网通大厂及 IC 公司的两位中阶软件干部, 来负责 Linux 系统稳定度, 驱动程序, 跟工厂生产测试软件等开发工作.
工欲善其事, 必先利其器. 为了赶快进入状况, 花了 1 个多月, 评估 MontaVista 的系统开发工具, 并派 RD 与其合作, 把该套工具从 MontaVista Linux kernel 移植到到 Xandros kernel 上. 有个 sourcecode level, remote debugging 的开发环境, 远比用 printk deug kernel/driver 方法来的精准快速.
打算用 Embedded Linux 手机稳定度的水平, 来要求 EeePC Linux 系统稳定度. Linux 上没有像 MS 在上亿台 PC 上执行过的 WHQL/HCT/DTM 系统测试程序. 商用专业软件工程师跟志工性质工程师做出来的系统测试程序, 两者在性能,可靠度, 后续维护, 跟技术问题咨询上, 是有很大差距的.
而且 MontaVista 有多款 Embedded Linux 手机的成功开发经验. 虽然花上百万来买这套开发软件, 我觉得非常值得. 现在随便一个没经验刚毕业硕士的人事成本, 铁定比它还贵, 而对案子的帮助铁定远远比不上这套工具.
如果 EeePC量够大, 这些 Linux Device Driver RD 也都 tune 上来时. 到时候计划成立一个EeePC Linux Device Driver Certification 课, 要上 EeePCLinux 的 device driver 需先经过这个课来验证. 并同时为 Ubuntu 跟 Google Andriod 的移植来铺路.
从 Google 放出 Android 的 source code 后, 我就一直对它念念不忘. 不出 5 年, Google 必定取代 MS, 而且还会比 MS 更恐怖.
Google 不对 user 收任何费用, 它是向广告厂商,content provider 收费. 只要 Android 铺的越多, 内建到更多能上网的前端便宜 device (手机, Settop Box, MID, UMPC, PC, NB, Game consle), 提供更好更快速的 后端 server 功能及带宽. 那还有谁想想用手机的视讯,订票, 看电视, 查餐厅/停车场等付费数据服务 ? 更何况还有跟 Google Map 结合的免费地图导航功能.
打不过对方, 就加入它, 利用它的力量. 站在巨人的肩膀, 才能看的更远. 不然就会被巨人一脚踩死. 等量产相关工作都搞定后, 我一定亲自下海, 加派人力来做这一块.
对工厂软件下载跟自动化测试软件的开发, 我非常注重. 软件不只可以增加附加价值, , 还可以降低生产成本.
12 月因 EeePC 生产不顺, 两次去上海工厂看问题, 发现有太多改善的空间. 负责生产的工厂单位, 以前接过 AppleMac NB 的代工案, 见识过 Apple 的软件生产测试工具的效能. 当我提出这个观念时, 他们极力赞成, 还一直逼问我何时可以导入, 完全不像其他单位的极力抵抗.
有执行单位主管的全力配合, 这个案子已经成功一半了. 接下来就看我这个部门争不争气, 来兑现支票. 2008 年大陆颁布的新劳动合同法, 会增加生产成本, 现在一堆台商搬去越南来避开, 那是不是以后遇到相同问题时, 要搬去孟加拉国 or 非洲 ? 而且以后冲量时, 有可能下单到其他代工厂. 如果能将生产相关的软件技术, 掌握在手里, 可以避开人力成本跟加快其他代工厂上线速度.
若每台生产成本因而省下 1 元美金. 200 万台就可省下 6400 万台币. 只要公司拨一半给我这个部门当 Bonus, 大家虽然累, 但是会累的很快乐, 累的很有成就感. 不会累的很干.
现请一位主任, 先在台北架起一个工厂软件下载生产测试的模拟环境, 等把相关软件开发测试过, 觉得有把握时, 再去大陆工厂实地上线测试.
PM 规划下一代 EeePC 时, 决定加入TouchPanel 功能. 找来厂商来报价, 结果报一个离谱价格, 对方解释是因需要一颗 USB IC 跟相关触控软件程序. XD! 是欺负华硕没有懂软件的人, 来乱开价的吗 ?
会后马上交代一位高工, 叫他把 USB IC 拔掉, 照以前写 WebPAD 触控屏幕的驱动程序观念, 来降低 Touch Panel 成本.
程序设计俱乐部网站 (www.programmer-club.com)上, 在”用软件仿真虚拟摄影机的硬件” 讨论串中, 我就提出类似用 软件仿真来节省硬件成本的观念. 结果引起某家 IC RD 的对呛, 说要尊重 IC 公司的智财权等等.
就是系统厂 PM 没经验, 太好骗, 才让这些公司获取暴利. 同时也让 IC 公司的 SW RD 瞧不起系统厂 SW RD 的功力. 在 EeePC 上, 如同在 NB 上用 Video Splendid 取代 Jepico IC 般, 我铁定尽全力, 用软件手段, 让这些公司只能获取合理报酬. 同时万一要发动价格仗时, 也让华硕有更多本钱跟对手硬拼.
为达到人尽其才, 落实 RD 要干 RD 的事, 而不变为领高薪的 QT, 我从 QT 部门挑出两位学士测试工程师, 交由华梵大学毕业的副课长带领, 让他们负责 WHQL Test, WinXP image, 在 WinPE/XPE 上撰写测试程序, 而他们表现完全不输硕士级工程师. 让我意外惊喜, 有物超所值的感觉.
我给他们的任务是, 尽量用软件手段改善流程, 来应付大量 XP image 制作, 而不是用人海战术来应付. 薪水分红将比照硕士工程师水平来调整.
为了用以往 DVD Recorder/LCD-TV 的开发经验, 来改善影音质量, 我找了交大应届毕业资讯工程博士跟另一名写 3D Game 的学士, 合作开发“软件 IC”.
原本给他们的 schedule 是半年将 Video Splendid 1.0 移植到到 EeePC (为了 7 月打考绩时能向高层证明), 一年后推出Video Splendid 2.0. 结果花 3 个月他们就移植出来, 并且还写出第 2 代的 prototype. 真的是江山代有人出, 让我突然觉得老了.
OLPC 的 EC firmware RD 也应邀加入. 为等他把 OLPC EC 处里完, 我等了 3 个月. 因他有 x86 BIOS,Window Application, 及 EC 的经验. 只需把他教会 ACPI Driver 跟 device driver 相关技术, 以后我就可以专注规划从 Window Application/ Device Driver/ ACPI BIOS/EC Firmware 一路打通的架构跟接口, 而由他去操刀执行, 配合 HW RD 的修改线路, 希望能将以往在Bulverde VC上学到的省电设计经验, 落实到 EeePC 上.
———————————————————————
或许有人认为我是在吹牛说大话, 但如同史蒂芬周说过的,
”做人如果没梦想 , 跟咸鱼有什么两样….”
做 RD 就是要有这种 Guts. 做不出来, 顶多浪费 2,3 个月, 大家走回头路, 继续当 WinTel 的顺民, 乖乖照传统 NB 的路子走, 但若做出来, 竞争对手想要照抄, 可没那么容易抄.
硬件线路或许可以照抄, 但散落藏在 App/Driver/ACPI BIOS/EC 中的软件, 可就没那么容易抄. 如同威腾可以抄袭联发科的DVD ROM server chip, 但无法抄袭其韧体. 于是原封不动将联发科韧体套到自家的 chip 上, 结果被活逮, 判赔美金 5 千万元.
我没有名校情节, 不会非台清交不用. 我在清交大的学业成绩是吊车尾. 因为知道自己程度差, 所以非常用力拼研究所考试.
在“我的 DDK 学习经验”中说只要黑手工程师. 10 年后我还是说同样的话. 部门只有 2 位是清交毕业的. 我重视的是做事态度, 学习能力以及最重要的绩效.
现在这些同事在加入团队之初, 我就先说不保证高薪, 也不要以为 EeePC 可以一直热卖下去. 要有较好的薪水, 就要靠大家努力, 为公司创造利润.
为防止保障年薪后, 马上就在公司内摆烂, 让主管对他无可奈何的现象. 我是不会采保障最低年薪的手段来聘人.
鸿海处理这类应征者是: 你敢拿我就敢给, 要高薪可以, 先达到业绩再说, 没达到就一路打折下去, 从 1 千万打折到最后只剩 100 万, 天天逼进度, 让那些自以为身价非凡的人, 待不满一年, 没等到股票, 就主动辞职.
就有个手机团队从工研院跳到广达, 然后跳到鸿海, 结果不到一年就辞职回工研院.
连我这个大头目都要亲自下海 coding, 不准团队中存在只会打嘴炮, 不会做事的人. 就算以后干到管理阶层, 也绝对不能放掉技术的本. 自己没技术能力, 如何去带领更菜的工程师, 看出部属的错误之处. 又如何能着规格变化来持续改善或推出全新的软件功能 ?
没有一套软件功夫能让你吃一辈子, 除非你垄断产品的某个研发流程, 建立山头完全不让别人进入来取代你. 让上面的人想动你时, 考虑到阵痛期的成本, 就不敢轻易开刀. 自己的官位跟薪水远远凌驾在公司整体利益之上. 大公司一代不如一代, 技术断层, 山头林立的现象, 就是这样造成的.
也告诉他们, 总经理公开宣示, 在华硕分家后, 会以绩效作为分红主要考虑, 大幅拉开 RD 间的待遇差距, 全力留住具竞争力的员工, 并且每年会 fire 不合适的员工, 来促进人才流动.
若 EeePC 能在 2008 Q2/Q3 继续站稳脚步, 我铁定在大陆成立软件团队. 现在上 Google 查 device driver 相关的文章, 都出现一大堆量多质精大陆软件工程师写的技术文章, 远远超过台湾软件工程师的文章.
5年前在苏州成立软件团队时, 就感受到大陆工程师在困境中,力争上游的精神. 在东北老家, 父母务农一个月才赚人民币 200 元, 只身到苏州, 四个人挤在一间破套房内. 只能靠写程序才有出头的一天. 那种拼劲, 置死地而后复生的精神在台湾已不复见.
当初还没进华硕, 每月领资策会35 K 的死薪水, 租间在三重贫民区的顶楼房子. 老婆怀孕 8 个月, 夏季时太阳晒在屋顶, 顶楼房子热的像烤炉, 怕开冷气花钱, 就只穿条内裤, 吹电风扇, 假日窝在计算机前写程序赚外快. 帮一家 CNC Controller 厂商写 Win95 Device Driver, Sample Code, SDK Library, Document,InstallShield 安装程序. 那时候真的是拼劲十足, 程设功力突飞猛进.
我想现在大陆还有一大群这种有拼劲, Programming 能力够水平的软件工程师. 如果把他们组织起来, 好好训练, 并给予合适报酬. 只要抓住趋势, 全力猛攻. 这个团队的战斗力会相当惊人.
———————————————————————
在台湾, 继前波蓝领阶级失业潮后, 白领阶级也开始失业. 我就常收到失业的美国 40, 50 几岁华裔软件经理的履历. Andrew Grove 在“Only the Paranoid Survive” 中写到, “公司没有天生就欠你一碗饭,想吃饭就要靠自己去争取”.
台湾的软件工程师凭什么要求高薪 ? 现在有些工程师是躲在大树底下好乘凉, 公司大员工多, 可以混水摸鱼, 滥竽充数. 但你能躲多久 ? 等到 40 岁被辞退又找不到工作, 小孩教育费, 全家生活费, 20 年房贷都要钱. 到时候要怎么办 ?
华硕低月薪, 高分红(不一定高, 要看绩效)在业界中是出了名的, 当初两位有家累, 房贷压力, 30 好几岁的高工, 冲着我画出来的大饼, 甘愿减薪加入团队. 对他们, 我有一份道义责任, 以前干工程师, 搞砸就只有自己吞苦果, 现在搞砸就有一堆人跟着倒霉.
分家后, Jerry 定下游戏条件: EeePC 事业处未达业绩标准, 核心主管减薪 40%, 基层工程师不受影响. 相反地, 若超出预订业绩标准, 就以比例来多发分红. 不久后就要跟他画押留证据, 免得分红时候, 空口无凭. 害惨底下这批工程师.
我宁愿用比华硕股票低的公司离职员工. 又套句史蒂芬周的话:
“只要有心, 人人都是食神”
就算台清交毕业的 RD, 一星期就能搞定的案子, 只要有耐力, 有毅力, 有兴趣, 若他愿意花 2 个月来搞定. (况且现在网络上一大堆 open/sample code 可供参考) 1个, 2 个, 3 个案子.. 一直做下去, 到最后他的技术能力决不亚于偷懒的台清交硕士.
我只听过玩 Online Game 玩到暴毙, 还没看过写程序写到暴毙的案例. 如果部属写程序写出兴趣写到上瘾, 就像玩 game 杀终极大魔王般, 我根本不用管, 他自己就把案子做出超过我预期的效果.
联发科的开国元老原本在联电中, 是被当皮球踢来踢去. 宏达电开张第 4 年, 资金烧光, 差点倒闭掉. 华硕在 Intel 放出要做 MB 消息时, 走掉一大批 RD. 在初创阶段, 上述公司哪有本钱请素质超好的 RD ? (华硕现在有两位协理, 是光武工专跟淡江大学毕业的.) 但还不是最后被他们搞起, 做到股王.
我想找的, 就是有理想, 肯学肯拼, 爱写程序的 programmer. 因自知条件比不上台清交, 所以会谦虚会认命去拼未来. 而不是毕业名校, 待过大公司, 自命身价不凡的 programmer.
我就是要这种拿穿草鞋的精神, 去跟穿皮鞋的公司拼. 用龙虾鲍鱼做出好菜不稀奇, 用青菜豆腐做得出来才厉害. 只要肯学, 程度不要太差, 我愿意花上 1 年, 传授 coding 经验, 把他带上来. 依绩效给他对称的待遇.
我印象非常深刻的事是, 有记者访问朱经武博士(超导体先驱学者), 说一星期只有一个晚上能休息, 会不会觉得太累, 结果他回答,
有人肯帮我买数亿元的设备, 让我做我喜欢做的事, 我高兴都来不及了, 怎么会觉得累, 还觉得时间不够用.
所以有几个这种部属, 我就可以天天到其他部门, 串门泡茶啃瓜子.
———————————————————————
最近看的一本书“科技顽童沃兹尼克”, 感受相当深刻, 心有戚戚焉.
Worziak 提到他非常喜欢在 HP 当工程师, 而当 HP 成立项目, 派出至少 5 个人以上的团队, 来研发类似 AppleI/II 的产品时, 一些经理人觉得受到威胁, (因 Apple I/II 的软硬件是 Worziak 独自开发出来的) 完全将他柄除在外, 即使他卑微到只想当个小小打印机接口工程师都不行. (当妒才, 不求长进, 垄断山头的经理大量冒出时, 就是公司停止成长的征兆)
因 Worziak 做过 Artira 的Ping-Pong(乒乓)/BreakOut(打砖块)电动游戏, 将其 TV output, 游戏杆, 影音效果的技术, 运用在 Apple II 上. 而他也做过盗打长途电话的蓝盒子, 将其音频技术, 运用在录音带来储存 AppleI/II 程序的技术上. (以前做过乱七八糟案子的技术能量, 总有一天, 会在某个产品上整合)
又他知道如何用软件去控制硬件(写电动游戏时累积下来的软件功力), 把原先以纯硬件观念设计, 花 22 颗芯片组成的软盘控制器, 改成只花 2 颗芯片, 搭配复杂的软件设计, 在 2 星期内做出安静超快的软盘控制器. (不要傻傻听信 IC 厂 Sale 的话, 去买又贵又耗电, 性能又差的 IC, 只要肯动头脑, 了解基本原理, 软件的确可以省下许多硬件成本)
在设计 AppleII 时, 用最便宜的方法, 支持现有美国电视机输入频率, 让 user 不用花钱另外买 monitor. 而且只用 Apple1 一半的芯片数目, 就做出功能大幅超越 Apple1 的 AppleII. (不要花钱装内建的 3G 网络卡, 利用蓝芽连接 3G 手机的能力, 帮 user 省钱, 而不是害 User 多花钱, 让一堆 IC 公司利用华硕去赚暴利)
为了坚持 Apple II 应该有 8 个扩展槽, 与贾伯斯起第一次争执. 而被猪头高阶主管主导的 Apple III, 则惨遭开放式的 IBM PC屠杀. (不要为省 connector 的钱, 而把 EeePC MINI PCI-E/DRAM 扩展槽拔掉).
现在 Jerry 非常忙, 比周杰伦的牛仔还要忙, 根本没时间看我的规划方向, 只要解决掉他觉得 EeePC 不好用的地方, 就不会被他钉到墙壁上. 另一位硬件出身的协理相当 Open mind, 这本书就是他推荐我看的, 还蛮支持我对软件附加价值的想法.
最后只要满足每个 PM 的出货 schedule, 就不会天天来烦我. 只要部属有 meet 进度, 我根本不会去管他们要做什么. 让他们自由发挥创意, 或者提早下班. 反正最后是看绩效, 而不是看你每天待在公司的时间, 来决定升迁.
绩效是很模糊的东西, 做立即影响出货的 XP image, 跟做花 1,2 年才看得到绩效的 Algorithm. 何者孰重? 有些人就是运气好, 捡到轻松, 主管误以为绩效高的案子, 而有些笨蛋就是想挑战 mission impossible.
又套句史蒂芬周说的话:
“贪官要奸,清官要更奸,不然怎么去对付那些坏人?”
当主管的, 要比部下更精, 不然怎么去打出公平考绩.
在程序设计俱乐部上, 我有注意过一位 Harrison 网友, 他持续 2 个多月问我有关 ACPI Driver 的事, 我叫他去看一些公开数据, 从他问的问题, 越来越接近核心. 我就知道他真的有看这些数据.
而且他说, BIOS RD 的他想搞 ACPI Driver, 是个人兴趣, 不是公司硬逼. 我就是想找这种人来加入团队. 但因他误以为, 能进华硕的RD 都是高手, 想继续练功, 练到更有把握. 所以婉拒我.
但我告诉各位, 公司一大后, 有高手也有滥竽充数的夹杂其中. 而能撑到最后的, 通常是那些有毅力, 有耐心, 有危机感, 有执行力的人. 只要放在以技术为主, 没乱搞政治的工作环境中. 他们就会自动自发, 甚至发挥出出乎意料的表现. 也不用管理阶层天天在后面逼他们.
况且我会先给旧版程序的 code, 让他们 trace 打基础, 有段缓冲期, 还有老鸟可以问问题, 然后再要求他们开发下一代的新功能. 像我现在, 除了开一堆会, 回一堆 E-MAIL之外, 还有时间写 code, 上网查技术数据, 就是靠他们自动自发, 让我省下许多时间.
———————————————————————
因 104 人力网站只能列出简短描述, 导致我无法细说要求条件, 也无法让应征者充分了解我的规划跟行事风格.
因不想浪费彼此时间, 若有意应征的人, 请先评估个人期望待遇与发展方向, 是否能符合我提出的这些条件, 才来投履历.
若有兴趣的, 请到104 人力银行, 或华硕人力网上留下联络方式. 并注明应征 EeePC 事业处软件第五部软件工程师. 我只管 EeePC 事业处软件第 5 部, 其他 EeePC 软件部门不是我管辖.
我不办考试, 有意者请拿做过的作品, 来跟我闲聊. 目前我需求的人力有:
1. 美术设计人员: (1名)
需会操作 MAYA 等 3D 软件并转成 Direct3D 的格式, 会平面设计及网页撰写. 需跟工业设计中心(MID) 合作. 重点在设计 Application 的外表图案. 在相关产业有 2 年以上的经验.
2. Window 应用程序开发人员: (2名)
需 MFC 2 年开发经验, 工作项目初期负责 WinXP Image 制作, 开发 WinPE上的工厂测试程序. 及开发次代安装光盘程序, 若学习能力强, 不排除日后从事 Windows Device Driver 开发工作.
3. Windows Display 驱动程序开发人员: (1 名)
有在 IC 公司从事过 Windows display device driver 开发经验. 工作项目: 初期负责充分发挥EeePC VGA chip 的硬件功能, 撰写 VGA Memory/3D Engine 测试程序 on WinPE or XPE. 后期负责维护/升级 ASUS VGA Display Driver Hooking 技术. (这一块技术我可以下指导棋)
4. Windows LAN/WLAN/WiMax 驱动程序开发人员: (1 名)
有在 IC 公司从事过 Windows WLAN/LAN device driver 开发经验, 具 NDIS,WinSocket 等相关技术背景. 初期负责 EeePC 网络(LAN/WLAN/WiMax) 相关问题并 trace IC 公司提供的 device driver source code, 撰写 WLAN/LAN/3G 相关测试程序 onWinPE or XPE. 后期负责 EeePC Window base 通信标案的相关技术.
5. Linux LAN/WLAN/WiMax 驱动程序开发人员: (1 名)
同上, 只把 Window 平台换成 Linux 平台.
6. Linux Device Driver开发人员: (2 名)
初期负责 trace and modify Linux device driver open source, 确保在 EeePC 上的稳定度, 后期撰写 Device 测试程序.
7. Linux OpenGL开发人员: (1 名)
有在 Linux 2.6.0 版以上开发过 OpenGL 的经验.
最后若认为自己有潜力但不符这些条件的人, 也可以拿自己写的程序代码或产品来跟我谈.
有个副课长说我, 这样搞法, 恐怕没几个人来面试. 但我告诉他, 我就是要这样恶搞, 找不怕死的人进来. 宁愿这阵子, 咬紧牙关先撑住 EeePC WinXP 量产的压力, 也不要急就章, 找到不合适的人. 若在台湾找不到, 就去大陆找.
若 2008 年 Q2/Q3 跟 HP/Acer/Apple 对干后, EeePC 还能在领先群中. 确定 EeePC 事业处有足够盈余来养更多软件工程师时, 软件第 5 部会扩大营业, 在台湾跟大陆, 再做一次征才活动.
———————————————————————
工程师性格强烈的我, 因在网络上留言直言不讳. 多年在 BBS, www.23xx.com, www.programmer-club.com 上留下多篇文章, 公司内部早就有人看我不爽,多次寄这些文章给 HC, Jerry 来背后告状. 我相信这篇文章, 不久就有人背后告状, 转寄给他们. 为了节省他们的麻烦, 我自己经先寄给 HC, Jerry.
被公司受聘, 只要不涉及公司商业/技术机密, 并不代表就没个人发言权利. 连 MS 都有个内部员工网站, 可开放给外人观看, 我常常看到有 MS 员工在里面干醮自家公司.
主管跟部属下班后, 大家都是普通的老百姓. 没有谁比谁大. 我也做好随时离职的准备, 手上的资金, 让我 30 年不工作都不成问题. 只要创意/执行力还在, 到其他公司还是可以发展出进阶或全新的系统功能. 我也相信还是有其他公司的总经理, 有雅量来容纳我这个异类.
华硕不就是因 4 位创办人不爽老东家宏碁, 离职后自行开业. 我敢肯定说, 华硕绝不会是最后一家, 因这种原因而成立的成功公司.
微星老板就非常有危机意识, 我上经济部办的” 94 年研发经理养成班”时, 就有 7, 8 个微星员工参加, 公司补贴全部费用, 也不用加班来补上课时间. 而技嘉老板跑去开宝嘉, 代理标志汽车. 从这点, 我就断言微星会赢过技嘉. 当老板都开始不务正业时, 你还能期望公司会有多好 ?
已经脱离“为五斗米折腰”阶段, 若是没人收留我, 那就自己当自己的老板, 开 Window 驱动程序教学课程. 或当自由职的技术顾问, 日子还是一样快乐. 未来我可不想象 HC, Jerry 般, 天天开会从早开到晚, 坐飞机全球跑来跑去, 钱够用就好, 生命中也不是只有写程序这项乐趣. 等女儿上大学后, 我就不干了. 要去她的学校念博士, 反正现在考博士, 只要准备书面报告跟口试就可以.
最后祝大家都有个满意工作, 而我希望下次长篇大论时, 就是说退休后要做什么事.
看着桌上两只 BANDAI MG 版 Hi-Nu/UNICORN, PG 版攻击刚弹的素组模型, 跟一堆变形金刚: 柯博文, 大黄蜂, 飞轮, 黑魔, 毁灭者, 判官, 密卡登. 哦, 对了还有藏在柜子里的 1/350 大和号, X-Wing, Y-Wing, AT-WALKER, 何年何月才能帮他们改装甲, 黏蚀刻片, 来上色, 做旧化 ? 虽然网络有人代做模型上色.但做模型的乐趣, 就是看一片片塑料片, 在手中慢慢成形, 而且一台比一台做的更细致更逼真.
写到这里各位大概猜出我的性格, 没错, 是宅男型工程师. 我找的部属, 都是宅男型工程师.在我们这边, 铁定没有莺莺燕燕, 让你分心, 只有超安静的环境, 让你专心工作.
//
//
//
//
//
标题: 我的 DDK 学习经验
发信站: 交大资工凤凰城信息站 (Fri Oct 3 13:02:58 1997)
转信站: cis_nctu!news.cis.nctu!news.csie.nctu!phoenix
来源: weberl.asus.com.tw
从 97 年 1 月我在 Program 版 Post 鼓励有心网友学习 Window
Device Driver 以来, 陆续收到一些人询问如何下手.现在我
已没时间玩 BBS, 因除了 3D 显示适配器 Driver 要 Tune 外,
还被派去做一些杂 7 杂 8 的事情. 趁教师节比较有空,
写下这封我学习 DDK 的经验, 如果那站的站主觉得对网友有
帮助, 就尽管利用, 不用客气. 但需注明出处, 并严禁有任何谋
利举动(如剽窃修改后, 来赚取稿费), 曾对一些网友提出如何在
MFC 中用 I/O Port Function 的问题, 回答了 6 次, 让我觉得很
烦烦烦烦烦烦. 希望这种情况不在发生.
本文供分 3 段: (1) 为何我要学 DDK (2) 学习 DDK 的过程 (3)未来
可能的发展.
(1) 为何我要学 DDK
我是信息科班出身, 就读过交大计工, 清大资研. 历经 78,79 股市狂飙, 退伍后,
认为写程序没什么前途, 也无法撑到 38 岁. 但 MBA 却是越老人脉越多, 收入
也越多, 所以进资策会, 一面工作一面准备 GMAT, 但没申请到理想的学校,
而考外贸协会的人才培训班, 在复试时也被刷下来. 最后认命乖乖学
Window 3.1,
第一年做多媒体数据库项目, 当时连 VC++ 1.0 都还没出现. 就用 Borland C++ 3.0
以纯 SDK 方式 coding,(因不知道有 OWL 这种东西) 事后想起来真是因祸得福,
让我更了解 Window 底层的运作 (不过当时真的觉得很干).
第二年做 Video Editor 是我比较快乐的时光, VC++ 1.0 刚出来, 但市面没一
本相关书籍, 连 MSDN 也一样. 怎么办? 到处找不到资料. 最后用最笨的方法:
用 Debuger trace MFC source code! 然后搭配 Video for Window1.1 版 SDK 来
coding, 当时傻傻得, 以为可以做个 VideoEditor 跟友立拼, 所以常常加班到 10
点, 但后来 Video Editor 结案后就放到储藏室, 而 Aldus 被 Adobe 并购, 友立也
把 PhotoStyle 卖给 Adobe. 这件事件让我得到个教训: 软件包不好做, 更难与
国际大厂同类型产品竞争.
因有时 Video Editor 会利用 MCI Command 来控制 AVI/FLI 播放, 但觉得很奇怪, 那个
MCI Driver 到底在搞什么鬼? 在好奇心驱使下, 翻 MSDN 的 MultiMediaDevice Driver
来看, 才搞懂 MCI Driver 如何与底层的 Video/Audio Driver 沟通.
第三年是最黑暗的时期, Team Leader 包个 Multimedia Title 来做(还曾打算向敦煌科技
包 Game 来做). 美工, 企划, 全和在一起, 而要我用 Director 3.0 的 Lingo 语言来写
Title 的 Program. 我便开始消极抵抗, 同时自己偷偷用 MFC +WinG + 32 Bit Assembly
在 Win 3.1 上写个类似 Director 3.0 的 Engine. UI 及绘图引擎都完成, 而且播放速度
比 Director 3.0 还快. 但卡在不知道如何设计 Script 及 Interpreter. 最后只好做罢.
然而转折点就发生在这一年:
应台北计算机工会之邀, 开门“Windows 影音驱动程序剖析”课程而与童子贤先生有一面
之缘(当副总的他竟跑来上我这无名小卒的课), 也保留他一张名片. 另外帮别人写 Motion
Control Card 的 Dos Driver 来用在 CNC 上, 对 Driver 开始发生兴趣, 原来写 Driver 的
利润颇丰.
第四年, 黑暗的日子终于过去. 参与 IBM VisualAge for Basic 的 Visual Component
开发, 用 VisualAge for C++ 3.0 来 coding, 过了一段无任何相关资料的日子, 还好
从利瓦伊那拿到 OpenClass source code, 发挥 tracing 的精神, 终于顺利结案. 这年在
某计算机展中遇上任职 IBM 的大学同学, 被他讥笑还在米仓中当米虫, 让我心理不
好受. 也使我思考, 只会 coding 的我未来要何去何从, 难道要过着一年换一个专案
的日子吗? 然后 40 岁时会变成怎样 ?( PetShop Boy 的” Being Borning”在我脑中响起…)
幸好碰上一个影响我很大的同事, 他那时也刚帮人写完一个 Window 95 的 VxD,
于是向他讨教, 并学得如何收集相关资料, 练好后就接个 A/D D/A 卡的 Win31/95
Driver CASE 来做, 写完 Win95 觉得不过瘾, 便拿 NT 4.0 DDK来看.
另外他有事没事拿 ASIS 电子周刊给我看, 当时正报导 PC97 的 specification: ACPI,
AGP, OnNow等新技术, 我看完就知道大好机会来了.凭做 A/D D/A 卡 Window Driver
的经验, 我知道随着 Win95 的普及, 这些硬件卡没有 Win95 Driver 根本很难卖到欧美.
PC97 规定了 Intel 的硬件设计如何跟Microsoft 的 Window 做结合, 而接口就是
Window Driver! 加上主板厂养的软件工程师只会写 BIOS or 8051, 对 Window Driver
根本是听都没听过, 但 PC97, 98 是必走的道路, 所以一定要找到会的人来做.
而这时候我又要换另一数据库相关的项目(我最讨厌做 MIS, 成天与数据, 报表奋战,
有够无聊). 于是上网络找工作, 想到手头的童子贤名片, 就试投华硕看看. 没想到
一试便上, (不过在面试时被嫌在资策会待太久, 恐染上不良习性). 进华硕后, 感觉到是
Right Man in Right Place. 终于可以一展抱负, 有明确的目标, 不再虚度时光, 也不会被别人
嘲笑是米虫. 更重要的是有成就感, 想想做的专案, 是要卖到全世界的产品, 而且是与一
些国际大厂竞争产品上市时间. 再也不是作完往仓库一摆的东西. 再者华硕目前员工人数
少, 业务扩展迅速, 加上公司高级领导阶层非常重视研发实力, 只要有能力的人, 不怕没升
迁机会. 不像宏基已有太多员工, 没什么表现能力的机会, 且升迁管道太挤了.
(2) 学习 DDK 的过程
要学 DDK 首先要把 Window 的底层基础练的扎实. 但一般人对学 Window SDK 都
视为畏途, 更何况是底层的东西. 从 Win31 到 Win95 变化比较多得, 我个人认为是:
Multitasking, Plug&Play, MemoryAddressing.
有人问我说, Memphis 都快出来, 还要花功夫看 Win95 or Win31 吗? 我认为还是要!
原因是:
a. Memphis 不是完全重新改写, 理面的一些观念还是沿用Win95.
b. 目前市面上尚未有大师级的 Memphis 相关书籍, 如果有也只是趁火打劫类型
的书, 而台湾的书商, 作者最会搞这种把戏来 A 钱. 如 Win31/95 方面已有一些
大师的书籍, 如 Andrew Scrullman, Patt Metrick, Richard Jeffery, Walter O’ney,
Charle Patzold 等大师. 你不去看大师级的书, 反而去看 “快快乐乐学 Memphis”,
“教你 21 天学会 Memphis”这类垃圾书, 真是在浪费你的时间及金钱.
学 DDK 的第一步准备功夫是把英文阅读能力练好, 你别指望书商会出中译本.
因这类书的卖相太差, 比不上 VB, Delphi, JAVA这类较大众化的书. 再者要找到够
格的译者很难. 要译好是要花相当时间, 那还到不如去写些轻松的书, 稿费也赚得多.
接下来就要练基础工夫, 如同张无忌花了 6 年时间练好九阳真经, 等到练干昆大挪移
时只花数个时辰就 OK. 要如何练底层基础呢 ? 勤看书, 勤 coding 及 Trace 别人写得 sample code而已.
即使是天才型的 Programmer 也是要看书, 因 Window 不是他设计的, 必须了解 Window 才有办法下手
.. 而非像写 Algorithm 方面的论文般, 自己定assumption, Lemma, 导出 Theme, 下 conclusion 就完成.
所以一些刚入社会的研究生最好先调整自己的心态.
以往我是读一些大师级的书, 如:
“Window Programing”的 Charle Petzold
“Undocument Window”系列的 Andrew Scullman,
“Win95 system Programming Secrets” 的 Matt Pietrek,
“Advanced Windows”的 Jeffery Richter
期刊的话是:
Microsoft System Journal,
Doctor Dobb’s Journal,
Window Developer Journal. 这本期刊是我认为学 DDK的人必要订阅的!
几乎过个 1, 2 期就会刊登 Window Device Driver 相关的文章, 而且
理面有位 Paula 女士主持的 NT 专栏, 写的很深入, 不是市面一些标榜 NT “大剖析”
之类的书籍所能比拟. 在 Andrew Scrullman 的“Undocument NT”尚未问世之前,
它是我觉得最有深度的专栏.
接下来就谈与 Driver 有直接关系的数据:
Device Driver 的书籍, 我从 Win31 开始说起:
“Writing Windows Device Driver and VxD”, Karen Hazzen, 第 1,2 版 是最适合写
Win31 Driver 的参考书籍. 也有一本白皮的 “WritingWindow Device Driver”,
我认为它的参考性很低, 因它光抄 Win31 DDK Function Description 就花了 50 ~
60 几页, 有 A 钱之嫌.
Win95:
那当然是首推“System Programing for Win95″, Walter Oney 这本巨作. 我曾因翻
Chapter 11 ~ 13 翻到书页掉落, 而重新再买一本.Walter Oney 既出, 谁与争锋.
有这本就够了! 也没有人有胆来挑战他.
WinNT:
唯一的一本: “The NT Device Driver Book”, Art Baker. 很有系统的一步一步介绍
如何写 NT Kernal mode driver. 先看这本书然后再看 MS 的 NT DDK onHelp 会
让你较容易了解. 当初没这本书时, 我刚开始看 DDK Help 是看得满头雾水.
最好搭配“Inside Windows NT”, Helen Custer 一起看, 因为 NT 底层已经导入
Object Oriented 观念(WDM 是将 NT Kernelmode driver 加装 Plug&Play 及 Bus handle
等新功能), 与 Win95 的 Virtual Machine 观念相差甚远. 这本书虽是 1992 年出版,
但有对 NT 的核心运作加以介绍, 也是一本难得的好书.
NewGroup and Web Site:
1. Win95 是comp.os.ms-windows.programmer.vxd
2. NT 的话是comp.os.ms-windows.programmer.nt.kernel-mode
3. Window Device Driver Web Site:
http://www.albany.net/~danorton/ddk
http://www.vireo.com
发展工具:
1. 如何要让你日子好过, 一定要有套 SoftIcefor Win95/NT. 千万不要用
MS 的 WinDebug, 它根本是无山晓路用.SoftIce 可让你用 source code
level debuging, 对有 assembly 恐惧症的人是一大福音.(但我还是劝有心学
DDK 的人还是要摸 assembly).
2. VToolsD(for Win31/95), DriverWork (forNT/WDM)
Vireo 公司出的 DDK Tool 让你完全用 C 来写 Driver, 我只能说写 Driver 时,
我已经不能没有它. 由其它还免费附 Class Library source code, 让我 Trace 的
很高兴.
领域知识 (Domain Knowledge)
写 Driver 需了解你要控制的硬件, 如 Driver 有用到 DMA/Interrupt,
建议你看一下 8259, 8237A 的资料. 在这方面, “微电脑界面技术与实作”
是本不错的参考书. Programmer 总有一天会 coding 不动的时候. 但人老成精,
只要你的 Domain Knowledge 够强的话, 还是会有许多公司请你去当技术经理.
而这也是你能克死年轻力壮 Programmer 最大的本钱. 多多看些其他杂志,
接触一些非 Programming 方面的知识来培养你的 Domain Knowledge 吧!
最后最重要的是: 亲自动手做做做做做做做做做!
看数据是一回事, 知道是一回事, 做的出来又是另外一回事. 公司请你来不
是要听你长篇大论, 或是发表多少篇论文. 是要你做个会动, 能商品化的东西.
等你做下去, 踢到铁板, 又找不到别人问, 也没有任何数据可帮助. 再加上
硬件没你写的 Driver 而无法出货时, 那种滋味可是人间炼狱. 我就遇上一次,
东西都出到俄罗斯, 德国的经销商时, 结果发现 Driver 有 Bug, 无法顺利安装. 老大
放话说一星期内没解决, 俄罗斯经销商就要取消订单(天呀! 几百万美金的交易), 我在想,
如果到时解不掉就准备辞职. 后来真是狗屎运, 用一个非常另类的做法(骑摩托车在半
路上想到的), 解决这个 Bug, 保住订单也保住职务.
说这则例子主要是奉劝一些自视甚高的在学研究生, 不要以为顶着高学历,
就可以在社会上一帆风顺(除非窝到学校或财团法人, 政府机构内), 也鼓励一些没有傲人
学历的网友, 只要有实力发挥黑手精神, 照样可以当主管来管一群硕士工程师.
(3)未来可能的发展
看看 WinTel PC98 的规格, 就知道以后会写 Driver 的人比较吃香但目前会用 C, SDK 写程
式的人不多, 更何况是写 Driver, 其实 Driver 并不难写, 只是 Learning curve 很长, 现在大多
初学者怕难没耐心, 都用 VB, Delphi 这类 RAID Tool 来写程序, 都快不知道 SDK 是何物.
更不用说 Window 内部的运作. 除非是走 MIS 路线, 否则以后日子会很难过.
就现实面来看: 用 VB, Delphi 的人太多, 老板要找个人来取代你的职务是很容易得.
就盈余而论, 国内做 MIS 的公司比不上做 PC 硬件, Chip set 的公司, 而且也没有股票可分,
何苦去挤到经济规模小又人数众多的领域内. (但 Year 2000 对 MIS 工程师可是个大利多,
只不过你还要会一些非常古老的程序语言, 而不是懂 VB, Delphi 就没事)
就我观察的结果: 目前主板的软件工程师大都只会 BIOS, 8051. 根本都不懂 Windows
Driver. 不要以为写个 softmenu 的 BIOS 就扬扬得意. 等 PC98 正式上场就有好戏看.
所以在这些公司中有有太多机会来让你表现自己的能力.
感想:
国内一些计算机作家实在是太好混日子, 可以从 VB 写到 VC, 然后还可以”深入探讨”
3D 加速卡. 流行 VB 就出 VB 的书, 一本号称VC++/Borland C++ 圣经的书, 竟然都
没提到 MFC/OWL. 而 Windows95 一出来, 书摊又是一堆 Win95 圣经宝典之类的中文
书. 等着看吧, 明年 Memphis 出来时又将旧事重演. 不只如此, 还故意标榜有博士学历或
具有写作 10 几年的经验来烘抬自己的身价. 有时我看了就一肚子火. 不过这些人还不是
照样继续 A 钱. 真是……, 而国内一些计算机杂志的水平, 大家心理有数, 不用我多讲. 值得
我佩服的, 大概只有侯俊杰, 不过最近一年他好像都只写 MFC 相关的文章书籍, 没写些
Windows 内部运作的文章, 不知这是否跟上次 MattPietrek 来台有关.
总归一句话: 读者要自己小心, 少碰一些“圣经, 宝典”.
最后, 祝大家能找到心目中理想的工作.