dolphinsrf
驱动牛犊
驱动牛犊
  • 注册日期2007-09-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分630分
  • 威望65点
  • 贡献值0点
  • 好评度64点
  • 原创分1分
  • 专家分0分
阅读:970回复:0

从学生到工程师的转变

楼主#
更多 发布于:2007-09-11 15:11
从学生到工程师的转变
[日期:2004-12-2] 来源:21IC  作者:HID [字体:大 中 小]  

 

从学生到工程师的转变

上学的时候,自己无数次去北京,可是这次去北京,心情总是有点复杂。这是我毕业后参与的第一个项目,项目是跟北京的一家公司合作的。在做这个项目之前,自己从来没有做过项目,所以自己心里没有一点底,自己能胜任么?能不能与他们很好的交流?带着疑问,我们到了封闭开发的公寓,舒服的开发环境,老工程师谦恭的态度让我的疑虑打消了一半。通过与他们的交流,原来他们在做第一个项目的时候也有类似的想法,我的心情渐渐的平和了许多。

小的时候,老师经常教导我们如何好好学习,成为一名科学家或工程师,那时候自己对这一切是多么向往呀。随着研究生毕业自己的愿望也成了现实。从学校到公司,随着环境的转变,自己也从一名学生变成了一名“工程师”,至少名片上是这样写的。其实我心里明白,现在的我与学校的那个单纯的学生并没有多大的改变,只是比学生时的收入丰厚了一点。我经常问自己,我是一名工程师么?答案我心里很清楚,如果每个工程师都像我现在这样,如何实现四化呀!

随着与工程师们的逐步了解,我明白了怎样才能成为一名工程师,首先我要做的就是漂亮的完成自己一生中第一个项目。渐渐的,心头的压力随着自己想法的改变也越来越轻。加上积极主动的开发心态,自己对分配的工作得心应手,自然也得到了同事的认可。与此同时,自信心彻底把恐惧心理击溃,自己用更好的心态来面对进一步的开发。对我来讲,这个项目开发的过程,是从学生到工程师的一个成长的过程。在设备公司打印出第一张发票的时候,喜悦之情溢于言表,这也许是一名工程师最真诚的笑容。

一.    从零开始
工欲善其事,必先利其器。作为项目开发最基本的条件,首先要打建方便的开发环境。面对一个全新的开发环境,大家都在同一条起跑线上,只有根据相应的资料进行实践。不要以为这是老工程师们的工作,这对自己来说是一个非常好的动手和学习的机会。根据项目需求,打建相应的开发环境是一个工程师最基本的素质,没有人永远为你打建好现成的开发环境。由于我们购买的开发环境都是从国外过来的,再加上代理商没有非常好的技术支持,这更需要我们自己动手了。

一开始还算顺利,硬件环境很快就打好了,最关键的地方出现了问题,计算机与仿真器的通讯怎么也连接不上。试过了各种方法,本来就不得力的技术支持也没了注意。大家开玩笑说,我们回家吧,仅仅是一句玩笑,也反映了当时大家的心态。话虽然这样说,大家从来没有放弃,各种方法的调试从来没有间断过。工夫不负有心人,直到2003年11月××日下午,我们几个人在休息,“行了”,一个正在调试的工程师大叫一声,这一声把我们几个下了一跳。看到他脸上得意的笑容就知道,问题已经解决了,这种成功的喜悦让人羡慕,又有一点点嫉妒。为了庆祝这一重大突破,那天晚上我们找了一个比较好的饭店,把酒言欢,好好庆祝了一番。

这里面虽然没有我太大的功劳,自己还安慰自己,没有功劳也有苦劳呀,就这样,自己也深深体会到了成功的喜悦,那天晚上回味了好久好久。就是从那刻起,自己就下定决心作一名出色的工程师,让朋友和我一起分享成功的喜悦。

