分享一位软件工程师的多年总结,经验之谈,借此导航自己人生。

1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。”

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

2、一定要确定自己的发展方向,并为此目的制定可行的计划。

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

3、软件开发团队中,技术不是万能的,但没有技术是万万不能的!

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

4、详细制定自己软件开发专业知识学习计划,并注意及时修正和调整(软件开发技术变化实在太快)。

请牢记:“如果一个软件开发人员在1、2年内都没有更新过自己的知识,那么,其实他已经不再属于这个行业了。”不要告诉自己没有时间。来自时间管理领域的著名的“三八原则”告诫我们:另外的那8小时如何使用 
将决定你的人生成败!本人自毕业以来,平均每天实际学习时间超过2小时。

5、书籍是人类进步的阶梯,对软件开发人员尤其如此。

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

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、理论与实践并重,内外双修。

工程师的内涵是:以工 
程师的眼光观察、分析事物和世界。一个合格的软件工程师,是真正理解了软件产品的本质及软件产品研发的思想精髓的人(个人观点、欢迎探讨)。掌握软件开发 
语言、应用语言工具解决工作中的具体问题、完成目标任务是软件工程师的主要工作,但从软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工 
作。学习、掌握软件产品开发理论知识、软件开发方法论,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的软件产品研发问题,才是真正的软 
件工程师的工作。站在成熟理论与可靠方法论的高度思考、分析、解决问题,并在具体实践中验证和修正这些思想与方式,最终形成自己的理论体系和实用方法论。

10、心态有多开放,视野就有多开阔。

不要抱着自己的技术和成果,等到它们都已经过时变成垃圾了,才拿出来丢人现眼。请及时发布自己的研究成果:开发的 
产品、有创意的设计或代码,公布出来让大家交流或者使用,你的成果才有进化和升华的机会。想想自己2000年间开发的那些Windows系统工具,5、6 
年之后的今天,还是那个样子,今天流行的好多Windows系统工具都比自己的晚,但进化得很好,且有那么多用户在使用。并且,不要保守自己的技术和思 
想,尽可能地与人交流与分享,或者传授给开发团队的成员。“与人交换苹果之后,每个人还是只有一个苹果;但交换思想之后,每个人都拥有两种思想”,道理大 
家都懂,但有多少人真正能做到呢?

11、尽量参加开源项目的开发、或者与朋友共同研制一些自己的产品,千万不要因为没有钱赚而不做。

网络早已不再只是“虚拟世界”,网上有很多的开源项目、合作开发项目、外包项目,这都是涉猎工作以外的知识的绝好机会,并且能够结识更广的人缘。不要因为工 
作是做ERP,就不去学习和了解嵌入式、实时、通信、网络等方面的技术,反过来也是一样。如果当别人拿着合同找你合作,你却这也不会,那也不熟时,你将后 
悔莫及。

12、书到用时方恨少,不要将自己的知识面仅仅局限于技术方面。

诺贝尔经济学奖得主西蒙教授的研究结果表明:“对于一个有一定基础的人来说,他只要真正肯下功夫,在6个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。

可见,掌握一门陌生的学问远远没有想象的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自己的影响圈、尽量扩大自己的关注圈。财务、经济、税务、管理等等知识,有空花时间看看,韬光养晦、未雨绸缪。

13、本文的总结与反思:

A:不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软件开发知识的建议,做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜任工作即止。

B:提高软件知识和技术只是问题的表面,本质是要提高自己认识问题、分析问题、解决问题的思想高度。软件专业知识的很多方法和原理,可以很容易地延伸、应用到生活的其它方面。

C:在能胜任工作的基础上,立即去涉猎其它领域的专业知识,丰富自己的知识体系、提高自己的综合素质,尤其是那些目标不在技术方面的朋友。

