从南极之争谈软件架构十个技巧,及…
http://www.csdn.net/article/2013-08-20/2816639-amazing-race-to-the-south-pole-teach-us
随着云计算带来的低创业门槛、大数据潮流的盛行,越来越多的人加入了这场创业风暴。然而众多的淘金者中,真正满载而归的却是少之又少。这里为大家分享HighScalabilty创始人Tod Hoff结合南极穿越之争带来的成功软件架构经验,及成功团队需具备的一些特性。以下为译文:
每个软件打造的核心都存在一次漫长的探险,或许你会觉得夸张,但是在 皇家卑诗省博物馆参观 Race to End of Earth(罗威探险家 Roald Amundsen和英国海军官员 Robert Scott于1911年-1912年完成的 穿越南极之战)展览时,两支队伍采用的不同途径让我备受启发——那些同样存在于软件开发过程中决定成败原则。
我希望我可以重现 参观时的体验。随着参观的进行,我不断的对Scott的选择产生质疑,并叹服于Amundsen的老道,其中核心直指开发的两个极端Agile(Amundsen)与Waterfall (Scott)。
首先我们看两个比赛的背景知识
简而言之,率先抵达南极的队伍获胜。两个领队以完全不同的途径去完成这一目标,方法源于他们不同的目标、经验以及气质。比赛的结果是Amundsen比Scott早33天抵达,同样队伍的状态上Amundsen更是远胜Scott。归途中,Amundsen队伍无损,而Scott小队全军覆没。
更多的细节可以参考:
- Comparison of the Amundsen and Scott Expeditions
- 10 Mistakes That Caused the Most Punishing Nature Expedition in History
- The South Pole Fifty Years After
我们的重点则是可以运用于软件打造中的知识:
1. 单一的目标,这点让我感受颇深:Amundsen唯一的目标就是以最快的速度抵达目标,而Scott则要兼顾科学研究。
对于Scott来说,科学研究这个使命甚至优于资源与人员配备。而Amundsen的所有目的都是赢得比赛,还有平安归来。
想比之下Scott的双重目标存在很多矛盾。不错,那时确实不乏悠久的帆船科学研究历史(比如达尔文),然而达尔文并不是进行比赛,他们的船很大,同时科学研究只是附加目标,而环境也远没有南极那么恶劣及荒无人烟。
Fred Wilson在谈专注的力量时 经常引Steve Jobs为例——“我们专注于打造一个适合所有场景电脑的生产线,然后逐渐关闭其它的生产线”。专注是类似Minimal Viable Products及 time box scheduling产品背后的原动力,Amundsen专注在比赛上,所以一切策略都以这个为目标展开。
2. 使用简单,已被验证的技术。比赛中最难以接受的就是Scott的计划选择了一组复杂且未经验证的运输技术。
Amundsen的计划是简单的,他们选用狗拉雪橇;而在那时,狗拉雪橇的这个技术无疑是得到论证的,因此奇怪的应该是不选用狗的人。
然而在早先的旅行中Scott对狗有着非常不好的体验,所以他并未选用这个运输途径。取而代之的是,Scott选用了motor-sledge,这是机动雪橇的早期版本。在那个时候,这还是个试验中的技术,最终3架motor-sledge都在途中损坏。然而当下的问题不是讨论他们为什么有那么差的体验,而土著人民却非常善于用狗,而是缺乏对事物的详细了解并往下定论。
小马的任务是搬运补给,但是很小的蹄子让其不能胜任工作,因为它很容易受到潮湿和冰冻的侵害。9匹小马在旅行开始时就失去了作用,然而马和motor-sledge的补给只能储存在船上。对比而言,狗无疑更适应战场,它们可以吃南极洲捕获的企鹅和海豹肉。
使用人力拉沉重的雪橇,本来只作为应急,但是马和motor-sledge的缺失让这个方案执行了3/4的旅途。而雪橇还在不停变重,因为沿途他们不得不收集一些岩石以作科学研究。这样,问题就在于他们根本没有足够的食物以支撑整个过程。他们并不清楚,一天吃4000卡路里的他们却需要消耗6000到10000卡路里的能量。
3. 定制、测试、重复。Amundsen的计划很周密,不留任何漏洞。当他发现设备达不到需求时,会自己动手,他亲自做了防风镜、滑雪板、犬绳及肉干。这种自力更生正是开发者需要具备的品质:
所有Amundsen的工具都出自自己的工坊,并经过一次又一次的提炼。Amundsen在制造工具时使用了两个信条:第一,远甚于批量生产的设备;第二,参与制造,可以确保设备在比赛中的表现。
4. 冷静且无情的。捕获焦点,必须具备认知重点的能力,只做必要的事情。
Walter Sullivan在The South Pole Fifty Years After使用另一个方式完美的阐述了这个道理:
登月通过一连串的火箭完成,而在这个过程中这些火箭被逐一抛弃;那个挪威人使用了同样的策略,在旅途中不断抛弃虚弱的动物,并且作为其它动物和人的食物。
5. 灵活的。Amundsen原计划是去北极,但是在听说两个美国人已经抵达北极后,果断的将目标转向了南极,以获取世界第一这个奖励。
6. 从实际出发。Scott使用人拉雪橇不仅仅是为了运输,更加入了一种浪漫主义风格。Scott日记的背后甚至反射出Wagner的身影:
在我的记忆中,没有任何与狗有关的探险可以达到这样的高度——人们直面险阻,并用自己的双手达到目的……无可否认的是,在这种情况下,征服才是更高贵、更华丽的胜利。
7. 技巧让一切都变得不同。Amundsen招募了多个经验老道的滑雪人并组成团队,相比,Scott的队伍无疑都是一些门外汉,并未针对需求进行训练。
8. 选择正确的团队。Scott的团队有许多来自英国的绅士,而Amundsen则选择了一些具有户外经验并有不同技能的工匠。
9. 错误的叠加。Scott的团队注定无法赢得比赛,然而他们的死亡却是由一系列的错误叠加引起。天气比预期的更冷,这样导致他们返程时在预定时间并未到达下一个补给点,补给点存放了食物、燃料及其他物资。当Scott、Wilson和Bowers三人死亡时,离下一个补给点仅11英里远。马、motor-sledge及一个错误的补给点判断,让下一个补给点离他们遥遥无期。悲剧的铸成绝不因一个错误,而是由一系列错误叠加形成。
10. 后见之明。在事情开始时没有什么是清晰可见的,然而在结果产生时一切都已尘埃落定。Scott在开始时做了他认为最合适的决策,而其它人也同意他的观点。每一个项目也是如此,没有人会愚蠢到从开始就放弃;然而通往成功的路径总是很少,并且沿途充满了太多的岔路。所以我们有必要去吸取一些成功的经验,多了解一些最佳实践。
忆往昔,不难发现成功的团队总是具备一些共同的特性:规模小、良好的引导、专注、高技巧及具备丰富的经验,同时他们还有着健壮的计划、丰富的资源以及强大的战场适应能力。
从南极之争谈软件架构十个技巧,及…相关推荐
- 从南极之争谈软件架构十个技巧,及成功团队具备的气质
随着云计算带来的低创业门槛.大数据潮流的盛行,越来越多的人加入了这场创业风暴.然而众多的淘金者中,真正满载而归的却是少之又少.这里为大家分享HighScalabilty创始人Tod Hoff结合南极穿 ...
- 浅谈数据库设计技巧(上)
浅谈数据库设计技巧(上) 说到数据库,我认为不能不先谈数据结构.1996年,在我初入大学学习计算机编程时,当时的老师就告诉我们说:计算机程序=数据结构+算法.尽管现在的程序开发已由面向过程为主逐步过渡 ...
- 由塔科马大桥事件 谈软件架构
由塔科马大桥事件 谈软件架构 经常,我们会涉及系统架构.面向对象的架构(SOA).软件架构等词,那么到底什么是"架构"?什么是"软件架构"?"系统架构 ...
- 嵌入式软件开发工程师谈软件架构的设计
嵌入式软件开发工程师谈软件架构的设计 注:此处嵌入式特指基于linux平台,单片机和其他rtos不在讨论范围 笔者从事嵌入式软件开发有6,7个年头,bsp,驱动,应用软件,android hall,f ...
- 浅谈HR谈薪水的技巧
应聘和 招聘 的双方都会很关注一个薪资问题,那么除了应聘者谈薪资有技巧之外,招聘者在谈薪资上也有很大的技巧. 一.不要开始就谈薪资 面试时,HR经理应该避免一开始就谈论薪资.因为需要在面试过程中积累对 ...
- 飞浆AI studio人工智能课程学习(2)-Prompt优化思路|十个技巧高效优化Prompt|迭代法|Trick法|通用法|工具辅助
文章目录 优化思路 上节课的例子 问题分析 思路解析 Prompt优化技巧 Prompt优化原理 十个技巧高效优化Prompt 迭代法 Trick法 工具法 通用技巧│定基础 通用技巧│做强调 需求强 ...
- 司铭宇老师谈大客户销售技巧之如何做好大客户营销
司铭宇老师谈大客户销售技巧之如何做好大客户营销 做好大客户销售首先我们需要明白什么是大客户,是不是客户很大,客户体量大就是大客户,其实不是.每个人理解的大客户和每个业务员本身的大客户都是不同的.所谓大 ...
- 怎样与领导谈加薪以及谈加薪的技巧
[与领导谈判时,这些忌讳千万别犯呦! ] ①不和任何人比较: ②不打听他人工资: ③不以私人原因阐述自己的加薪理由,如:物价上涨.生活困难等: ④不威胁老板或上级:( 要知道,成就一个人很难,毁一个人 ...
- 6月8日14:00,温昱谈“软件架构设计智慧之旅”
2007年06月04日 22:18:00 温昱谈"软件架构设计智慧之旅" --CSDNF 2F 俱乐部&博文视点名家讲谈活动之十二 活动形式及地点:CSDN嘉宾在线聊天室, ...
最新文章
- 独家 | 什么是生成模型和GAN?一文体验计算机视觉的魔力(附链接)
- 吴恩达机器学习笔记 —— 10 神经网络参数的反向传播算法
- java比较运算_Java比较运算符
- linux crontab 每隔10秒执行一次
- 由return联想到的
- Unknown/unsupported param List(--dist-cache-conf
- 转lua解释执行脚本流程
- 学习分布式不得不会的BASE理论
- BASE64学习小记
- ZZH:魔兽世界之000:MPQ
- mysql查询bom清单_按BOM清单展开物料及需求(SQL)
- iOS开发-思维导图(初级)
- [译] 为什么你要学习 Go?
- 了解与MDIO/MDC接口相关的22号、45号条款
- python绘图设置正交坐标等距_python – 使用cartopy在其他项目中绘制投影数据
- iOS Xcode提交IPA时收到苹果邮件ITMS-90338: Non-public API usage
- 【软件测试面试】面试技巧,让面试官记住的自我介绍,疯狂收割offer.....
- 微信小程序weui的使用
- 关于有道云笔记md文档图片不显示的解决方案
- 2023凉陌ChatGPT付费创作系统V4.6+功能强大/有后台