1. 顶峰蝈蝈首页
  2. 顶峰杂谈

大梦杂谈——IT开拓者之坑(3)

第三讲:落地执行

(1)没有最终决策

There Are No Final Decisions

大梦杂谈——IT开拓者之坑(3)

工作中并不存在最终的决策,也没有什么能永垂不朽!

如果某个想法是你唯一的想法,再没有什么比这更危险的事情了。在许多关键决策做出之后,目标会变得如此之小,以至于如果它一动,或者改变方向,或者东京的蝴蝶扇动翅膀,你都会错过目标。而且可能偏出很远!错误在于假定决策是浇铸在石头上的,同时还在于没有为可能出现的意外做出准备!

大梦杂谈——IT开拓者之坑(3)

要把决策视为是写在沙滩上的,而不要把它们刻在石头上。因为大浪随时可能来到,把它抹去。

(2)跳出思维定式

Don’t Think Outside the Box  –  Findthe Box

不要在盒子外面思考——要找到盒子

请用3条直线把四个点连起来,并且返回起点。

大梦杂谈——IT开拓者之坑(3)

大梦杂谈——IT开拓者之坑(3)

有时候,你会发现自己遇到了非常困难的“迷题”。某项工程设计或产品你就是找不到头绪,或是你发现有些代码比你想象的要难以编写得多,也许它看起来是不可能解决的,但实际上真的那么困难吗?

解开“迷题”的秘诀是找到真正的(而不是想象的)约束条件,并在其中找出解决方法。因为有些约束是绝对的;有些只是先入为主的。绝对的约束必须受到尊重,不管它们看上去有多讨厌或多愚蠢,另一方面,有些表面的约束也许根本不是真正的约束!

(3)估算能力—时间、成本、质量的模型

大梦杂谈——IT开拓者之坑(3)

数量多,速度快,质量好,成本省。最早由周恩来提出,后经毛泽东之口成为全国的标准。事实上,它是存在问题的。当我们抱有良好的心愿,努力去做了应该去做的事情,结果不一定是胜利,还很可能悲剧。造成这样结果的原因有很多,其中最重要的一个因素是估算能力

大梦杂谈——IT开拓者之坑(3)

任何一个工程项目或产品,都可以大致分为所用时间、质量要求、投入成本这三个参数的模型来描述!

大梦杂谈——IT开拓者之坑(3)

想做要求一般、规模中等的项目,它至少要投入与之对应的资金和人力劳动,还有用掉一定的时间才能完成。

大梦杂谈——IT开拓者之坑(3)

如果想加快时间,就要相应多投入更多资金和人力。这还要在正确合理的执行才能完成,否则欲速则不达!

大梦杂谈——IT开拓者之坑(3)

如果想省钱,就要用掉更多的时间,才能达到预期的效果。

大梦杂谈——IT开拓者之坑(3)

如果想提高质量,还想节省时间,那就要用掉更多的资金和人力。

大梦杂谈——IT开拓者之坑(3)

又好、又快、又省这是错误的思考模型!你可以三选一(想要高质量,就放弃省钱省时间的打算),甚至可以三选二(想要高质量,快速完成,就别想省钱),如果什么都想要,很可能什么都得不到!

整个项目被分而治之,确定执行方法后,项目被拆分为一个个子任务,每个子任务都可以被量化成人/天的工作量和资金消耗数量。然后聚沙成塔,通过每一个严谨的细节来组成整体的和谐。除了冷静的心志,还要具备经验和能力,没有侥幸也没有妄想!

我们都是在一个时间和资源有限的世界上工作,如果你善于估计出事情需要多长时间完成,你就能更好地在两者都很匮乏的情况下生存下去(并让你的老板高兴)

可悲的是人们总是抱着美好的愿景,然后义无反顾的投入到被欲望驱使的奋斗中去!但事物有它发展的客观规律,自然力远比人类想象的聪明,它既不美好也不狰狞,它只是冷酷的、面无表情的看着一切自然发展。如果没有冷静、客观、可落地的估算能力来指导执行,一切伟大的idear都是吹牛B!

(4)减少重复

•重复发明轮子:重新发明别人已经发明的东西

•重复自己的工作:重零去做自己曾经做完过的事情

•重复团队其他人的工作:不参考别人的经验,然后重复做你团队其他人正在做的事情。

这些是智慧、时间、成本的巨大浪费!但是浪费每时每刻都在发生着。如何避免重复带来的浪费呢?回答是:那就请让重复利用变得容易!Make it Easy to Reuse

