关于软件工程学科的感悟
1.行业关系。
每个能做某行业信息化的,都不是看着有前途突然杀进来的。
2.行业知识。
这是每个做行业管理软件都深刻能体会的。
3.技术不是首位关键,大部分都是增删改数据库应用。
倒是大批量定制、大批量实施、大批量服务是很大的挑战。
所以这需要先进的运营和管理方法。
简单说来,就是工程方法。
需要团队大批量作业,而非精英研究攻克型。
这类型的企业就是人多。
因为项目多。
而人的能力也要求不太高,只要理解了行业细节知识,做起来开发、实施、服务都比较顺利。
所以,企业也一般薪水不高,对人的能力要求也不高,但管理严格性却挺高。
这是行业信息化这个IT行业特点所决定。
我还没有在这个层次上创新模式。
所以只能在项目进度、质量、成本上多做创新管理方法。
所以个性激情程序员晚上开发白天睡觉可能不适合在这样的行业工作,可能互联网行业更适合。
因为互联网行业大致是面对个人消费群体,而行业信息化大致都面对企业。
企业都要一分投入一分回报,精打细算手中的钱,而不是娱乐而已。
所以我们的成本和赢利意识挺强。
而且,这个行业也经常项目与产品互相交替,没有明确的界限。
你暂时不要希望出一款产品然后满中国铺广告招商渠道。
所以,做这行,往往行业内听说过,跳出这个行业就没有人知道了。
有什么样的人,就有什么样的产品,就有什么样的客户。
物以类聚,人以群分。
如果你老遇到让你很倒霉的客户,那么你先检查一下你自己。
史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。
上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。
它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。
过去几十年的大型系统开发就犹如这样一个焦油坑,很多大型和强壮的动物在其中剧烈地挣扎。
他们中大多数开发出了可运行的系统——不过,其中只有非常少数的项目满足了目标、时间进度和预算的要求。
各种团队,大型的和小型的,庞杂的和精干的,一个接一个淹没在了焦油坑中。
表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,团队的行动就会变得越来越慢。
对问题的麻烦程度,每个人似乎都会感到惊讶,并且很难看清问题的本质。
不过,如果我们想解决问题,就必须试图先去理解它。
编程为什么有趣?作为回报,它的从业者期望得到什么样的快乐?首先是一种创建事物的纯粹快乐。
如同小孩在玩泥巴时感到愉快一样,
成年人喜欢创建事物,特别是自己进行设计。
我想这种快乐是上帝创造世界的折射,一种呈现在每片独特、崭新的树叶和雪花上的喜悦1。
其次,快乐来自于开发对其他人有用的东西。
内心深处,我们期望其他人使用我们的劳动成果,并能对他们有所帮助。
从这个方面,这同小孩用粘土为“爸爸办公室”捏制铅笔盒没有本质的区别。
第三是整个过程体现出魔术般的力量——将相互啮合的零部件组装在一起,看到它们精妙地运行,得到预先所希望的结果。
比起弹珠游戏或点唱机所具有的迷人魅力,程序化的计算机毫不逊色。
第四是学习的乐趣,来自于这项工作的非重复特性。
人们所面临的问题,在某个或其它方面总有些不同。
因而解决问题的人可以从中学习新的事物:有时是实践上的,有时是理论上的,或者兼而有之。
最后,乐趣还来自于工作在如此易于驾驭的介质上。
程序员,就像诗人一样,几乎仅仅工作在单纯的思考中。
程序员凭空地运用自己的想象,来建造自己的“城堡”。
很少有这样的介质——创造的方式如此得灵活,如此得易于精炼和重建,如此得容易实现概念上的设想。
(不过我们将会看到,容易驾驭的特性也有它自己的问题)然而程序毕竟同诗歌不同,它是实实在在的东西;可以移动和运行,能独立产生可见的输出;能打印结果,绘制图形,发出声音,移动支架。
神话和传说中的魔术在我们的时代已变成了现实。
在键盘上键入正确的咒语,屏幕会活动、变幻,显示出前所未有的或是已经存在的事物。
编程非常有趣,在于它不仅满足了我们内心深处进行创造的渴望,而且还愉悦了每个人内在的情感。
计算机软件开发的工程方法是已经该出现的哲学体系,虽然在合适的范型、自动化程度以及最有效的方法等方面还存在争论,软件工程的基本原则现在已在产业界得到普遍接受。
然而,为什么我们仅仅是在近年来才看见它们的广泛采用呢 我认为答案是由于技术转化和伴随而来的文化变化的原因,即使我们的大多数人认识到了软件的工程法律的需要,我们仍需要与过去的习惯惯性作斗争。
为了使转化更容易我们需要很多东西——一个更成熟的软件过程、有效的方法、强大的工具、实践者的接受和管理者的支持、以及大量的教育和“广告”。
软件工程还没有收到大量广告带来的收益,但是,随时间流逝,软件工程概念正在兜售它自己。
当我们开始我们向新的千年进军时,软件已经变成了世界上最重要的产品和最重要的产业,它的影响和重要性已经走过了一段长长的路。
然而,新一代的软件开发者必须迎接很多和前一代人面临过的同样的挑战。
让我们希望迎接挑战的人们——软件工程师——将具有更多的智慧去开发改善人类条件的系统。
引用文献:
《走出软件作坊》
《人月神话》
《软件工程:实践者的研究方法》Roger Pressman著《软件工程卷3:领域、需求与软件设计》
《统一软件开发过程》。