在中国,PC(主要是Windows-Intel体系)软件开发程序员,也就是“纯软件程序员”的“黄金年纪段”较短是一个不争的事实,通常纯软件程序员到了30—35岁就必须考虑变革问题,否则在中国程序职工作硬度普遍较大这一现实情况下,无论是体力还是新知识的接收速率都难以与20出头的年青程序员相比。变革的方法有多种:转向系统剖析师,离开程序设计第一线;转向IT职业培训讲师;转向市场、管理等职位,舍弃技术工作;自行创业等,这种变革方法都是不错的选择。
但好多长年从事技术工作的程序员,假如从事技术之外的工作,可能存在适应问题,市场、管理、自行创业等变革方法自己未必认为适宜。假如在30—35岁以后一直决定从事技术工作,也可以选择转向嵌入式系统开发,也就是纯软件程序员变革成为嵌入式系统工程师。
业界公认:嵌入式系统工程师,包括硬件工程师和嵌入式软件程序员,生命周期要比纯软件程序员长得多,待遇相对也高一些。主要诱因是嵌入式系统多用于工业等领域,在这种领域中,嵌入式系统应用面千变万化,技术成熟程度、可靠性、成本等是决定系统选型的核心问题,华而不实的东西比较少,像Microsoft和Intel那样垄断PC市场软硬件,联合上去从用户口袋里拿钱这些行为无法存在,新技术常常不是被追逐的对象,成熟技术是更容易被接受的,比如8051系列单片机早已使用了20多年,如今依然被大量使用。
笔者正处在这些变革将要完成之时,总结经验教训,笔者提出自己的几点想法,谈一下纯软件程序员向嵌入式系统工程师变革时需注意的一些问题:
1、澄清一个误区——WinCE和嵌入式Linux并不完全等于嵌入式系统开发
目前,一提到嵌入式系统,就容易提到WinCE和嵌入式Linux,还有.NETCompactFramework和J2ME等,许多纯软件程序员,学会了WinCE开发,学会了嵌入式Linux开发嵌入式linux系统工程师标准培训教材2,就觉得自己早已入门或则精通了嵌入式系统开发。虽然WinCE和嵌入式Linux本身只是嵌入式操作系统(eOS),它们均来自相应的PC操作系统——Windows和Linux,.NETCompactFramework和J2ME也来自相应的PC虚拟机平台——.NETFramework和J2SE,这类eOS和虚拟机平台只能用于高端嵌入式系统硬件,比如手机或则PDA,软件开发使用的硬件本身是一个成熟的硬件平台linux mint,比如一部成品手机/PDA,或则一块带有TFTLCD和触摸屏的实验板,这些嵌入式软件开发和相应的PC软件开发非常相像,甚至是趋同的,极少直接和硬件打交道。这类嵌入式系统开发只是嵌入式系统开发中的很小一部份而已,主要用于消费类电子产品的开发,极少用于工业领域。
2、硬件能力的提高非常关键
嵌入式系统开发涉及的知识面比纯软件开发更大,嵌入式系统工程师的付出可能数倍于纯软件程序员。这一方面是由于嵌入式系统是“嵌入”的,也就是用于大系统或则产品内部的广义计算机软硬件系统,十分容易涉及到交叉学科和领域,比如:一个智能电力仪表内部使用的嵌入式系统,开发时工程师就必须懂得电力方面的相关知识;一个智能化工仪表内部使用的嵌入式系统,开发时工程师就同样必须懂得化工方面的相关知识,否则除了不能挺好地完成开发,还可能出现产品难以适应电力、化工等行业特殊环境的问题,甚至可能由于错误开发而引起电力、化工等方面的严重车祸。另一方面就是由于嵌入式系统开发包括了硬件开发,虽然软件开发也很容易直接涉及到硬件,因而提升自身的硬件能力也就成为纯软件程序员向嵌入式系统工程师变革的关键问题了。
对于缺少硬件和电路基础的纯软件程序员,向嵌入式系统工程师变革时,提升硬件和电路能力十分重要。在这方面没哪些捷径可走,一方面是基础知识的学习,重点是学院里学过的《模拟电子技术》、《数字电子技术》、《计算机组成原理》等课程的内容;另一方面就是动手,这是最重要的,没据说过那个电子大神是看书背书练成的,都是电烙铁和万用表下练下来的,自己订购元元件、电烙铁、万用表、编程器等必须的材料和工具,自己查资料设计电路,自行动手钎焊制做实验板和电路,不要借助成品实验板,是提升嵌入式系统硬件能力的有效方式,在这方面不要怕“出血”——学成以后的收入会对得起你,然而,学习之时必须坐得住冷板凳——学技术都应当是这个心态。
3、不可盲目怀旧
个别嵌入式软件开发与DOS软件开发有一定的相像之处,比如硬件完全透明,大量使用C语言甚至汇编语言等,好多DOS时代过来的纯软件程序员容易在嵌入式软件开发上怀旧,觉得DOS软件开发又回去了。适当怀旧也无不可,但若果觉得嵌入式系统开发是DOS开发的翻版,那就大错特错了。上面说过,嵌入式系统是一个涉及面更大的领域,硬件从低档的8051仍然到高端的ARM9、MIPS64等,软件从汇编语言仍然到.NETCompactFramework和J2ME,现代软件开发思想——面向对象、设计模式、体系结构、软件工程等一直指导着嵌入式软件开发,并且有逐步深入的趋势。盲目怀旧会影响自己对新技术、新知识和新思想的学习,须知即使是嵌入式系统开发新技术更新较慢,但新技术一直是大量涌现的,10年前十几块芯片组成的电路可能现今只须要一块SoCMCU才能实现,10年前几百行几千行汇编语言程序的软件开发规模,如今8051的软件开发规模都可能达到几千行甚至上万行C语言程序,不引入现代软件开发思想是行不通的。
柏杨先生在他的专著《丑陋的中国人》中以前辛辣地抨击了我们这个民族的个别奴性,其中有一个就是“向后看”、“向古看”以及“古时哪些都好”。诸如明天有人见到念书贵、看病贵和住房贵嵌入式linux系统工程师标准培训教材2,就说“70年代最好,上学院不要钱,看病免费linux安全加固,福利分房,还不如回到70年代”,殊不知70年代上学院确实不要钱,还有补贴(仍然延续到80年代初),但是中考升学率不到10%;70年代看病免费,但是当时一家生好几个儿子有几个养不活是常事;70年代福利分房,然而一家三代人挤十几平方米的房屋也是常事,笔者敢说一句话,把适应了明天的生活,却拚命说70年代多好的人,让她们真正过一段时间70年代的生活,不消一个月,十个上面有九个又就会拚命说吃不消的。现今个别报刊、杂志和网站时常盯住所谓的“80后”和“90后”年轻人说事,拿个例当常例,把一些缺点无限放大,说“80后”和“90后”是“垮掉的一代”,这种话听着玩可以,但作为老程序员,我们应当扪心自问:为何我们会被20出头甚至十七八岁的“80后”和“90后”程序员所淘汰?是哪些逼得我们变革的?
“长江后浪推前浪,前浪死在海滩上”,“沉舟侧畔千帆过,病树前头万木春”,盲目怀旧,舍弃学习,只会让自己更快地被淘汰,纯软件开发这么,嵌入式系统开发同样这么。嵌入式系统其实没有太多华而不实的更新和升级,愈发借助工程师的经验,适宜基础牢靠和经验丰富的老一代程序员变革,但这只能说是更适宜老一代程序员的实际情况一些,绝不是意味着变革后可以舍弃对新技术、新知识和新思想的学习。
纯软件程序员选择向嵌入式系统工程师变革,这是一条饱含艰辛磨难的公路,但一旦选择了这条公路,坚持走下去,可能会获得意想不到的成功。愿中国嵌入式系统开发产业的熊熊烈火尽快被燃起!
与你们分享~~~~~很不错的一篇文章