曳光弹
曳光弹本意是指在黑夜里向地方区域发射的弹药,这里用到了类比(感觉有点暴力),它适用于新的项目,特别是我们从未构建过的东西时。我们面对的问题有:
1.没有新项目的开发经验
2.用户需求不明确,表达不清
3.开发时会面对大量的未知的事物:新的算法、技术、库或者语言
4.开发过程中需求和开发环境可能改变
解决方法:
1.经典的做法是把系统定死,制作大量文档,列出详细的需求,确定所有的未知因素,限定环境。很显然,这种做大的难度非常大而且没有灵活性
2.然而,注重实效的程序员会使用更加灵活的方法:曳光弹。他的思想是根据用户的需求先写出一个基本的、也有可能很简陋的框架,然后在根据客户的需求以及运行效果进行修改。
曳光弹的优点:
1.用户能够及早地看到东西
2.开发者构建了一个他们能在其中工作的结构
3.你有了一个集成平台
4.你能够知道工作的进展
注意,曳光弹不一定总能接近或者指向用户的核心需求。
估算
估算是一项非常重要的技能,将这项技能发展到你对事物的数量级有知觉的程度,你就能展现出魔法般的能力,确定他们的可行性。
衡量估算结果的准确性-----单位
1.比如说估算时间,我们给出的单位若果不合适容易引起误解,建议的时间单位是
时常 | 单位 |
1-15天 | 天 |
3-8周 | 周 |
8-30周 | 月 |
30+周 | 给出之前好好思考 |
如何估算?
1.根据问题估算,分析问题
2.理解问题的核心
3.根据个人对问题的理解,建立粗略、就绪的思维模型骨架。比如你要估算响应时间,那么你的模型中就要涉及服务器和某种到达量。估算的关键是能够根据问题准确的建模。
4.把模型中的实体(组件)分别列出
5.给每个组件估算时间
6.计算结果
学会估算,追踪自己的估算能力,最好能把每次的估算都记录下来,一方面可以看看估算是否准确,另一方面有助于自己成长。
使用工具----君子性非议也,善假于物也
Unix哲学:提供“锋利的小工具”,其中每一样都意在把一件事情做好----Unix因为围绕这样的哲学设计而著称。
shell与GUI
1.万能的shell。可以启动应用、调试器、浏览器、编辑器以及各种实用程序,可以搜素文件、查询系统状态、过滤输出等。
2.褒贬不一GUI,一方面,对于一些简单的操作,它可能更快、更方便,但是像移动文件、阅读MIME编码的电子邮件以及写信。这些操作也用GUI(图形化接口)操作,就会错过环境的某些优秀的能力。,你无法使常见命令自动化、无法利用各种工具的全部力量。无法定制宏工具或者脚本文件。
使用一种可配置、可扩展、可编程的强力编辑器:Vim、Emac
源码控制,控制代码的版本。