一位软件工程师的6年总结
“又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几点旨在确定大的方向,算是废话吧。
谨以此文献给那个自己为你奉献3年青春与激情的开发团队。还有团队成员:PPL、YT、YK、TYF、LGL、CHL、CDY、CB、DPD。
1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”其实这是一个来自国外教育领域的一个研究结果。相信工作过几年、十几年的朋友对这个道理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾终生!”所以放在每一条,让刚刚毕业的朋友们早点看到哈!
2、一定要确定自己的发展方向,并为此目的制定可行的计划。不要说什么,“我刚毕业,还不知道将来可能做什么?”,“跟着感觉走,先做做看”。因为,这样的观点会通过你的潜意识去暗示你的行为无所事事、碌碌无为。一直做技术,将来成为专家级人物?向管理方向走,成为职业经理人?先熟悉行业和领域,将来自立门户?还是先在行业里面混混,过几年转行做点别的?这很重要,它将决定你近几年、十年内“做什么事情才是在做正确的事情!”。
3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!在技术型团队中,技术与人品同等重要,当然长相也比较重要哈,尤其在MM比较多的团队中。在软件项目团队中,技术水平是受人重视和尊重的重要砝码。无论你是做管理、系统分析、设计、编码,还是产品管理、测试、文档、实施、维护,多少你都要有技术基础。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个软件开发团队成功地完成过软件开发项目,哪怕就一个,也没有看到。倒是曾经看到过一个“高学历的牛人”(非技术型)带一堆人做完过一个项目,项目交付的第二天,项目组成员扔下一句“再也受不了啦!”四分五裂、各奔东西。那个项目的“成功度”大家可想而知了。
4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。
5、书籍是人类进步的阶梯,对软件开发人员尤其如此。书籍是学习知识的最有效途径,不要过多地指望在工作中能遇到“世外高人”,并不厌其烦地教你。对于花钱买书,我个人经验是:千万别买国内那帮人出的书!我买的那些家伙出的书,!00%全部后悔了,无一本例外。更气愤的是,这些书在二手市场的地摊上都很难卖掉。“拥有书籍并不表示拥有知识;拥有知识并不表示拥有技能;拥有技能并不表示拥有文化;拥有文化并不表示拥有智慧。”只有将书本变成的自己智慧,才算是真正拥有了它。
6、不要仅局限于对某项技术的表面使用上,哪怕你只是偶尔用一、二次。“对任何事物不究就里”是任何行业的工程师所不应该具备的素质。开发Windows应用程序,看看Windows程序的设计、加载、执行原理,分析一下PE文件格式,试试用SDK开发从头开发一个Windows应用程序;用VC++、Delphi、Java、.Net开发应用程序,花时间去研究一下MFC、VCL、J2EE、.Net它们框架设计或者源码;除了会用J2EE、JBoss、Spring、Hibernate等等优秀的开源产品或者框架,抽空看看大师们是如何抽象、分析、设计和实现那些类似问题的通用解决方案的。试着这样做做,你以后的工作将会少遇到一些让你不明就里、一头雾水的问题,因为,很多东西你“知其然且知其所以然”!
7、在一种语言上编程,但别为其束缚了思想。“代码大全”中说:“深入一门语言编程,不要浮于表面”。深入一门语言开发还远远不足,任何编程语言的存在都有其自身的理由,所以也没有哪门语言是“包治百病”的“灵丹妙药”。编程语言对开发人员解决具体问题的思路和方式的影响与束缚的例子俯拾皆是。我的经验是:用面对对象工具开发某些关键模块时,为什么不可以借鉴C、C51、汇编的模块化封装方式?用传统的桌面开发工具(目前主要有VC++、Delphi)进行系统体统结构设计时,为什么不可以参考来自Java社区的IoC、AOP设计思想,甚至借鉴像Spring、Hibernate、JBoss等等优秀的开源框架?在进行类似于实时通信、数据采集等功能的设计、实现时,为什么不可以引用来自实时系统、嵌入式系统的优秀的体系框架与模式?为什么一切都必须以个人、团队在当然开发语言上的传统或者经验来解决问题???“他山之石、可以攻玉”。
8、养成总结与反思的习惯,并有意识地提炼日常工作成果,形成自己的个人源码库、解决某类问题的通用系统体系结构、甚至进化为框架。众所周知,对软件开发人员而言,有、无经验的一个显著区别是:无经验者完成任何任务时都从头开始,而有经验者往往通过重组自己的可复用模块、类库来解决问题(其实这个结论不应该被局限在软件开发领域、可以延伸到很多方面)。这并不是说,所有可复用的东西都必须自己实现,别人成熟的通过测试的成果也可以收集、整理、集成到自己的知识库中。但是,最好还是自己实现,这样没有知识产权、版权等问题,关键是自己实现后能真正掌握这个知识点,拥有这个技能。
9、理论与实践并重,内外双修。工程师的内涵是:以工程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发语言、应用语言工具解决工作中的具体问题。
转载地址:http://javatome.iteye.com/blog/915430
分享到:
相关推荐
本文档记录了一位软件工程师在XX公司为期五个月的工作经历,从八月份入职到十二月份结束,这位工程师不仅完成了从熟悉环境到参与实际项目的过程,还在此期间积累了丰富的经验和技能。 **入职初期阶段:** - **环境...
总结:这份PPT不仅展示了软件开发工程师Nancy一年的工作成果,也反映了一位专业人士如何自我反思、规划未来。对于其他开发者来说,这是一份值得参考和学习的年终汇报模版,可以帮助他们更好地组织和呈现自己的工作...
- **重要性**:虽然软件测试工程师不一定需要精通高级编程语言,但具备一定的编程基础有助于更好地理解软件架构,编写更高质量的测试脚本。 6. **操作系统**:熟悉Linux操作系统。 - **重要性**:Linux作为...
总结来说,三菱仿真软件GX Simulator 7.16-E-Win7-64位是学习和优化三菱PLC程序的有效工具,无论对于新手还是经验丰富的工程师,都能提供宝贵的实践平台。通过熟练掌握这款软件,可以大幅提升PLC应用能力,从而在...
6. **设备驱动开发**:对于希望涉足硬件级别的软件工程师,学习C语言编写设备驱动程序是必要的。这涉及到字符设备、块设备、中断处理等知识。 7. **Makefile和编译链接**:理解如何编写Makefile来组织和编译项目,...
标题中的"jdk-6u45-linux-i586-rpm.bin"是一个针对Linux操作系统的Java Development Kit(JDK)的安装程序,具体版本为6更新45(Update 45),并且是针对i586架构(32位)的。这个文件采用RPM(Red Hat Package ...
标题中的"jdk-6u45-windows-i586.exe"是一个特定版本的Java Development Kit (JDK)的安装程序,适用于32位Windows操作系统。JDK是Oracle公司提供的一个核心开发工具集,包含了编译Java源代码、调试程序、运行Java...
Java软件工程师是IT行业中一个非常重要的角色,他们负责设计、编码、测试以及维护Java应用程序。在寻找工作时,一份高质量的简历是展示个人技能和经验的关键。本资源提供了18种不同的Java软件工程师简历模板,旨在...
1. **硬件准备**:确保你有一台电脑,并安装了相应的三菱伺服设置软件。此外,需要一根与电脑和伺服驱动器连接的通信线。根据描述,你需要制作一条通信线,这通常涉及RS-485转USB或者RS-232转USB适配器,具体取决于...
对于想要成为C/C++软件工程师的人来说,掌握这两种语言的精髓并能应对各种面试挑战至关重要。国内一些大公司的C/C++软件工程师的经典面试题往往涵盖了语言基础、数据结构、算法、操作系统、网络、编译原理等多个方面...
综上所述,本文通过对作者在过去一年中参与项目的工作总结,不仅分享了项目经历和个人成长,还深入剖析了工作中遇到的主要问题及其解决方案,同时提供了宝贵的工作心得和教训,为未来的软件开发工作提供了有益的指导...
9. **GX Simulator6-C**:这个可能是GX Simulator 6的某个特定版本或组件,可能包含了软件的主程序或者其他相关文件。 通过这个压缩包,用户不仅可以获得GX-Simulator-6中文版三菱PLC仿真软件,还可以接触到相关的...
总结来说,Oracle官方32位客户端-instantclient-basic-nt-12.2.0.1.0是一个针对Windows 32位系统的Oracle数据库连接解决方案,它简化了客户端的部署,提供了丰富的数据库操作功能,适用于各种开发和管理需求。
6. **版本信息**:TINA-TI中文版V9.3.150.328是该软件的一个重要更新,可能包含了性能优化、新功能添加或问题修复,确保用户能获得更稳定、更高效的工作体验。 在安装TINA-TI时,用户通常会遇到两个主要文件,即...
jdk-6u26-windows-i586开发包,jdk-6u26-windows-i586开发包
jdk-6u20-windows-x64.exe linx64位下载: 第1部分:http://download.csdn.net/detail/love254443233/5263081 第2部分:http://download.csdn.net/detail/love254443233/5263160 附:java配置方法.txt 1:找到JDK...
jdk-6u27-windows-x64.exejdk-6u27-windows-x64.exe
jdk-6u32-linux-x64-rpm.bin Linux 64bit
linux 下得jdk-6u27-linux-i586-rpm.bin
- 标题和描述中提到的“2017年上半年网络工程师下午案例分析真题及答案解析”表明这是一个面向网络工程师的专业技能考核资料。案例分析和真题解析是评估网络工程师应对实际网络问题能力的重要手段。 2. 软件技术...