【转】一位软件工程师的6年总结

“又是一年 毕业时 ”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工6年的经历沉淀或者经验提 炼 ,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软 件开发人员如何提高自己的软件专业技术方面的具体建议 ,前面几点旨在确定大的方向,算是废话吧。

谨以此文献给那个自己为你奉献 3 年青春与激情的开发团队 。 还有团队成员 : PPL 、 YT 、 YK 、 TYF 、 LGL 、 CHL 、 CDY 、 CB 、 DPD 。

1 、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!

【心得】:实习后才发现,学历只是一个敲门砖而已,同时也证明着一个人的潜力。而大学中获得奖项和荣誉,证明大学期间我不是一个碌碌无为的人,努力过,学习过。工作以后,这些就是过去了,大学期间,还是有几点比较重要的,比如你做数模时,学会的排版,查找资料的能力,还是做ACM时锻炼的思维方式,英语个人觉得还是要好好学,至少到随便一篇英文,你能读懂其中含义和作者在其中蕴含的感情,至于口语和听力,也许将来你要和国外的人面对面地交流,还是好好练习,如果在国内的话,就无所谓了。大学期间,还是要多接触各种东西,比如linux、arm、mysql、python、perl、android等等,不要说我方向是软件工程的,网络的,这些我不需要知道,个人觉得还是要多方位的接触即使不是你专业的知识,多开阔视野,多关注行业内的发展,各种术语等等。

2 、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业, 还不知道将来可能做什么 ?”,“跟着感觉走,先做做看”。因为 ,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术 ,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混, 过几年转行做点别的? 这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。

【心得】:还是自己好好想想吧。选择了就不后悔,因为是你自己选择的,自己要对自己负责任!

3 、软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在 MM 比较多的 团队中。在软件项目 团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、 设计、 编码 , 还是产品管理、 测试 、文档、 实施、 维护 ,多少你都要有技术基础 。算我孤陋寡闻 ,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项 目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历 的牛人” ( 非技术型 ) 带一堆人做完过一个项目, 项目交付的第二天, 项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。

4 、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整 ( 软件开发技术变 化实在太快 ) 。 请牢记:“如果一个软件开发人员 在 1、2 年内都没有更新过自己的知 识 ,那么 ,其实他已经不再属于这个行业了。”不要告诉自己没有时间 。来自时间管理领域的著名的“三八原则 ”告诫我们 :另外的那 8 小时如何使用将决定你的人生成败 !本人自毕业 以来,平均每天实际学习时间超过 2 小 时。

【心得】:学习力代表未来,学无止境。

5 、书籍是人类进步的阶梯, 对软件开发人员尤其如此。 书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。 对于花钱买书 ,我个人经验 是:千万别买国内那帮人出的书 !我买的那些家伙出的书, !00% 全部后悔了,无一本例外。更气愤的是, 这些书在二手市场 的地摊上都很难卖掉。“ 拥有书籍并不表示拥有知识 ; 拥有知识 并不表示拥有技能; 拥有技能并不表示拥有文化; 拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。

【心得】: 个人感觉国内一些嵌入式方面的书籍,基本上从datasheet上面翻译来的,还不如直接看datasheet。记笔记是个好习惯。

6 、不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“ 对任何事物不究就里”是任何行业的工程师所不应该具备的素质 。开发 Windows 应 用程序,看看 Windows 程序的设计 、加载 、 执行原理,分析一下 PE 文件格式, 试试用 SDK 开发从头开发一个 Windows 应用程序;用 VC ++、 Delphi 、 Java 、 .Net 开发应 用程序,花时间去研究一下 MFC 、 VCL 、 J2EE 、 .Net 它们框架设计或者源码 ;除了会用 J2EE 、 JBoss 、 Spring 、 Hibernate 等等 优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计 和 实现那些类似问题的通用解决方案的。 试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为 ,很多东西你“知其然且知其所以然”!

【心得】: 对任何事物,都要找到其本质的东西。你知道一个printf函数有多复杂,main函数是怎么调用的,电脑从开机到看到桌面是怎样执行的,曾经我也不在乎,这些,关我什么事,我知道怎么用就可以了。同事告诉我说,我是生产者,做软件开发,而不是使用者,所以其中的原理还是要知道是怎么工作的。

7 、在一 种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药 ”。 编程语言对开发人员解决具体问题 的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模 块时 , 为什么不可以借鉴 C 、 C51 、 汇编的模块化封装方式?用传统的桌面开发工具 ( 目前主要有 VC++ 、 Delphi) 进行系统体统结构设计时 , 为什么不可以参考来自 Java 社区的 IoC 、 AOP 设计思想,甚至借鉴像 Spring 、 Hibernate 、 JBoss 等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时, 为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式? 为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决 问题???“他山之石、可以攻玉”。

【心得】:提到的像”IoC 、 AOP 设计思想”,都没听过,要学习的东西还是很多嘛,循序渐进,踏踏实实。还是要多接触啊,T字型发展,上面的横,还没到家。。。

8 、 养成总结与反思的习惯 ,并有意识地提炼日常工作成果,形成自己的个人源码库 、解决某类问题的通用系统体系结构甚至进化为框架。众所周知,对软件开发人员 而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组 自己的可复用模块 、 类库来解决问题 (其实这个结论不 应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说 ,所有可复用的 东 西都必须自己实现 , 别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权 、版权等问题 , 关键是自己实现后能真正掌握这个知识点,拥有这个技能。

【心得】: 总结反思,建立自己的知识库。

9 、 理论与实践并重,内外双修。工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师 ,是真正理解了软件产品的本质 及软件产品研发的思想精髓的人(个人观 点、欢迎探讨 )。掌握软件开发语言、 应用语言工具解决工作中的具体问题

你可能感兴趣的:(【转】一位软件工程师的6年总结)