上一篇写了许多教科中常写的东西,这一篇写一些教科书中不太写,但是在某些国家已经成为了标准的东西。搞技术,人生无非是如下的五条出路:一、做技术专家,做到李政道、钱伟长或者Linus Torvalds的水平;二、技术管理,瞄准Ray Ozzie那样的角色,当公司的高管;三、自己创业;四、技术市场、技术营销:虽然不搞技术了,但是懂得如何推销技术;五、改行。
在达到这些位置之前,咱们要经历上一篇所列的形形色色的角色。
本篇就是要仔细挖掘一下,一个嵌入式软件的从业者所需要的技术和技能,看看应该从什么样的角度来建立“一技之长”。
我们先抛开个人素质和商业素养,以后找机会谈。
做为一名技术人员,应该怎样选择“技术专长”的成长之路?非常容易迷惑,这是一个事实。发达国家把它做为一项国家工程,各自研究了一套技能体系,并结合资格认定,引导工程师自我成长。就我所知道的范围来说,英国、美国、日本等国政府都有一套体系(参考:1,2,3,4,5)。这里我想把这些国家现有的分类体系,结合我自己的体会,介绍给大家。
首先,我们可以把技术分成三大类:
一、开发技术
二、领域技术
三、管理技术
在这里先罗列一下这三大类的分法。
开发技术指的是完成一个大规模的软件开发工程所必备的技术,比如系统需求分析、系统设计、软件需求分析、软件模式设计、软件详细设计、代码编写与测试、代码集成(Integration)、软件检验(Validation)、系统集成、系统检验等各个环节所需要的工具、模式、流程和知识。
管理技术指的是项目管理和流程管理所必备的技术,比如分工管理、时间管理、成本管理、质量管理、沟通管理、采购管理、风险管理、人员与组织管理等等属于项目管理技术;而变更管理、配置管理、开发环境管理、开发流程选定、知识产权管理等等则属于流程管理的范畴。
领域技术指的是平台技术、界面技术、通信技术、多媒体技术、存储技术、传感与控制技术、信息处理技术、应用技术等等。
从这样的分法我们得到的启发是,不管自己将来要成为专家还是高管,开发技术和管理技术大部分都是必须掌握的。“我”的“不可替代性”一定是在领域技术中去找的。如果某一项领域技术在公司里能够做到数一数二,咱们在那个公司才是不可替代,因为把握替代掉要花更大的代价。如果咱某项技术能够在行业中能够做到数一数二,那么你就具备了成为“Ray Ozzie”的基本条件。
能够做到数一数二的,做到不可替代,一个公司里就那么多。如果退而求其次,就是做个“牛人”。上一篇罗列了不同角色,咱们可以成为这些角色的“牛人”。成为各种“牛人”分别需要在哪些方面牛呢?以后有机会再写吧。
今天先把领域技术分解一下:
一、平台技术包括
1. 特定的处理器,比如对ARM处理器、TI的DSP或者NVidia的GPU等等的全面掌握
2. 特定的操作系统,比如对Nucleus,Rex OS, Linux等等内核的掌控。
3. 特定的软件框架,比如Java VM等VM,特定的应用框架比如GNOME、KDE的掌控(太大了 :-( )
二、界面技术
1.输入处理:通过人类的动作产生的输入处理比如按键、触屏、气味、声波、G-Sensor、
GPS信号等等信息输入的处理技术。
2.输出处理:显示、声音、振动、气味、光亮
由于GUI通常涉及到输入输出,我们把GUI技术划在界面技术当中,比如透彻掌控X-Windows,GTK+, Match box, mini-GUI等等。严格讲的,界面技术指的是针对一个特定的功能,用软件去设计、实现一整套操作、反馈流程,使用户既容易学、又容易记。从这种意义上看,GUI应该属于平台技术,因为GUI是实现用户操作流程的平台。
三、通信技术
1. ISO 1~7 层通信模型某几个层面的设计、实现和维护。
由于无线通信涉及物理层到网络层的变化,通常分有线、无线通信技术。
GSM协议栈、TCP/IP协议栈、TD-SCDMA协议栈都是通信技术范畴。
2. 无线广播技术:DVB-T/H, T-DMB, CMMB等等都是无线广播技术
3. 互联网技术:这里指的是TCP层以上通信协议,比如HTTP, IMAP, POP3, SMTP,FTP等等技术。
四、多媒体技术
1. 声音压缩与解压缩技术:MP3, AAC, AMR等等
2. 图片压缩与解压缩技术: PNG, GIF, JPEG等等
3. 影视压缩与解压缩技术:H.263, H.264, MPEG4等等
五、存储技术
1.文件系统:FAT32, EXT3,JFFS等等
2.媒体技术:内存、闪存、磁盘等等物理媒体特性的掌控
3.存储接口技术:热插拔、冷插拔设备的接口技术
六、传感与控制技术
1.物理化学量输入技术:电位、电流、振动、光、压力等物理化学量的计量技术
2.物理化学量输出与控制技术:电磁、光、热、速度、振动、坐标等物理化学量输出技术
七、信息处理技术
1. 信息输入技术:数据输入、声音输入等等信息输入技术
2. 信息安全技术:加密、解密技术
3. 数据处理技术:数据压缩与解压缩技术、嵌入式数据库技术
4. 信息输出技术:Postscript语言,XML语言,SVG等等通用信息格式输出技术
八、应用技术,特定目的的应用软件的实现,它们往往是如上七类技术的综合应用,比如
1. 浏览器
2. 消息类应用:e-mail, IMPS, MMS, SMS等等
3. VoIP应用
4. 视频通话
5. 媒体播放器
以上八大方面,每一个方面都够咱们干一辈子的。罗列了这么多,希望能够给还在大学有志于加入嵌入式软件开发的朋友,大学毕业后刚刚走上社会的朋友,毕业后做了许多年软件觉得不知道自己该怎么发展的朋友,或者自以为软件就那么回事的朋友,提供一个思考的线索。参考这个分类,理出自己发展的路子。
大学毕业后五年内,我们通常是“干一行爱一行”。
大学毕业五年以后,希望自己能够做到“爱一行干一行”。
自己到底爱什么呢,在整理思绪的过程中,希望本篇具有一点参考价值。
参考:
1. SFIA Foundation: http://www.sfia.org.uk/
2. CWCET: http://www.nwcet.org/
3. 日本嵌入式技能标准建设: http://www.bsw.gov.cn/v/showNews.jsp?NewsID=112407
4. 日本经济产业省:http://www.meti.go.jp/policy/mono_info_service/joho/index.html
5. 独立行政法人 情报处理推进机构 http://www.ipa.go.jp/jinzai/itss