软件工程师

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件工程师相关的知识,希望对你有一定的参考价值。

此文大体是我在读到《构建之法》第三章是所思考与感悟的一些内容。

《构建之法》作者邹欣,由人民邮电出版社出版的一本关乎于现代软件工程的一本书。本着对软件工程的求知欲望,我便前去拜读。

下半年,我也将进入大三的学习,大四课程大量减少,可以说将来应该干什么,大三至少也或许该有所决定了。我素来对软件工程、软件的开发等方面颇有兴趣,但奈何《软件工程》这门课上起来颇显得乏味,虽然确实学到了不少东西,但对于软件工程应有之素养或者称思考方式,全然不甚了解。而我的不清晰的思路,也开始感染我的情绪,让我开始对未来的发展方向陷入了沉思。

书中给出一关于大学四年级学生和硕士毕业并且工作三年的软件工程师的个人项目耗时记录。从表中可以看出的一点是,工程师在“需求分析”和“测试”方面显然花费了大量的时间,而且是绝对多于具体编码的;尽管这一点是大学四年级学生所花费最多的时间。单从这一实例来看,我们无疑能够将工作三年的软件工程师记作“优秀的软件工程师”,一个大学四年级生则对应一个“尚且还不够优秀的软件工程师”,毕竟论经验、学历、前者都要高于后者的。再从他们的时间分布上看,或许我们还能推测,一个优秀的软件工程师最终应该是要着眼于编码之前的方案设计,而在编码上消耗大量时间的软件工程师显然还是不够优秀的。再进一步推测来说,一个软件工程师若要变得优秀,或许就得不被编码实现这一过程局限住,同时向设计进行发展才是。而那些只懂得注重编码实现的工程师或许是我们常说的“码农”吧。

其实从软件工程的角度出发,一个软件工程包括了开发、运营、维护软件的过程中的一系列技术、做法、习惯和思维。归结到一个体系中去,这个体系被作者称为“软件开发流程”。那么从这上面来看,一个“码农”付出的努力仅仅存在于一个开发过程中的某一个环节,并且只包含了一部分技术和做法,思维是别人归纳了的,习惯是早就养成了的。那么剩下的大部分工作都将交由一个有能力的软件工程师去负责。仅从能者多劳的角度说,这些工作量的区别也确实体现出了后者的优秀。

读了其文章至此,大体已经有了学习和努力的方向。当然地,此章节还并未止步于此,其后还介绍了如何成长为一个优秀的软件工程师。但在此之前还得要用软件工程的思维去思考怎么样才算一个优秀的软件工程师。关于工作量的衡量,项目有多大?(代码行数)、花了多少时间单位(年/月/日);以及关于工作质量的衡量,代码的质量如何(阅读程度)、能否通过测试(验收测试)、是否按时交付等经过量化的衡量标准。所以说,所谓的成长到优秀的地步,其实就是能承担的工作量增大了,能达到的工作质量上升了而已。

那么应该要做的就很明显了。一种是技术方面的深入研讨,避免在太简单的问题上纠结太深,而将时间交给对于更高深技巧的思索,这一招对于直接工作质量和增大所能承担的工作量来说是显然的。另一种积累知识式的学习,包括学习软件工程知识和软件开发相关知识等等,这一方法能使一个工程师开始承担别的环节的任务,其实就是变相地提高了自己所能承担的工作量了。

不得不说,读完了这书,尤其是这一章节以后,我对于毕业后寻找出路的迷惑感确实减少了不少。毕竟在软件工程方面上,我所要努力的方向和方法大体上都已经清晰了不少。将来的路有条可能性不小的开明的大道总归是好事情的,即使我未必就会从事软件工程方面的事业。更何况还有一点,我现在尽早地知道了将来的一线出路,那么我也就可以更早地付出行动去为这一出路做足准备了。

以上是关于软件工程师的主要内容,如果未能解决你的问题,请参考以下文章

如何评测软件工程知识技能水平

软件测试工程师工作总结

互联网时代,别再对软件工程师有误解

如何评测软件工程知识技能水平?

Java软件工程师的发展路径

什么是软件工程师