打字猴:1.700492571e+09
1700492571 在你的环境中安全地探索、创造和应用。
1700492572
1700492573 建立探索环境
1700492574
1700492575 但是,你必须为你自己、你的团队、你的公司建立一个安全的实践环境才可以去探索、创造和应用想法。你不会希望你的心脏手术医生动手之前说:“我今天准备尝试用左手开刀,看看效果如何。”
1700492576
1700492577 这不安全,一名活生生的不知情的病人不适合做实验。
1700492578
1700492579 你可以在公司范围之外尝试,比如在家里做开源项目。这起码会减少产生负面结果的风险。但是仅仅这样不足以为你建立一个积极的学习环境。不论是在公司团队还是在黑夜里偷偷进行的独自实验,你都需要做到以下几点。
1700492580
1700492581 自由实验
1700492582
1700492583 很少有问题只存在唯一的最佳答案。你既可以用这种又可以用那种方式实现下一个功能,你会如何选择?都要!如果时间太紧张(什么时候不紧张?),至少每种方法要尝试做一个原型。这就是实验,你需要努力去做。在评估时间时,把它看作是“设计阶段”的一部分。你也需要确保这个实验不会对团队中的其他人造成不良影响。
1700492584
1700492585 能够原路返回稳定状态
1700492586
1700492587 安全性意味着,当实验出现问题时,你可以重新回到做出这些可怕改变以前的太平状态。你需要恢复到源代码之前的已知状态,然后再重新尝试。请记住,你必须回到上次正确的状态。
1700492588
1700492589 重现任意时刻的工作产品
1700492590
1700492591 回溯到源代码的前一个版本是远远不够的,你可能需要真正做到运行任意版本的程序(或相关工作产品)。你能运行这个程序去年或者上一个月的版本吗?
1700492592
1700492593 能够证实进展
1700492594
1700492595 最终,如果没有反馈,你一无所获。这项实验或者那项发明果真比其他的更有效吗?你如何知道的?项目在进步吗?这周实现的功能比上周多吗?你需要证实细粒度的进展——对你自己也对别人。
1700492596
1700492597 在软件开发领域,很容易搭建一个满足这些需求的基础设施。这就是我们所说的启动工具包(Starter Kit):版本控制、单元测试和项目自动化〔5〕。
1700492598
1700492599 □ 版本控制工具存储了你工作的所有文件的所有版本。不论你在写代码、文章、歌曲还是诗词,版本控制工具就像一个巨大的回退(Undo)按钮〔6〕。新发布的版本控制系统Git或者Mercurial都非常适合个人实验。
1700492600
1700492601 □ 单元测试提供了一套细粒度的回归测试。你可以使用单元测试结果来比较不同的方案,把它们看做进展的重要指标〔7〕。不论做什么,我们都需要客观的反馈来衡量进展。这是我们的工作。
1700492602
1700492603 □ 自动化把一切联系在一起,确保那些琐碎的机能都以一种可靠、可重复的方式运行〔8〕。
1700492604
1700492605 Starter Kit帮助你自由实验,风险相对较小。
1700492606
1700492607 当然,你的团队实践和文化必须允许这种探索和创造的方法。对任何人而言,支持的环境既可能创造也可能毁灭学习。一行禅师提醒我们关注基本归因错误(参见第5章,调试你的大脑),环境往往比个人因素更重要。
1700492608
1700492609 当你种菜时,如果长得不好,你不会责怪菜。你会寻找其他理由。菜可能需要更多的肥料或者水,或者少晒太阳。你绝不会怪罪菜。
1700492610
1700492611 ——一行禅师
1700492612
1700492613 实践单元
1700492614
1700492615 □ 如果你的软件项目还没有安全搭建(版本控制、单元测试和自动化),那么你需要马上做好。放下书。我会等你回来。
1700492616
1700492617 □ 你的个人学习项目需要同样的安全环境——不论是写代码、学习画画还是探索溶洞。准备好必备设施,培养出好习惯,让你的项目安全地探索。
1700492618
1700492619 □ 你知道halcyon的意思吗?Anthropomorphism呢?听说过一行禅师吗?你查找过他们吗?如果没有,你不想简单地尝试一下吗?(在Mac机上,你可以经常Control-click或者right-click一个单词,然后查找字典或者使用Google,非常方便。)
1700492620
[ 上一页 ]  [ :1.700492571e+09 ]  [ 下一页 ]