前言

这是在网上看到的一篇文章,写的是一个从事软件工程开发的大牛对从业七年的一些经验总结。感觉挺不错,转来与大家分享了,下面是正文。

分享 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个月内就可以掌握任何一门学问。”教育心理学界为感谢西蒙教授的研究成果,故命名为西蒙学习法。

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

总结与反思:

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

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

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

软件工程师 八年工作总结

开场白

古语有云:“三十而立”。三十岁的人,应该对自身以及社会都有自己的认知,对自身的发展亦有清晰的定位,能够独立承担属于自己的责任。

本人今年三十岁,生命走了将近1/4(我的目标是活128岁,亲,请忽略我的yy),工作八年,想解剖下自己,回顾总结下工作八年来的收获以及当前自身的不足,亦希望后续自身能砥砺前行。

工作回顾

本人计算机专业,工作八年,从事软件研发相关工作,待过三家公司,回顾下自身的工作情况

##初出茅庐入环保

09年下半年校招,签了加杭州的公司(之后简称A公司),环保行业的,当时也没觉得远(本人是湖南满哥,现在想回家就感觉不方便了),10年吭哧吭哧一个人跑到杭州,从此开始了杭州的生活。刚毕业,什么都不懂,(因而)心中也无惧。实习期第一次跟着产品跑出去,周一出差,出差前那个周末导师和我讲解软件系统怎么部署。万幸的是部署还算顺利,现在回想,是跑到用户现场去练手去了。此后,在这家公司干了四年。

10年,做软件开发,11年开始,跑现场做过软件项目实施,去现场做过问题处理。12年开始,自己开始带项目,去现场做需求调研,然后回公司开发,经过测试验证后,最终自己跑去现场做软件部署、调试,一直持续到14年七月从公司离职。自己带的项目大概做了7-8个,国内也跑了一些省市。

回顾在A公司的这四年,有几件事情映像比较深刻。第一件事情是11年下半年现场故障处理,当时现场客户反馈opc-client软件经常故障,运行该软件的机器会假死,影响客户正常使用,当时负责该软件的开发同学在带其他项目,部门经理让我去现场处理 (当时他的本意是让我过去安抚下客户,因为我学的是java,那个软件是.net开发的,软件本身之前没有接触过)。到了现场和预期就完全不一样,客户是希望你能解决问题,不是走过场的。最终在现场待了一周左右,找了个变通的方式解决了该问题。当时自身还是比较有成就感的,现在回过头来看,给自己其他方面带来了一些不利的影响。第二件事情是12年带的项目,学会了基于原型(系统)做需求沟通、调研。原本是有个专职的项目经理带我去调研,因为其他项目无法离开,最终只有我一个人去现场调研,为了和客户更好沟通,我把自己理解的客户需求画成了原型图和他们进行沟通确认,觉得效果还不错,后来就采用这种方式做需求沟通。年轻(亦或无知)无所畏惧,当时没有想到过会搞不定,现在做事情有时会心存畏惧了。

四年工作总结:比较完整的接触了项目的整个流程,和现场用户有直接接触,会从总体的视角去看待项目,站在用户的角度看问题。这种体验,一直在公司人比较难体会,在现在这家公司感受尤为明显,开发测试基本无需出差,只有少部分产品会出差。不足的方面在于一直做业务相关的事情,技术的深度广度不够,遇到技术难题,也会采用变通的思路去解决,这个可能亦是11年现场故障处理带来的不好的影响。

##异地而战为税务

14年8月份,加入了一家税务行业的公司(之后简称B公司)。经历和A公司有点像,14年做开发岗位工作,15年项目经理,16年区域负责人(和项目经理职责类似)。区别在于项目经理角色的定位更多的是侧重对内的任务分配、跟进执行,需求、开发、实施都有专门的团队,coding自己基本没有接触了(项目中团队成员比上一家公司要多)。在这边比较完整的学习了项目管理的相关理论,如项目立项、确认成果的标准,成本预测、评估,任务分解,风险预估,项目里程碑节点定义等,任务分解、风险预估、项目里程碑节点定义在实际过程中有实践。16年因为绩效的事情,自己感觉受了委屈,6月份从公司离职。

对于员工的成长,B公司关注度比第一家公司高,公司内部也有组织很多分享、内训等,在接触的知识面上有所拓展。15年的项目,下半年顺利上线,税局召开了新闻发布会,让自己感受到了仪式感、庄重感,这个之前未曾体验。

