有人说:软件工程就是教会不怎么会写程序的人写程序,这句话在我看来并没有绝对的对错,有其正确之处,也有其不明智之处,因而我们要辩证的看待这句话。接下来我将从这两个方面详细讲讲我的观点。
首先,分析这句话首当其要要了解软件工程的定义,其中最简洁的有两个说法,第一个是讲软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。第二个表述为软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。因而从定义不难发现,软件工程的目的确实有教会不会编程之人怎么编程之意,可是如果仅是这么看又限的过于浅显,因而在定义明确提出了系统化,规范化的将管理技术与技术方法结合,所以软件工程的意义不仅仅于此。
软件工程,是为了让程序员能够更好地写代码、写出更好地代码。这两个好,都有多层次的含义,但本质上,都是在长期的跨度内,减少程序员的工作量并提高代码质量。然而,世事总是不随人愿:长期跨度内的好,往往和短期利益会存在冲突。这也就是「短视」或者「目光短浅」的由来。在软件工程中,「写注释」、「保持良好的命名习惯」、「设计思想」、「总结分析」、「时间记录」,这些是无数前辈总结出来的强而有效的工具。但是,从短期效果来看,使用这些工具(或者进行这些练习),无疑是耗费时间的——只要写出代码来就好了,谁管那么多事?对此,我的解释和课本书中的解释一致:软件开发,是一个长期的、不断变化迭代的过程,而不是一个短期的、一锤子买卖的活动。既然如此,已经明确了软件开发不是一个短期活动,那么为了短期利益,放弃长远打算,显然是不明智的。
因而软件工程并不是我们学会机械编程的一个简单工具课程管理的意义,或许于我们而言更像是一个变成更好自我的康庄大路,而怎么去更好的利用的它去得到我们想要的,首先要端正我们对于这一学科或者职业的观点,只有如此,才可以更加充分的走进她课程管理的意义,学习她。