梦断代码阅读笔记03

只要我们持续要求软件完成新任务、解决新问题,修正今天的缺陷
就不能让我们免于明天的崩溃。在打算重复成功时,虽然软件方法论非
常有帮助,你还是只能照葫芦画瓢。如果是在探寻未知的领域,最佳实
践可能会帮助你稍微加快一点进度, 但却无法指点前进方向。
软件开发常与建筑工业相提并论,但这种类比在某种意义上站不住
脚。尽管我们学会如何建造解决特定问题的建筑一供一 家人居住,或
者为治疗病患提供合适的空间一我们还是得不停建造更多建筑。 不管
我多喜欢你的房子,我也不能据为己有一你已经住在里面了, 如果我
也想要,就得再建一幢。软件可不是这样;只要我们知道如何写一套程
序来计算支票簿余额或显示一-张网页, 那这个程序的额外副本完全没有
生产成本,你付出的价钱,如果你给钱的话,是为了奖励设计出软件的
人,而不是为了制造这份副本。

所以,如果有人写过满足你需要功能的软件,那么买-套总比你自
己从头写一套来得便宜。
然而,-次又一次,我们发现自己所需之物总与现有之物差异甚大,
只能编写新代码。例如,在Salon, 20 世纪90年代末,我们意识到需要
自动化发布文章。当时最流行的"内容管理” 软件是一套叫做Vignette
的大系统,价格高达6位数。该公司销售人员到我们办公室拜访,描述
了软件的几百种有用特性。很不幸,其中大多数我们并不需要。另外还
有-大把我们确乎需要、而Vignette却没有做到的功能。所以我们请了
一些程序员, 编写自己的系统。
所有的软件作家迟早都会提出一条以自己名字命名的法则,现在是
我满怀谦卑地呈示罗森伯格法则的时候了:软件好做,除非你想让它完
成新任务。接下来当然可以推论:只有完成新任务的软件才是值得做的
软件。

当然,Cosmo只用了一名程序员,这很有帮助:不必在沟通上花太
多成本。不过编写服务器软件与编写用户端软件相比也确有一些优势。
服务器是一种几乎只与其他程序和机器交互的程序;它很少需要和人类
直接沟通。在需要这样做时一例如, 初次配置时或遇到问题时一与
之交谈的人往往是位专家、-位通晓服务器语言的系统管理员或程序员。
在Chandler团队努力将人类思维过程和工作习惯与软件系统和界面
协调起来时,遇到了吐着毒信的大蛇,而Cosmo就不会遭此劫难。莫斯
利和杜索特面对的是相对更可管理的问题集一比如, 新用户如何设立
账户?或者,处于不同时区的用户互相共享日历时如何衔接时间?继
Chandler变化不定的目标和不断拉长的日程之后,Cosmo仔细定义的边
界成为了-种安慰。
OSAF领导层有意在Chandler 0.5中缩减他们的野心,瞄向较低的目
标。他们暂时忘记了组织整个数据宇宙、让外部程序员能够自由扩展程
序的承诺。他们告诉团队成员,Agenda 之魂固然美妙,但眼前我们是不
是就该只做个能工作的日历程序呢?
但是到了,2004年11月,进入0.5版开发之时,就连这并不远大的
目标也难以企及。
只是让应用程序实现其功能也难以做到。他们取得了- -些进展:约
翰●安德森和唐●登曼根据一套新的“构建块树”设计方案修改了CPIA
框架,他们希望这套方案能让未来的修改更为快速、容易。戴维●萨鲁
维终于差不多修正了自安德森初次将其登记为缺陷以来一直困扰
Chandler的闪烁问题。有了WebDAV的帮助,共享成真一-而且, 按照
一套简单的新 “共享邀请"方式,Chandler 用户只要用电子邮件给其他

用户发送一张“票据",接收者就能得到访问共享日历的授权。迷你日历
导航器( 多数日历程序中本月、上月、下月日历的缩微显示版本)现在
工作正常,而且看起来似模似样。安蒂●维达和泰德●梁通过大量中小
规模的调优,提高了资料库的运行速度。
不过这些进展并不太有助于实现卡普尔想要开始使用的狗食版软
件。与此同时,新进成员的加入也拖慢了进度。在登曼准备离职期间,
OSAF招进了布莱恩●斯特恩斯( Bryan Stearns),他20年前曾与登曼在
早期麦金塔团队共事。斯特恩斯接手了细节视图的开发。还有短暂脱离
编程工作承担教职的网景公司资深开发人员阿列克●福莱特,以及曾在
史蒂夫●乔布斯的NeXT公司长期任职、最近在苹果公司负责电子邮件
程序开发的格兰特●贝列( Grant Balliel),也在1月份加入了OSAF。长
久而言,新面孔的加入能增强力量,但短期内他们得花些时间研究
Chandler。布鲁克斯法则屡试不爽。
Chandler现在有150 万行代码,其中多数需要与wxWidgets 和
Twisted等其他项目整合工作OSAF开发者们编写了130,000 行Chandler
专有的Python代码。如OSAF -位暑期实习生所言,进入这个项目就像
是到了一座新城市、拼命想找到自己的方向。
2005年3月30日,0.5版发布一天后,我问卡普尔,项目进行了这
么长时间,而且还有很长的路要走,他是否会感到气馁。“我知道,我们
会做出某种伟大的东西,”他说,“只是不知道还要经过多少波折。”

个人感受:我们在做软件时要有耐心有耐心,但又不能太拖沓,不能

等自己做完外界地需求就过时了,我这两天优化了一个疫情信息展示系

统,但感觉就有些晚了,相关的web应用几个月之前就有了,我们只是

在做作业中学习,以后我们要盯住这种契机,要有敏感性。

解决方案:保持敏锐的洞察力

posted @ 2020-06-05 22:03  XiaoGao128  阅读(158)  评论(0编辑  收藏  举报