二.    桃源深处
现有芯片技术资料大多数都是英文的,仅有的几种国产芯片,也崇洋媚外,说什么英文是通用的国际语言,我们要走出国门,走向世界。其实大家都知道,人家日本好多产品都走向世界了,也都有一份日文的资料,还有什么可以辩解的么?也许你们的资料都是COPY来的吧,翻译都省了。本科的时候自己英语已经过了六级,在加上研究生三年的修炼,对自己的感觉还算不错。厚厚的英文资料看了一页又一页,回过头来一片空白。每次看资料,仿佛自己走进了桃源深处。这样下去效率真是太低了,后来想了个办法,自己先读一下资料,讲一下自己对内容的理解,然后大家一起讨论,好多问题都恍然大悟,这样既加深了理解,又提高了效率。

三.    你准备好了么?
开发不但要在思想上有充分的准备,还要充分准备开发所需的各种条件。“兵马未动,粮草先行”充分体现了准备工作对于战争的重要性。项目开发同样如此,又很多的准备工作要做,比如开发平台的设计、打建、人员配置等。

开发平台就像根据地,优秀的开发平台可以事半功倍,反之将会大大降低效率,甚至会全军覆没。我们这次开发对开发平台进行了精心设计,并在开发过程中逐步完善。整个项目能够顺利的进行,优良的开发平台起了至关重要的作用。

根据开发项目的特点和要求,各类项目开发人员配置应该有预期的配置,比如测试软件开发人员、专业测试人员等。这次开发由于过分依赖设备公司测试软件开发方面的支持,实际上设备公司提供的是非常成熟的应用产品,并非测试软件。在这种环境下测试一种正在开发的产品,难度可想而知了。也就是在这一步,遇到了相当大的挑战,一切都凭着自己对业务流程的理解,结合设备公司技术人员的支持,才步履蹒跚的走完了这一步。虽然这一步走完了,但是留给我们的恐怕步仅仅是测试结果吧?如果一开始我们就配备了相应的测试软件开发人员,这一切会不会完成的更出色呢?

四.    爱美之心,人皆有之
一个项目的开发,就像一个孩子成长的过程。整个过程会经历各种挫折和诱惑,我们要学会去呵护,引导。一个人的不良习惯大多是在未成年的时候养成的。编程也是一样,工程师的编程习惯往往也是在自己的第一个项目中形成的。网上有不少介绍这方面的文章,认真学习学习,看到他们赏心悦目的demo,难道你不为之心动?看这样的代码,简直是一种享受。项目一开始,我们是翻译了一个软件的代码,当时觉得是在浪费时间。到后来真正自己动手写代码的时候,发现自己不自觉的得心应手了。
一个项目通常是有多个人共同合作完成的,良好的编程风格不但看了赏心悦目,同事也是对其他同事的尊重,也赢得了同事对自己的尊重。良好的编程风格还有利于问题的发现和解决,比如汇编语言中标签(label)的定义,其实LABEL完全可以凭着自己的意愿来定义,可是,如果每个人都这样想,整个项目岂不是像一锅粥?因此,需要预先设定一些定义规则,标签应该能表征模块的功能或特征,当其他同事看到你标签的时候,就知道了该程序所在的模块,及其实现的功能。

五.公私分明
作为一个底层开发工程师,大多数模块都是用汇编来开发的,汇编的可读性差,良好的编程习惯显得尤为重要。作为一个独立的模块,就不应该对其他模块产生影响或者被其他的模块影响。比如寄存器的使用,调用者不要依赖于子函数不改变你的寄存器,这对于大家来说师公共的,不要把他作为自己的私有财产。同时,子程序也要注明自己使用的寄存器以及变量,以便上层在调用的时候有的放矢。每个工程师都应该根据设计文档,分清楚哪些师私有财产,那些是公有财产,不要侵吞公有财产哦!不过自己也不要大公无私了,把子的财产充公。