软件开发工程师--经验之谈相关推荐

  1. 中国移动云能力中心 Iaas 产品部软件开发工程师陈焱山:社区始于连接,也成就于连接...

    社区始于连接,也成就于连接 --陈焱山 ApacheCon 是 Apache 软件基金会(ASF)的官方全球系列大会.作为久负盛名的开源盛宴,ApacheCon 在开源界备受关注,也是开源运动早期的知 ...

  2. 毕业后想成为一名软件开发工程师,应该如何学习,大牛给出建议!

    毕业后想成为一名软件开发工程师,应该如何学习,我整理了一下,觉得可以如下几个过程,逐步深入.希望对大家有帮助. 1.基础 这是每个开发者的起点.开发者刚刚学会了某种语言, 比如C语言,学习了基本的数据 ...

  3. 去哪儿网2018春招软件开发工程师、前段开发工程师编程题 - 题解

    不难,都是常规的操作,故题解写得简单点. 软件开发工程师编程题 第一题:在字典中找自己的逆序 题目 有一个单词列表,一个初始单词,初始单词需要通过单词列表逐步变换得到自己的逆序,求变换所需的最短变换路 ...

  4. 软件开发工程师:程序员的职业规划就像软件工程

    软件开发工程师:程序员的职业规划就像软件工程 [url]http://www.accp-teem.com.cn/ArticleView/2007-8-1/Article_View_1224.Htm[/ ...

  5. 想做C++软件开发工程师,我该如何去学习?

    想做C++软件开发工程师,我该如何去学习? 因为C++是一个兼具性能和抽象模型结合体,除了能够保证性能之外,还能用当今最流行的面向对象编程模型,而且生态系统由于这些年的积累,建设的也非常完善,所以在高 ...

  6. 亚马逊云科技软件开发工程师团队

    在亚马逊云科技,有着这么一群人,他们经常被认为只会写代码,而不善言辞.但这只是大家对他们的误解.他们的工作不仅需要懂开发.善沟通,还需要能够dive deep用户的需求.他们就是亚马逊云科技的 Sof ...

  7. 2019/04/12 华为通用软件开发工程师现场面试(offer到手)

    2019/04/12 华为通用软件开发工程师现场面试(offer到手) 时间轴 三月中旬做的笔试 3题ac两道 4/8 性格测试 4/12 现场面试 地点是 广州某家酒店,近地铁站的,中大过去也是要一 ...

  8. 招聘:JAVA软件开发工程师

    招聘:java软件开发工程师 本公司所有新创办的创业型小公司. 研发团队6-7个人. 工作地点:厦门软件园二期观日路 现需招聘java软件开发工程师2-3名 要求: 1.有良好的沟通能力.团队合作精神 ...

  9. 软件开发工程师招聘笔试题面试题223套和招聘考察内容

    技术族职业发展通道\阶梯\标准(即招聘考核内容) (1) 通道 技术族分为软件研发.美术.质量管理.设计.技术支持五个职业发展通道,每个发展通道包含下列职位(具体内容请见表4-技术族发展通道职位列表) ...

最新文章

  1. 大咖分享 | 产品经理如何成长进阶?
  2. HTTPS加密越来越流行,为何要加密?
  3. Ehcache学习一:JDBC caching
  4. python怎么转到下一行_Python转到下一行并保存/编辑内容
  5. 数据分析与挖掘建模实战001:导学,概述
  6. jquery多字段筛选,极简方法
  7. Cannot delete or update a parent row: a foreign key constraint fails
  8. java queue代码_java代码实现顺序队列
  9. ARM 与 STM32 的关系
  10. 锚杆拉拔试验弹性模量计算_锚杆拉拔试验检测标准
  11. 问答社区php源码,cpf开源SNS问答社区源码 php版 v0.7.1
  12. 不限速度盘下载神器Pandownload作者被抓,大量下载脚本已宣布停更
  13. win7系统玩游戏提示“运行时出错!初始化DirectX运行库失败 ”的解决方法
  14. 云从科技上市在即,或成为小一号的商汤科技?
  15. 中职教计算机专业发展,论职业教育计算机专业教学怎样适应社会的发展需求
  16. Chapter 12 设计概念
  17. 网页保存mhtml格式
  18. 指尖江湖李忘生鸿蒙初开,《剑网3:指尖江湖》李忘生战斗攻略解析
  19. SQL积累 复制一个表数据到另一个表 SELECT INTO -- INSERT INTO ... SELECT
  20. 文本分析4-词频统计与词云展示

热门文章

  1. Spring MVC Formatter(数据格式化)详解
  2. html ajax输出表格中,使用Ajax来渲染HTML表格
  3. linux系统管理命令使用,Linux系统管理命令使用说明
  4. 前端,到底什么来路?
  5. 杂谈!了解一些额外知识,让你的前端开发锦上添花
  6. 【转】一个40岁老程序员的前端学习之路|2021 年中总结
  7. 改善CSS的10种最佳做法,帮助你从样式中获得最大的收益
  8. 安卓ondraw刷新视图_android播放动画时是否会调用被操作的视图的onDraw方法?
  9. TensorFlow 笔记 (五)自定义训练: 演示
  10. 一个漂亮的Bootstrap查找查询框,带下拉选择按钮