我的转行之路--从机械专业到软件工程师

发布时间:2011-12-4 13:47    发布者:nansaudi
每个人都有自己的梦想,不同的是有些人为理想在不停的奋斗。我曾经的梦想是做一名software engineer,而能在一家半导体公司做底层software则是梦想中的梦想。而今,五年的时间,我已在某全球顶级半导体公司做SW,参与了很多的项目,接触了很多的软件、硬件平台。几年的时间,风风雨雨,经历过,也奋斗过,在这里就分享下自己的经历。


从小就对电子兴趣浓厚,2002年填高考志愿,报的大部分是微电子,最后一个填的还是应用物理,但最终被调配到一个听都没听过的工业设计专业。复读要多花一年时间,况且学校也不错,就没放弃去学校报到。想着今后是跟电子行业无缘了,于是认命了,本着学一行爱一行的态度,开始积极的去学习本专业。不过两年下来,很多艺术类的课程对没有基础的农村孩子来说是很痛苦的,素描、水粉、效果图,画的还没有小学生有型。因专业的关系偶尔也背个画夹去写生,跟舍友站在某雄伟的建筑下,在画夹里用铅笔描啊描,路人会投来艳羡的眼光,岂不知我们全是在糟蹋白纸。在无数次的反思后,发现自己不适合搞设计专业,但也没想好适合做什么。后来,在CAD课程里开始接触很多软件,觉得能设计出这些复杂强大软件的工程师是多么的厉害,开始对神秘的软件产生浓厚的兴趣。有次看了王江民的生平简介,非常震惊,他3岁因患小儿麻痹后遗症而腿部残疾,初中毕业的水平,38岁才开始学习计算机,后来成为了国内知名的反病毒专家。这位“全国青年自学成才标兵”的事迹鼓舞影响着我,让我决定开始去尝试自学计算机。由于学校可以选课,于是选了些计算机专业的课,如Linux系统管理、网络技术、操作系统,但大多都是理论课,没有接触过具体程序。


2006年的夏天,跟同学来到深圳报道,第一家公司是台湾的电子代工厂,当然也是以本专业找到的工作。3个月实习完后才知道,毕业时应聘的职位不一定就是最终的岗位,自己是能选择的。这时有个机会,深圳的研发部门刚成立,软件方面缺人,就去找研发的老板试试看。第一任老板是台大的硕士,RF的专家,在他眼里应届生就是一张白纸。我自觉做软件开发没什么难的,于是鼓起勇气去求他让我留在研发部。我告诉他在大学自己修过的课程,自学过的东西,自学能力……几次下来,他被我的勇气打动了,觉得年轻人坚持追求自己的理想很难得,于是答应让我去试试,一年后不能适应就回去做我的机械。感谢我的第一任boss,宽阔的胸襟,渊博的学识,他改变了我的职业道路,人生最大的幸运就在于关键的时候能碰到如此的良师益友。


我在研发部门开始了软件的道路,那时候还不会写代码,虽然C语言是大学理工科的必修课,但非计算机专业要求都很低,到毕业的时候只记得几个关键字。还好,刚开始的工作也很简单,因为部门刚成立,没有什么项目,所以大多都是帮忙修板子,更新板子的程序,或帮忙台湾的工程师测试写好的代码。我开始了疯狂的自学生涯,白天在工厂实习,晚上回去就学习专业课程,C语言、C++、Visual C++、 MFC、TCP/IP协议栈、Windows网络编程、Linux系统管理、Linux应用开发、思科网络技术。晚上经常看到1点多,深夜里敲键盘的声音经常吵醒睡觉的舍友。半年下来,看了不少书,不过很多都是一知半解,迷迷糊糊的。终于开始了第一个小项目,用VC做一个计算电子元器件可靠度的工具。一个月下来跟同事一起实现了软件的界面及运算,Release之后虽小有成就感,但更多的是知道自己的不足。要做一个专业的software engineer,不会算法、不懂软件工程,写出来的东西只不过是垃圾而已。于是开始了新的一轮学习,在这期间看了很多本国外的著作,收获不少,如《代码大全》、《编程珠玑》、《深入理解计算机系统》、《编程之美》等。


两年多下来,看了不少书,但能完全看的懂吗?我当然不是天才,很多时候只了解个概念,不懂的地方要硬着头皮一遍一遍的啃。自学的道路是艰辛的,但感觉过的很充实,兴趣是我最大的动力,每次学会一些新东西的时候就兴奋不已。


由于公司的主营产品是数字机顶盒,我们最终要做的是开发板子里面的固件,在做了一年多的测试验证工作后,终于开始了嵌入式生涯。我在项目之余花时间看完了u-boot所有的代码。最开始看不懂汇编代码,就开始啃MIPS的体系结构,了解了C语言执行环境的初始化,各种外设的初始化,怎么把程序从存储器搬到内存执行,如何去引导kernel启动,后来接触过很多的Bootload,都大同小异,像Yamon、Zboot2、CFE,很快就能移植到我们的板子上。看完u-boot后,又开始研究神秘的Linux,先从驱动开始,研究各种驱动的体系结构,USB的URB,以太网的socket、I2C、SPI、MTD、SCSI,中断例程,一个一个的啃。驱动看完再看内核,掌握怎么去加一个系统调用,进程切换的上下文,各种调度算法,内存和缓存及MMU的管理和使用,等等。总之,几年下来一直没有放弃。


由于在项目上的经验积累,和自己对嵌入式底层的理解,让我得到了目前这份工作。现在的我,能在工作中享受更多的乐趣。更多的学习是为了更好的做项目,而完成项目的同时也满足了自己的兴趣。回顾过去,能走到今天,靠得就是坚持,没有坚持就没有现在的自己。所以,有梦想的朋友,如果你们坚持了,那梦想就离你不远了。
本文地址:https://www.eechina.com/thread-83549-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
zhendemeizhile 发表于 2011-12-15 17:17:31
太神了
szgoldenking 发表于 2011-12-16 11:55:25
坚持,学习!
quwen 发表于 2011-12-17 08:51:01
不错
xzy0145 发表于 2011-12-19 11:13:56
太神了
xiongq2012 发表于 2012-2-14 22:51:12
LZ,你的这篇文章我收藏了,我学机械的,不喜欢这个行业,想转行做IT,这个是我感兴趣的,我觉得兴趣是最好的老师,我决定了,开始学C语言和C++和java 等等一系列的,先从简单的入手,虽然未必会成为LZ这样的高技术人才,至少是我自己喜欢的工作,LZ我会时不时翻看这篇文字
Ali007 发表于 2012-3-2 10:11:35
佩服!!!
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表