五.    记得写日记
提起写日记,那是很遥远的事情了。可以说,我压根就没有写日记的习惯,即使写过日记,也是在老师的监督下完成的。刚到公司的时候,没有什么项目作,自己做了点小玩意,也算是实习吧,做了一个188的小系统,虽然最终也不是很成功。当时负责我实习的老师是开发部的经理(现在是公司的技术总监了),在他的熏陶下,自己渐渐养成了写日记的习惯,虽然当时不是很正式,事情多的时候天天写,没事的时候就写的少了。后来在开发的时候,写工作日记形成了一种习惯,工作今天有什么进展?今天的计划完成了么?工作中解决了什么问题?明天有什么计划安排?这样一天下来,自己还稍有成就感,接下来的一天也明确了目标和方向。工作日记对于项目负责人来说更是至关重要的,有利于保持清醒的思路,清楚目前工作进度,有条不紊的安排下一步的工作。

六.    当好管家
代码和文档是整个项目的核心,今年春节过后,代码,测试都已经做了大量的工作,我们的项目已经初见雏形了。与此同时代码、测试文档的维护的工作量愈来愈大。当好管家并不是想象的那么潇洒,其实这是一件非常无聊而又高度认真的工作,稍有差池,整个工作就会倒退一大步,甚至会从头再来。我们的这项工作做的比较细致,没有出现什么问题,整个文档基本上是每天都要备份,每当有重大突破的时候也要备份。文档管理并不是每个人的责任,自己更新的文档要做好详细的、认真的记录。
从北京回来,在设备公司调试的时候,发现调试结果怎么也不对,而且出问题的模块是北京那边的工程师写的,与那边的工程师交流不方便,如果让我们找出问题的所在,简直是云山雾罩。仔细想了想,我决定从备份中找原因。仔细查看了每天的备份说明,说明中包含了当天的进展,修改情况,谁修改的,以及修改的日期等等详细情况。没有费多大劲就找到了问题所在,原因是前段时间修改的一个文件没有保存,还真的好好感谢备份的文档。开发过程中,这种事情是不可避免的,关键是如何避免,如果问题真的的发生了,如何去解决。做好备份,有备无患总不是件坏事把。
强调代码的重要性,并不是说测试文档可有可无。测试文档反映了这个项目的进展情况,测试文档不但要求有,而且要完备,能根据测试文档重现测试的结果。一个项目不仅仅要保留最终版本结果,必要的中间过程也是不可少的,如何高效的恢复开发过程中的现象,完备的测试文档是最有效的方法。
设计文档是整个项目的基础,它是在项目开发之初设计的,但事实是,计划不如变化快。随着项目的进展,最初的设计又很多不禁合理的地方,甚至是错误。这样一来,设计文档要有实时性,不断根据实际情况的变化而更新。

七.    真金不怕火炼
前面我们提到过,在打建平台的时候,最担心的地方出了问题。如果这是偶然,那么其中有必然的原因。最担心的地方,通常是还没有真正领会的地方,出问题也是必然得了。作项目,不要怕面对错误,发现错误是一种好现象。任何一个项目都是一个不断发现错误,不断修正的过程,微软那么牛的公司还整天出问题呢!这可不是自我安慰哦。没有最好,只有更好不是很好的反映了这个过程么?
测试的目的就是为了寻求更好的结果。测试,首先要端正态度,不要把测试作为开发的附件,二者对于开发过程是同等重要的。其次,测试软件的开发要跟上。这次开发,我们没有自己的测试软件开发,一切都依赖于设备公司。最终设备公司提供的是一个比较成熟的应用产品,把一个初步开发的产品,在一个成熟应用产品下进行测试,这一步跨越太大了,很多问题都被覆盖了,同时给解决问题带来了很大的困难。

八.    作项目更要做产品
项目开发的完成并不意味着产品的面世。项目开发是面向公司内部的,而产品则是面向客户的。如何让用户选择我们的产品是这个过程的主要任务。项目开发实现了产品的个性功能,并保证功能的完善和稳定,这是作为一个产品首先保证的。在产品功能相仿的情况下,如何让客户选择我们的产品,这就需要我们懂得包装自己。不仅有外表上的包装,更主要的是为客户的应用或进一步开发提供最大的方便。比如提供进一步开发需要的开发包,相应的开发工具等,并在可能的情况下提供人力上的支持,这对于客户都是很有诱惑力的。作为产品,应该不断得从客户那里获得反馈信息,进一步完善产品,整个过程相辅相成得。
游客

返回顶部