当前位置: 首页> 书评> 正文

梦断代码《做软件很难》

  • 小小评论家小小评论家
  • 书评
  • 2023-03-26 13:06:00
  • 51

刚看完《梦断代码》,虽然是讲一个软件项目是如何失败的,不过里面有几点让我觉得很有意思。

第一,从计算机诞生那一天开始,人们希望用计算机能够为自己提供足够的信息管理,人们有太多的东西,日记、帐本、音频、心得等等,而不仅仅限于管理,在管理的基础上还要在一定程度上分享和共享,于是网络和互联网诞生了。其实不管把互联网当作工具还是当作娱乐,很足够的一条原因是互联网上存在那么多已经整理好的信息,记得我们以前刚有硬盘或者移动硬盘,在学校无法下载大量资料时,咱们每个人都会在移动硬盘上分门别类的收集大量的信息,包括软件文章阿什么的,我作火狐客户支持的时候有的用户跟我说他的书签从05年开始收集,火狐对他最有价值的就是大概几百M的书签记录。当用户拥有更多硬件或者平台,就有了分享和共享的诉求,需要多个硬件支持同步,需要协作中支持同步,需要家人朋友之间分享信息,然而到今天为止我们对信息整理的这种需求可能并没有完全的得到满足,于是有各种各样的整理/分享方式还在出现,而这些不仅仅是逻辑上的方法,更多的融入了基于人机交互科学的交互设计和体验设计等等;

第二是其中谈到Lotus以前的哥们做过一个叫做Agenda的软件,那个软件允许你任意输入,然后会自动提取出信息,比如“周五和John吃饭” 会自动提取出“周五”和“John”,并放入到比如时间、人物等结构中,计算机软件在很大程度上第一批用户都是程序员,而这些程序员熟悉数据结构,所以很多软件设计的会直接报漏这些数据结构,比如报表、比如写博客时候要填写标题、内容等等,但是Agenda的作者觉得Agenda之所以吸引他是因为 Agenda完全在用户交互上丢弃了这种结构化的东西,用户可以任意输入,不再受结构的限制,那个作者把他后来作软件的过程中定义为一直在寻找 Agenda之魂,呵呵。我觉得Twitter和饭否等微博客在某种意义上具有Agenda之魂,没有结构化限制,用户感受到更多的是自由,非常简单就可以获得的自由,而正是由于他本身的简单,带给用户的期望就不高,而内容的提取,比如“@”回复、链接提取、各种API使用都会让用户在并不高的期望上感觉很大或者意料之外的满足。忘了在那里还看到一个挺有意思的,计算机软件中或者我们程序员通常为了简化大量使用树的模型,比如报表阿、电影分类阿等等,通常的做法是为自己设计一个分类树,但其实真实世界并不能用树来映射出来,真实世界中对于书的分类通常还包括交叉索引,包括很多重叠,但是就是因为软件的使用者通常是程序员,所以他能够接受树的概念,于是软件设计和实现人员就使用了简单的树模型,而当这个软件交付给普通用户使用的时候,普通用户根本不知道树是什么,那没办法,只能培训和学习了,呵呵。Twitter类似软件很大的一个优点就在于他的简单,而且不用使用程序员视角来学习和使用软件,只要知道输入框可以输入,而输入的内容是你最近在干吗就好了,至于说慢慢学习到@表示回复,RT、#加搜索等标注信息,其实在人的学习过程中每个人都能接触到,而这些统统都不是程序员独有的东西,所以他非常容易被世人接受。

第三,做软件很难。虽然计算机的发展基本符合摩尔定律,硬件发展及其迅速,然而到今天软件的发展还是没有一个完整的类似于自然科学那样的体系或者理论,很多理论由于这些年软件某个领域的火爆而出现。我说的可能不对,但是如果我们再回头看设计模式的话,我们会发现其中很多模式都来自于80、90年代,而那个年代软件最复杂的部分应该不是业务逻辑而是基础组件,很多设计模式直接来自UI基础组件的设计,似乎也有人说过面向对象真正发挥优势最初就是从UI 组件开始的,所以现在看很多设计模式设计的书上面的例子基本还是在讲述如何解决UI组件部分的重用问题。然后在Java火起来服务器端开发火起来之后,设计模式逐渐向服务器端模式靠拢,很多模式依旧被大量使用,但是IoC和DI的迅速流行也表明起初的模式并不能涵盖软件开发的全部。为什么会有模式呢?一是说软件开发受建筑影响很大,软件的设计模式基本上直接来自于建筑模式,大家再看设计模式基本教程的前言基本都会提到这一点;另一方面,来自于程序员一直希望像搭建乐高模型一样的制造软件,于是不管是组件、COM、DCOM、XPCOM、Java Bean等都可以被想象为程序员手中一个个乐高块/子模型,程序员希望软件能够像乐高一样有趣高效的被组装在一起并向世人展示。然而软件却没有乐高模型那样简单,虽然现在优秀的框架和组件越来越多,但是软件面对的需求也越来越复杂,于是有了不要过度设计的要求,于是有人嫌弃OOP,于是有了极限编程也有了敏捷编程。做软件很难是因为软件的发展历史还很短,也许是因为软件的周围环境变化太快──需求变化快、硬件变化快、拥有软件技术的人变化快。

没有什么结论性的东西,以上也都是个人想法,仅供参考和个人总结,:)

博客地址:http://www.mijia.org/blog/?p=182

阅读全文