掌握编程 已翻译 100%

ismdeep 投递于 2017/07/07 22:36 (共 5 段, 翻译完成于 10-21)
阅读 2073
收藏 32
6
加载中

通过对优秀程序员的多年观察,我观察到了他们工作流程中的某些常见模式。通过对所职教的熟练程序员的几年,我观察到他们缺失这些模式。我已经看到了引入这些模式的不同之处。

以下是高效程序员从这个星球上宝贵的3e9秒中获得最大收益的方法。

这里的主题是扩展你的大脑。熟工学会通过立即解决更多问题来解决更大的问题。精通之人通过一次解决更少的问题来学习解决比这更大的问题。其中部分智慧在于细分,以确保整合单独的解决方案将是一个小问题,而不仅仅是一起解决它们。

Tocy
Tocy
翻译于 2018/10/09 17:25
0

时间

  • 分片。完成一个大项目时,将其分割为小的切片,并重新排列这些切片以适合你的场景。我总是可以更好地分割项目,我总能找到满足不同需求的切片的新排列。

  • 一次做一件事。我们如此专注于效率,以致于我们在一次降低开销的尝试中减少了反馈周期的数目。这导致难以调试的情况,其预期成本大于我们所规避的周期开销。

  • 使它运行,确保其正确,使其快速。(一次做一件事、分片和简单改动的例子)

  • 简单的改动。当面对困难的改动时,首先要简化之(警告,这可能会很难),然后完成简单的改动。(例如分片、一次做一件事,集中,隔离)。分片的例子。

  • 集中。 如果你需要改动多个元素,请首先重新排列代码,以便只需要在一个元素中进行改动。

  • 隔离。如果你只需要改动元素的一部分,则提取该部分以使整个子元素发生改动。

  • 基线测量。通过衡量当前世界状况来启动项目。这违背了我们开始修正错误的工程本能,但是当你测量基线时,你实际上会知道你是否在修正什么。

Tocy
Tocy
翻译于 2018/10/16 10:11
0

学习

  • 表明想法。在运行代码之前,准确预测会发生什么。

  • 实际猜测。当程序行为不正常时,在做出改变之前,准确地阐明你认为错误的部分。如果你有两个或更多猜想,请予以鉴别区分。

  • 删除无关细节。在上报错误时,请找到最短的复现步骤。在隔离错误时,找到最短的测试用例。在使用新的API时,请从最基本的示例开始。“所有这些东西都可能不重要”,在它是错误的时候,这是一个代价很高的假设。

    • 例如,查看手机上的一个bug,可使用curl复现

  • 多维度。在不同维度间自由穿梭。也许这是一个设计问题,而不是测试中的问题。也许这是一个人的问题,而不是技术问题[骗人,这总是对的]。

Tocy
Tocy
翻译于 2018/10/11 17:18
0

超越逻辑

  • 对称性。几乎相同的事物可以分为相同的部分和明显不同的部分。

  • 美学。美丽是一种强大的攀登阶梯。它也是一种对蔑视的解放之阶梯(例如将一堆函数内联成一个巨大的集合)。

  • 韵律。等到合适的时刻可以节省能量并避免混乱。在行动之时快速行动。

  • 权衡。所有决策都需要权衡。知道决策取决于什么比知道今天选择哪个答案(或者昨天你所选择的答案)更重要。

Tocy
Tocy
翻译于 2018/10/09 16:32
0

风险

  • 兴趣列表。当次要的想法出现时,请记录之并快速恢复继续工作。当你到达停靠点时重新阅读此列表。

  • 喂养想法。想法就像受惊的小鸟。如果你吓跑了他们,他们就会停止造访。当你有一个想法,喂它一点吃的。尽可能快地证明其错误性,但需要基于数据而不是出于缺乏自尊。

  • 80/15/5。将80%的时间花在低风险/合理报酬的工作上。将15%的时间花在相对高风险/高回报的工作上。无论收益如何,将5%的时间花在让你愉悦的事情上。教导下一代完成你80%的工作。当有人准备接任时,你的15%实验中的一个(或者,不那么频繁,你5%实验中的一个)将获得回报,并将成为你的新80%。重复这一过程。

结语

这个大纲中的流程似乎是通过管理时间来降低风险,通过增长学识以使用整个大脑并快速分类想法来审慎涉险。

Tocy
Tocy
翻译于 2018/10/11 17:42
0
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(0)

返回顶部
顶部