网站建设一般是用哪个软件,在哪家公司建设网站好,酒店行业网站建设方案,做网站怎么删除图片15.3.0 案例分析 可以看看这两个学生项目的例子#xff0c;推断出这些团队的血型#xff1a; STG游戏的跳票(为了完美#xff0c;推迟了7天#xff0c;但是7天之后也没有发布……) [i] 英语学习软件(说了“明早发布”#xff0c;但是明早一直没到)[ii] 15.3.1 反动分子阿… 15.3.0 案例分析 可以看看这两个学生项目的例子推断出这些团队的血型 STG游戏的跳票(为了完美推迟了7天但是7天之后也没有发布……) [i] 英语学习软件(说了“明早发布”但是明早一直没到)[ii] 15.3.1 反动分子阿超 在最后的稳定阶段阿超不断地把事情推到下一个版本二柱和果冻都不耐烦了——为什么不拼一下把所有事情在第一版搞定 阿超 有两种做法—— 1. 根据事情的轻重缓急安排大部分事情在下一个版本做。正因为我们对项目、团队、商业模式有信心才会把很多事情安排在以后的版本中。 2. 拼一下把所有事情搞定后果是大家都累得够呛[leal2] 然后人也走了没有人有兴趣做下一个版本。 二柱 我记得当年我们公社组织修水利的时候大家都拼了老命有几个前辈都牺牲了才把水库修好……难道这些不是有价值的么 果冻 对我记得山坡上还用巨石刻了一些标语有两个前辈就是牺牲在炸开巨石刻字的时候。 阿超 是啊现在看起来那些刻在山上的标语是属于可“cut”的功能。至少我们可以把它推迟到下一个版本。到今天我们大家都意识到刻巨大的“人定胜天”标语不是特别重要的“功能”对么这样岂不更好当年我们的叔叔伯伯们的确没有必要“誓死完成”所有的任务。 二柱 要在以前你就是反动分子。 阿超 我们写商业软件是要赚钱养家如果自己都做得疲惫不堪精神不振那拿钱来养啥如果还要刻字我建议在山坡上刻“以人为本”几个大字。 15.3.2 银弹之战 银弹为了避免项目的成员为了一些问题争执不休移山公司发明了银弹(Silver Bullet)这一工具。简而言之就是每个角色的代表(Dev/Test/PM)在项目过程中可以使用有限次的“停止争论按我说的办”的武器 – 银弹。银弹一出大家就要听话。当然银弹用一个少一个下次有争论的时候别人就更有机会使用这个手段了。 讨论 - 银弹真的有用么 15.3.3 扁鹊三兄弟 果冻 我听说了萝卜和白菜的故事其实类似的事儿古代早已有之请看一段关于“扁鹊三兄弟”的古文 王独不闻魏文王之问扁鹊耶曰‘子昆弟三人其孰最善为医’扁鹊曰‘长兄最善中兄次之扁鹊最为下。’魏文侯曰‘可得闻邪’扁鹊曰‘长兄于病视神未有形而除之故名不出于家。中兄治病其在毫毛故名不出于闾。若扁鹊者镵血脉投毒药副肌肤闲而名出闻于诸侯。(《鶡冠子·卷下·世贤第十六》)[leal5] 扁鹊是这么说的“俺大哥治病是看病人的神色病还没有表现出来他就把病给治了所以他的名声不出家门。俺二哥治病是在病人稍有不适的时候就把他们搞定所以他的名声不出巷子。而我扁鹊看病用的是疏通血脉的针、有毒副作用的汤汁、埋入肌肤之内的草药。所以我的名声反倒传遍了各个诸侯国。” 二柱 这个跟王屋河的防洪是一个道理上游搞得好不发洪水没人知道下游要决堤了一堆人上去堵死伤几个就出名了。我们最善于搞末端治理。 在软件开发上如果项目早期就发现并解决了问题除了“家里人”没人知道项目中期发现问题并解决项目的许多相关人员“公司”都知道了项目后期出了问题我们要加班重写代码hack原来的设计开一些后门来解决问题(下一些副作用很大的猛药)总算把项目给救活了这时候全公司的人都知道了。 阿超 我记得小学六年级学过“曲突徙薪”的故事也讲了类似的道理。我们往往奖励末端治理的英雄但是最初提建议的人未必得到奖励移山公司会不会也是这样 15.3.4 分析一些著名的失败项目 - 例如电脑控制的丹佛机场行李系统。 如果你们小组要给这个项目做 Postmortem你会怎么总结呢? http://calleam.com/WTPF/?page_id2086 http://www.nytimes.com/2005/08/27/national/27denver.html Denver Airport to mangle last bagThe baggage system at Denver : prospects and lessonsMSNBC on Denver’s Automated Baggage System http://www.computerworld.com/article/2556725/it-project-management/united-axes-troubled-baggage-system-at-denver-airport.html [i] http://www.cnblogs.com/buaashine/archive/2012/12/17/2821563.html#2590003 [ii] http://www.cnblogs.com/SuperBrothers/archive/2012/12/18/2822585.html 15.3.5 一个Postmortem 的实例 移山公司 Stone 项目 Postmortem 结果 1. 我们的软件要解决什么问题是否定义得很清楚是否对典型用户和 典型场景有清晰的描述 想做的事情还是太多导致很长时间不能集中精力。 2. 是否有充足的时间来做计划 有时间但是大部分人并不知道如何利用这一段时间来做计划。 3. 团队在计划阶段是如何解决同事们对于计划的不同意见的 主要通过喝酒聊天解决另外阿超有某种“光环”大家对他有些崇拜 这样他说的话别人都比较容易接受也没有特别强烈的不同意见。 计划 1. 你原计划的工作是否最后都做完了如果有没做完的为什么 很多事情都没做完大家认为最后没做完的事情都是可有可无的。 2. 有没有发现你做了一些事后看来没必要或没多大价值的事 很多但是大家认为与其不断地争论某些事情有没有必要不如做了 再说。 3. 是否每一项任务都有清楚定义和衡量的交付件 大部分都没有因为我们大家都不知道做到多少才叫“好”。有些情况下 大家对细节过早地进行讨论花了很多时间。不如等到后来再讨论。 4. 是否项目的整个过程都按照计划进行 基本上因为阿超的“光环”大家大部分情况下都听他的。 5. 在计划中有没有留下缓冲区缓冲区有作用么 有缓冲区原来认为没有必要后来发现还是有用的。主要是各人进 度不一有些模块不断地有一些小问题花了很长时间才能做好。 6. 将来的计划会做什么修改(例如缓冲区的定义加班。) 应该明确缓冲区的长度。 资源 1. 我们有足够的资源来完成各项任务么 很多情况下花了不少时间来设置机器以及设置用来测试的数据。 2. 各项任务所需的时间和其他资源是如何估计的精度如何 开始精度很粗略后来随着项目任务的加重大家只顾得上干活没 时间考虑精度问题。 3. 用户测试的时间人力和软件 / 硬件资源是否足够 4. 你有没有感到你做的事情可以让别人来做(更有效率) 比如网页的 CSS 设计最好由美工设计来做开发人员最后做实现即 可。我们要有专职的设计不要临时拉人来帮忙。因为临时帮忙的设 计师对整个项目了解不多事后也找不到他。 变更管理 1. 每个相关的员工都及时知道了变更的消息吗 由于大家都坐得比较近小道消息传播得比较快。 2. 我们采用了什么办法决定“推迟”和“必须实现”的功能 用了“银弹”除了导致一场短时间的斗殴之外还可以。银弹的目 的就是一种威慑。 3. 项目的出口条件(Exit Criteria)是否得到清晰的定义 大家都不太懂“出口条件”是什么经过这一个项目之后稍稍清楚了一些。但是说实在的在这个项目里面我们没有用到太多。 4. 对于可能的变更是否能制定应急计划 基本没有到时候随意抓人顶上。 5. 员工是否能够有效地处理意料之外的工作请求 规定所有请求都转到 PM 那里处理这样减轻了开发人员的压力让 他们有大部分时间花在自己那一亩三分地上。 设计 / 实现 1. 设计工作在什么时候由谁来完成是合适的时间合适的人么 有些界面的设计过早大家为了字体的大小、按钮的尺寸争论事实 上这些事情不应该由开发人员在项目早期来做。 2. 设计工作有没有碰到模棱两可的情况团队是如何解决的 很多大家都不知道如何解决。就看具体执行的人是如何解决的有 的解决得好大家并不知道出过问题有的经常拿出来讨论大家都 知道问题在哪里但是没法达成一致。 3. 团队是否运用单元测试(Unit Test)、测试驱动的开发(TDD)、 UML 或者其他工具来帮助设计和实现这些工具有效么 运用了单元测试的员工整体来看 Bug 不多没有用单元测试的员工 后期比较忙。 TDD 要求 PM 要清楚地确定功能说明(Spec)我们目前还做不到 这一点。 一个好处是大家都追着 PM 要 Spec弄得 PM 的压力很大以前 谁都不搭理 PM 的 Spec。 4. 什么功能产生的 Bug 最多为什么 交易功能由于牵涉的面太多Bug 也最多。 5. 代码复审(Code Review)是如何进行的是否严格执行了代码规范 刚开始还像那么回事后来就变成走走形式。往往是“小飞我要提 交代码了审核人填你的名字怎么样”其实小飞后来也没看代码。 测试 / 发布 1. 团队有没有测试计划为什么没有 我们有测试计划而且因为有了计划测试人员好像不再像无头苍蝇 一样胡乱测试。 2. 有没有做过正式的验收测试 有些测试人员最后不敢说验收测试不成功似乎是迫于某些开发人员 的“淫威”。 3. 团队是否有测试工具来帮助测试 有。 4. 团队是如何测量并跟踪软件的效能的从软件实际运行的结果来看 这些测试工作有用么应该有哪些改进 TFS 还是很有用的至于改进有这样一些建议 1)输入 Bug 还是步骤比较多有很多需要手动重复填写的字段。 2)不是所有的 Bug 或 Task 都记录在 TFS 中。 5. 在发布的过程中发现了哪些意外问题 有些功能在新的机器上不能工作因为很多设置没有明确的定义也 没有记录。软件发布时这些设置没有能正确地拷贝到发布的机器上去。 这说明很多关于这个系统的“知识”还没有形成文字还是保留在某 些人的脑袋中。 6. 我们学到了什么如果历史重来一遍我们会做什么改进 【略】 15.3.6 维护和运营 维护和运营一个大型网站有技术含量么 值得钻研么 下面是一个事例 【出生在德国的霍尔斯对工作的质量要求极高他发现当一个网站服务器数量多到一定程度后永远有一些服务器会处于宕机状态虽然可以将用户请求转到别的服务器上但如果衔接得不好用户体验就不好。而服务器之间、数据中心之间的服务请求如何转移里面大有学问。以前的互联网公司不管多么大都没有重视这个问题因为工程师们觉得这不是一个技术活。霍尔斯让他的一个学生来解决这个问题要求做到从监控到流量的转移完全自动化。他的那个学生开始也觉得这个工作太没有技术含量不愿意做霍尔斯指出这不仅很有意义而且很有研究价值这个问题一旦解决就说明可以用廉价、质量稍差的服务器(比如PC)提供和那些昂贵的高稳定性的服务器(比如IBM和太阳公司制造的大型服务器)同样可靠的服务。霍尔斯最终说服了他的这位学生接受这项工作后者不负众望解决了问题。霍尔斯和他的学生解决的这个看似细小而又没有技术含量的问题实际上恰恰是其他公司难以提供和Google同样稳定的服务的原因。更重要的是它使得Google可以使用最廉价的服务器运营成本就比行业的其他公司低很多。】——《浪潮之巅》