从《构建之法:现代软件工程》走进软件工程的学习

什么是软件工程

什么是软件工程?它跟一般的计算机学科有什么不同?BarryBoehm的定义是:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。可见软件工程更多注重的是软件的开发而非硬件的维护、修理等,它是计算机学科重要的一部分。
《构建之法:先代软件工程》(以下简称《构建》)一书中提到,软件工程这一专业,尤其是大学生,其师生关系是健身教练和健身员的那类关系。我个人理解的软件工程,其开发和学习的流程大多是学习一个框架,在了解到某某语言或者某某工具的使用方法后熟练运用并掌握,结合自己的智慧开发出面向实际应用的软件程序。很多人说现在的网络这么发达,网上的资料这么多,什么不可以在网上学?为什么不可以自学?在这里结合我自己的亲身体会,现代的软件工程基本开发应用,大多都是英文界面的,对于一般的大学生而言理解和掌握有着相当大的难度,完全掌握所需要花费的时间肯定远远比课堂授业要多得多。举个很简单的例子,Visual C++作为基础的C++语言开发平台,若单纯靠自学掌握其基本开发流程并熟练应用所需时间必然很长,当然快速自学并掌握一门语言框架并开发是每一个程序员都应该具备的基本素质,这里暂且只针对尚在学习的学生。手把手教导比之自己独自钻研显然是前者更具效率,因为早已有前人开辟好了道路。为什么说健身教练和健身员的关系比较符合软件工程专业的师生关系呢?首先教练得有真才实学,那是一眼能够看得出来的,所以学员才会拜师教练门下,学到自己想要的东西。需求和能力这两方面因素就体现出来了。正如《构建》中所言,师生关系中老师掌握着学生的绩点和毕业证,是老师占据着主动,而非顾客和商家那种单纯的交易关系。所以,学习软件工程,从心态上就要明确一点:抱着学习的目的踏入软件工程的行业。

软件工程的几个阶段

《构建》一书将软件工程划分为了几个阶段:
1.学习基本知识的玩具阶段
2.作为爱好者的气球阶段
3.作为行业先驱者的莱特兄弟飞机阶段
4.作为成熟专业人士的民航阶段
简要阐述一下个人对这些阶段的观点:处于玩具阶段,应当做的是积累最基本的知识,掌握行业的基本运作模式,决定今后发展的方向。就像是一个飞机的模型,所有的飞机都是从模型阶段开始设计、萌芽的。
处于气球阶段,了解了基本的知识,一部分能够坚持下来的人或多或少都对这门行业产生了兴趣,亦或者热爱,萌生了动力。这是基础实践经验的积累阶段,用历史的角度而来,相当于“资本主义原始积累阶段”,后续的独立开发、团队协作、项目经验等等实践经验大多来源于此。
处于莱特兄弟飞行阶段,相当于已经有了丰沛的技术经验、实战经验的积累,个人认为这是所有阶段中最为提现软件工程价值的阶段——开拓与创新。将经验汇集,创新出属于自己的东西,这正是软件工程最重要的创新精神。
处于民航阶段,拥有了属于自己的东西,最后便是将这些运用于实际生产建设、商业运用中。一切理论和实践都脱离不了生产建设,这是最后的也是最现实的阶段。

软件工程的特性

软件工程的特性诸如特殊性易变性之类的《构建》一书中有提过,这里就不再赘述,只谈及个人的理解:软件工程是一门复杂的学科,同时也是团结性和独立性兼具的学科。作为软件工程的从业者,个人必须具备独立学习和独立开发的能力,这需要相当强的自学能力;同时需要从业者具备一定的团队协作能力。软件的开发在实际应用阶段,不可避免地需要面对工程量的问题,不可避免地需要面对团队协作的问题。有个经典的调侃“程序员最讨厌不写注释的人,同时每个程序员又都是不写注释的人”,小小的几行注释涉及到的是整个团队的协同工作效率,影响到的是整个团队的效率与进度。
前面有提过,软件工程是面向实际的,虽然程序员操作的是代码层,可实际呈现出来,展现给需求者的是实际应用层的表现效果,涉及到UI涉及、前端后端、网页设计等等,这些都是从业者需要考虑到的问题,不论身处软件开发的哪一环,最终的成果都是实际应用层的表现效果。这需要从业者具有良好的沟通能力、具有服从性或指挥性,同时需要学会排查疏漏——对于程序员而言,最难受的莫过于修bug了。
我个人针对《构建》一书,产生了更多的见解:软件工程还应该具有时效性:
我认为软件工程具有很强的时效性,也许对现在而言非常流行的一门框架、一门语言,在你潜心学习,完全掌握并且走上社会寻求工作岗位的时候,就已经被时代所淘汰了。框架语言的更新换代速度是十分迅速的,前一年我们还在学校学习Android 7.0的开发,当我们走上工作岗位的时候,Android 9.0的框架或许都已经过时了。正因为其时效性,软件工程从业者需要有独到的眼光,选择属于自己、适合自己的道路。

软件工程的前景

针对软件工程的学习,故《构建》中关于实际团队、社会协作等方面的内容暂不赘述,前面提到了软件工程从业者所需要的品质、提到了软件工程道路阶段性、提到了软件工程的性质,下面则是个人理解的软件工程行业的前景。
都说21世纪是生物化学的世纪,我个人的观点有点不同:无论各行各业,即便是农业生产,都离不开软件工程。现代化发展如此迅速,软件工程走进了各行各业,方方面面。软件工程是面向对象、解决实际问题的行业,只要有问题,就存在需求,那就有软件工程行业的身影。从长远角度来看,软件工程从业者在未来势必会身处生产建设的各个角落。生物化学解决的是全人类的问题,但它只需要一小部分人;软件工程解决的也是全人类的问题,但它需要的是很多的人。从历史的角度上可以发现,人类的进步就是自动化的进步,以至于工业革命以来人类的生产力大幅度上升,软件工程乃至整个计算机行业,作为实现自动化的学科,势必会在未来发挥出更大的价值。而就当下而言,国内专业的人才待遇普遍偏高。
中国薪酬网
中国薪酬网整理的2018年应届大学生专业收入排行数据显示,软件工程行业在当下具有非常强的竞争力,就眼下国内相关的人才需求仍然有很大的缺口,软件工程行业的就业前景不言而喻。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值