你所要做的是营造一种环境,在其中要找到并复用已有的东西,比自己编写更容易。如果不容易,大家就不会去复用了!而如果不进行复用,你们就会有重复浪费的风险!

(5)快速试错(原型、曳光弹)

预备、开火、瞄准……

在黑暗中用机枪射击有两种方式。你可以找出目标的确切位置(射程、仰角及方位)。你可以确定环境状况(温度、湿度、气压、风,等 等)。你可以确定你使用的弹药筒和子弹的精确规格,以及它们与你使用的机枪的交互作用。然后你可以用计算表或射击计算机计算枪管的确切方向及仰角。如果每 一样东西都严格按照规定的方式工作,你的计算表正确无误,而且环境没有发生变化,你的子弹应该能落在距目标不远的地方。

大梦杂谈——IT开拓者之坑(3)

或者,你可以使用曳光弹。

曳光弹与常规弹药交错着装在弹药带上。发射时,曳光弹中的磷点燃,在枪与它们击中的地方之间留下一条烟火般的踪迹。如果曳光弹击中目标,那么常规子弹也会击中目标。并不让人惊奇的是,曳光弹比费力计算更可取。反馈是即时的,而且因为它们工作在与真正的弹药相同的环境中,外部影响得以降至最低。

这个类比也许有点暴力,但它适用于新的项目,特别是当你构建从未构建过的东西时。与枪手一样,你也设法在黑暗中击中目标。因为你的用户从未见过这样的系统,他们的需求可能会含糊不清。因为你在使用不熟悉的算法、技术、语言或库,你面对着大量未知的事物。同时,因为完成项目需要时间,在很大程度上你能够确知,你的工作环境将在你完成之前发生变化。

在黑暗中发光的做法,边打边试错!曳光弹行之有效,是因为它们与真正的子弹在相同的环境、相同的约束下工作。它们快速飞向目标,所以枪手可以得到即时的反馈。同时,从实践的角度看,这样的解决方案也更便宜。曳光开发与项目永不会结束的理念是一致的:总有改动需要完成,总有功能需要增加。这是一个渐进的过程。 (但是必须要有一定的估算能力做基础,否则胡乱打曳光弹也是不行的)

(6)维护规矩(破窗户理论)

在市区,有些建筑漂亮而整洁,而另一些却是破败不堪。为什么?犯罪和城市衰退领域的研究着发现了一种迷人的触发机制,一种能够很快将整洁,完整和有人居住的建筑变为破败的废弃物的机制。

大梦杂谈——IT开拓者之坑(3)

一扇破窗户,只有有那么一段时间不修理,就会渐渐给建筑的居民带来2一种废弃感————一种职权部门不关心这座建筑的感觉。于是又一扇窗户破了。人们开始乱丢垃圾。出现了乱涂乱画。严重的结构损坏开始了。在相对较短的一段时间里,建筑就被损坏得超出了业主愿意花钱修理的程度。

破窗户理论同样适用于软件开发,不要留着破窗户不修(低劣的设计、错误的决策、或者糟糕的代码)。如果能持续保持代码的干净,没有人愿意做第一个弄脏它的人。

维护规矩,不可图一时的省力,把系统带向混乱的深渊!

(7)正交系统

如果你想要制作易于设计、构建、测试及扩张的系统,正交性是一个十分关键的概念,一旦学会了直接应用正交性原则,你奖发现,制作系统的质量立刻就得到了提高。

“正交性”是从几何学借来的术语,如果两条直线相交成直角,它们就是正交的,用向量术语说,这两条直线互不依赖,沿着某一条直线移动,你投影到另一条直线上的位置不变。

我们需要设计自足的组件:独立,具有单一、良好定义的目的。如果组件是相互隔离的,就知道能够改变其中之一,而不用担心其余组件。只要你不改变组件的外部接口,你就可以放心:不会造成波及整个系统的问题。这样可以提高生产率与降低风险。

如果你对正交的组件进行组合,生产率会有相当微妙的提高,假定某个组件做M件事情,而另一个组件做N件事情,如果它们是正交的,而你把它们组合在一起结果就能做 M 乘 N件事情。但是,如果这两个组件是非正交的,它们就会重叠,结果能做的事情就更少。通过组合正交的组件,你的每一份努力都能得到更多的功能!

主要思路来自:《The Pragmatic Programmer》

原创文章,作者:大梦,如若转载,请注明出处:https://www.crazytop.cn/371/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code