Lost in CatB :http://www.ituring.com.cn/article/9363
看了Lost in CatB.深有所感。软件的数量在上升,软件的质量在下降。对于软件包的依赖性在增多但软件的复用性在降低。
首先我们可以看看我们身边发生的例子。我们组要做爬虫,我们的首先任务是下载现有的爬虫。不下不知道,一下吓一跳。现有的爬虫过于复杂,光引用的包就达到十几个。而对面宿舍他们组是在一个已完成的项目上改编代码。他们得到了那个项目的源码。但是他们跟我们说他们的代码要从头开始重新做。原因是原先的代码限制性太多,可扩展性太差,而要扩展需要在重新构建的底层的数据结构。也就是说从改编变成了重做。光我身边的例子就大致如此了,跟不要说集市上的程序了。
那么为什么会产生上述原因呢?我将以我仅有不多的经验来浅谈一下产生的原因和引发的思索。
一、包为什么那么多?不同人有不同的需求,如果现有的某一个包无法达到需求,还要引用其他的包。而且很多包的功能过于单一,一个包远远不能满足当今复杂的需求与更复杂的编码。
再加上包的作者各不相同,实现的方式和理念也大相径庭,所以又会发现包与包不能互通,没准还要引入一个第三方包,把上述两个包通过第三包统一接口,所以导致包的引用错综复杂。那么该怎么办呢?这时候我觉得集市式的开发无法满足这一点,只有教堂式的开发才能弥补。比如apache公司的包质量很高,虽然包也很多,但是井然有序,由于是一个公司开发的,也不存在接口问题,可谓典范。
二 、为什么复用性这么差?对于收费的软件来说,即使给你一定的代码,也是经过加密的,想要复制粘贴绝没那么容易。对于开源的软件来说,一是开发者不够专业,过于专注敏捷开发,而忽略文档和架构的重要性(这也是我们的通病),往往架构逻辑上会出现一定问题,开发文档也很难提供给其他开发人员。二是开发者投入的时间如果不够充足,很难考虑拓展性的问题和版本维护的问题,自然复用性差。
至于关于彼得定律影响软件开发的说法我并不能完全苟同。彼得定律:在一个等级制度中,每个职工趋向于上升到他所不能胜任的地位”。彼得指出,每一个职工由于在原有职位上工作成绩表现好(胜任),就将被提升到更高一级职位;其后,如果继续胜任则将进一步被提升,直至到达他所不能胜任的职位。由此导出的彼得推论是,“每一个职位最终都将被一个不能胜任其工作的职工所占据。
可以说每个人都有一个向往的却不能胜任的地位。即使他最后上升到了他所不能胜任的这个地位。起码它能够胜任比这个地位低一个层次的地位。也就是他作为一个曾经的成功者来挑战一个他还未能战胜的敌人。这种挑战早晚一天肯定会失败(因为总有一个他不能胜任的地位),从而导致公司或相关机构利益受损。这种失败似乎无法避免,但是对于软件开发来说,这不能称之为失败。地位大于能力的失败终会催生一个与此地位相符的人,从而使不能胜任的地位的层次被逐次推高,也就是技术的发展不断前进。