要么优秀,要么负责--阅读作业二感想

  之前和同学聊天,讨论为什么越来越觉得自己不会写代码了。得出的结论大多数都是--之前我们写的是题目,现在我们写的是工程。工程文件的代码量一般会比题目多。但是,量变引起质变。当代码进行组合,交叉的时候,一切都不一样了。以前读到软件工程四个字,重点是在软件,现在重点是在工程。现在软件开发的各种理论和模型的核心都是在解决软件开发的工程性问题。

  big ball of mud,"泥团"问题是很多同学,包括我都遇到的问题。当没有进行充分的准备就开始写代码后,迟早有一天,自己会被杂乱的bug,混乱的逻辑搞的心烦意乱。这种情况会随着用户需求的改变变得更加头痛。可是,这很大程度上不就是自己不良的工程习惯所导致的么。首先,在不同的开发模式中,工程设计会在不同的阶段进行,但是,有一条是不会改变的,那就是文档。文档,到现在对于我都是一个不太熟悉的名词。因为,说实话,到现在,我都没有养成良好的写文档的习惯。于是,各种突发的想法临时用代码实现。一旦外部需求发生改变,或者当编程进入中间阶段,前面的代码变成了混杂的泥团了。

    而Royce介绍的瀑布模型,也着重强调了文档的重要性。当然,瀑布模型需要比较长和“顺畅”的工作状态,写文档对于这种流程性的开发是很重要的。它着重放在软件系统的设计,需求分析,以及反馈。正如其名:Managing The Development Of Large Software Systems。这种比较高层次的开发模式很适合大型软件开发,代码反而是比较居于次要的。就我个人感觉而言,起码我所进行作业开发可能也只是停留在analysis and design->codig->testing->coding的过程中,类似于敏捷吧。这种瀑布模型对于大型公司的稳定运作很有帮助。毕竟作者经历过那么多大世面。

   下面就是比较有意思的大教堂与集闹市的开发模式以及Poul-Henning Kamp对这种开发模式的批判。首先,关于大教堂的开发模式,我想,这是一种很自然的开发模式。毕竟,工匠们的精雕细琢往往给他们带来丰沛的利润。而闹市则是为了迅速方便的满足大家的需求。Raymond的观点有种“光天化日之下,怎会有bug”的味道。利用大规模的用户参与,使用,数量级的bug检测与完善来提升一个软件的performance吧。个人感觉这种模式所开发的产品多数会是具有“补充性”的软件,会出现一部分大型的软件,但是估计会很少。因为这种开发需要很多有兴趣参加其中的人,因此会有人需要它,才会去寻找它,参与它。当然,如果能够找到合格的successor.软件会成为经典。说上面一部分可能是因为我读的时候对open source project印象比较深刻吧。但是,这种提出用户参与开发的思想很具有启发性。让使用者适度的参与进来,可以提高软件开发的效率。但是,这种“外部人员”的设计对于软件这种满足需求的工程会不会是一种拖累呢。他们往往会根据自己的需求来设计,提出问题。会不会阻碍了软件设计层次的“前瞻性”,不会太“引领潮流”。我个人感觉这还是要更持续的参与来提升其性能。让软件有需求就立刻改。这是大规模敏捷么?(开个玩笑。)

    象牙塔毕竟是象牙塔,住惯了的人到了鱼龙混杂的集市上毕竟会“掩鼻而蹙”。Kamp对于Raymond的意见主要在于专业性的问题上。相对于精雕细琢,频繁的加工难免会对程序的质量造成影响。“反正只要改成我要的样子就行了”。这两种观点的交流让我想起了看过的Ted演讲上关于维基百科的大规模协商运作模式。作为和开源代码类似的网络百科全书,它的运作当然需要数以万计的网友的参与。由此,怎么保持其专业性?维基百科采用精英民主制,由网络上的精英决定词条的质量是否应该采纳。而闹市模式就缺少这种高效专业的“联邦政府”来管理。这是一种行政上的措施。就个人感觉,自由的分享与参与正是闹市的特色。

    最后一个“No Sliver”文章给我的感触很大。刚开始读对作者的观点就一种感觉,“IT就是苦,认命吧”。关accidents 方面的问题与改进。我个人的感悟就是这些改进是必要的和必需的,但是,这不能成为软件工程发展的目的,而应该是手段。而改进软件开发,从本质上来讲,就是要调用人的积极性和工作效率。这才是关键。我想,作者把great designer放在文章末尾就是要强调这一点。工程性的东西,就是需要人的思维去设计和创造,最终实现。

   文章更多的还是从工程技术性角度强调设计者的重要性。作为一个菜鸟级别的计算机学生,我的感觉就是个人素质的重要性。包括Kamp对闹市的批判,泥团模型的产生原因,很大程度上都是对开发者本身素质的要求。到了我们,就是编程的良好习惯,开发过程中的负责程度等。只有优良素质的参与者,才会把一个开发模式的效率发挥到最大。很多开发模式其实就是用来规避我们个人身上的缺点。

   啰里啰嗦的写了很多废话。总之,优秀而又负责任的开发者才是整个工程的关键。

  ps:不得不说,英语在一定程度上的确是帮助了印度的IT行业吧。看这些阅读材料,有很多都是似是而非的东西,所以个人的理解肯定和原文表达的思想有出入。以英语为母语对信息的交流互换真的很有帮助。好好学英语。

你可能感兴趣的:(感想)