在B公司,有件事情触动了我的心弦。16年初(也可能是15年底)去税务大厅现场,看软件的使用情况,大厅的工作人员和我们介绍,税务数据申报时,有些会计不知道需要切换Tab页来填报其他税种的申报数据 (我们当时的界面,不同税种是在不同tab中申报的,tab类似excel中的sheet),偏远的县、村镇等,会计年龄一般更大,电脑接触较少,使用的问题更多。当时我确实很震惊,在我看来,是很常见的设计。这让我体会了和用户接触的重要性,一定要去现场进行真实的体验(当时是专门的美工团队做的界面设计)。让我的工作目标除了刚需(money)之外增加了一个,做一个能给用户带来(更大)价值的产品。

ps:第一家公司,客户和用户基本是一致的,所有没有碰到这种情况;第二家公司,客户是税局,用户是纳税人(一般是公司会计),我们需求调研对象是客户。

##仓储物流,当下的战场

16年七月份,加入了现在的公司(之后简称C公司),仓储物流行业的。之前找工作的时候,自己感觉这个行业应该是有前景的,不过公司没接触过。加入C公司后,进入了某目组。项目的目标很远大,抽象了很多概念,但对项目理念以及抽象概念的理解,感觉只有少数的几个人才真正理解,绝大部分产品、开发、测试就只是执行者,我自己对很多概念经历了不解->理解->困惑->再理解这样反复的过程,现在对部分内容有所理解。到现在,项目做了两年了,但感觉落地执行还有段距离,自己也很困惑,什么时候可以落地上线 。近期想换工作,和部门老大有过沟通,决定再战一年。

这里写图片描述

在C公司的这两年,感觉自己的理解、抽象能力有较大的增长,接触到了一些数学相关的知识点并进行了应用,开始会用数学思维去看待解决问题,如通过信息指纹做数据防重校验。这里,特别感谢大师、博士两位同事,是他们让我接触数学思维去看待问题。也非常感谢其他帮助过我的同事/朋友。

自身能力解剖 – 成长与不足

软技能方面

成长

思维认知。认知到道和术的区别。有句老话“知其然不知其所以然”,我的看法,术为“知其然”,道为“知其所以然”。软件开发过程中会用到各种各样的框架、组件,如dubbo、spring、redis等,知晓其用法,为术的层面。理解他们的实现并转换为自己的理解,明白为什么要采用这样的方案,从宏观层面理解其设计理念,为道的层面。前面几年其实是求术的过程(还不咋地),后面需要开始逐道。 这个也是拜读吴军老师《数学之美》等一系列书籍的感悟。

同理心。处理问题、沟通需求时,会从对方的角度来看待、理解问题,并基于对方的角度来进行沟通 (最近工作需要自我检讨下了,这块表现不太好,有时候会不耐烦)。

要事第一。学的是高效能人事的七个习惯,不过工作中只有这一点会主动识别并进行应用 (或者说这一点自我感觉做的好一些吧)。

管理预判。这个是现在公司部门老大自身总结分享时提到的,和风险管理类似,对任务的完成情况、耗时等进行预判断,并提前识别、规避风险。工作任务分配时,会有意识的主识别,重要事项风险大的跟进的频次会更高。

阅读的习惯。以前不太喜欢主动看书,14年碰巧接触到了吴军老师《浪潮之巅》这本书,确实把我吸引住了,有看小说这种代入感,之后又看吴军老师出版的《硅谷之谜》、《大学之路》、《文明之光》、《数学之美》等书籍,再看其他书或者技术类的文章,感觉没有那么排斥了。

思维逻辑。现在在看《学会提问》,收获是学会了初级找茬的能力,全书主要是介绍如何辨识一个论点是可信的,包括如何找论点、论据、作者是怎样推理的、推理是否存在谬误等。结合之前看《学习之道》的理解,回过头来看之前读过的书籍,一般的思路是:介绍背景信息(即为什么要读这本书或者学习某个内容),目标是什么(或者会有什么收益),为达成目标需要做哪些事情以及怎么做等。现在看其他的书籍、文章等一般会先看下目录,然后yy不同的章节主要会介绍什么内容,读的时候再去印证。 (看了学会提问后,估计现在公司的产品同学不太喜欢我了,需求文档中如果没有介绍清楚背景信息、目标、使用场景、使用角色等,我会把需求打回去这里写图片描述)

分享的习惯。前段时间看了一篇blog,介绍的是认知升级,里面讲了为什么我们学习过的东西容易忘记,原因是无输出。输出会让你的脑海对知识重新进行一次加工。实践、给他人讲解、写知识笔记等都是输出的过程。现在开始有意识加强知识笔记记录,尽量总结转换成自己的语言记录。


本文由转载于互联网,如有侵权请联系删除!