Skip to content
Manifesto for Minimalist Software Engineers in Chinese. 极简主义工程师宣言中文译文。
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CNAME
LICENSE
README.md

README.md

极简主义工程师宣言

🌐 中文翻译

Manifesto for Minimalist Software Engineers

  • 为帕累托法则奋斗
    • Fight for Pareto's law, look for the 20% of effort that will give you the 80% of results.
  • 优先级
    • Prioritize, minimalism isn't about not doing things but about focusing first in the important.
  • 完美主义是好东西的敌人
    • Perfect is enemy of good, first do it, then do it right, then do it better.
  • 扼杀在摇篮中
    • Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast.
  • 赋能
    • Add value. Think constantly how you can help your team and position yourself in that field/skill.
  • 基础优先
    • Basics, first. Follow always a top-down thinking starting by the best-practises of CS.
  • 非同凡想
    • Think different. Simple is harder than complex, which means you'll need to use your creativity.
  • 综合
    • Synthesis is the key of communication. We have to write code for humans not machines.
  • 保持空白
    • Keep it plain. Try to keep your designs with few layers of indirection.
  • 清除 kipple
    • Clean kipple and redundancy. Minimalism is all about removing distractions.

Ⅰ为帕累托法则奋斗

帕累托原则说明你的应用所取得的 80% 的结果是由 20% 的特性决定的。在计划下一个任务时,要把这个观点牢记在脑中。

最好的工程师能估算需求所需的付出,他们有足够的信息拒绝在最佳范围内之外的 80% 的工作。

践行这个法则!团队不是军队,公司付钱让你做出决定和承担责任,所以如果你觉得需求是多余的应该大声提出来。

你写过的最糟糕的代码就是你不再使用的代码。这样的代码被称为 YAGNI (You Are Not Gonna Need It).

你写过的最好的代码就是你没有写过的代码,因为它是唯一永不失败的代码。

Ⅱ 优先级

有一些 bug 的修复方法我称为沉淀(通过积累其他的 bug 来修复当前 bug),还有一些称为侵蚀(客户改变了他的主意)。这些都是利用优先级和等待,来把你从无价值的工作中拯救出来的例子。

极简主义并不是说不做事情,而是聚焦于最重要的事情。

Ⅲ 完美主义是好东西的敌人

可以寻找完美,但不是现在。迭代才是那位会及时给予你好的建议的朋友。

首先去做,然后做好,接着做得更好。

工程师们喜欢想象世界可以被设计,然而大自然却正相反。任何一个足够复杂的系统都不能由设计构建出来,它必须不断地进化

想象一些都在有条不紊地进行,然后别因为它工作地不好就惊慌。记住 Mosher 定律:程序有问题时不要担心。如果所有东西都没问题,你就失业了。

Ⅳ 扼杀在摇篮中

扼杀掉它,越快越好。不要因为把你努力了一个月的项目丢进垃圾桶。

当你从头开始,以往的经验会给予你创新的能力。

不断地评估你的工作。这就是精益创业这本书的主要内容,制作你的 MVP(最小化可行原型)然后验证它,如果它不合适,那就扼杀掉,你将会从中学到很多。

失败越快,学到越多。

Ⅴ 赋能

没有人知道所有事情。

尝试让你自己为你的团队赋能。你的团队最需要什么?哪一位是可扩展性方面的专家?哪一位最了解某种编程语言的细节?哪一位最聚焦于产品?哪一位是团队的协调者?

每一个团队都是不同的,所以你必须去接受并且选择,尝试分析出你自己以及团队优势和劣势。

学着爱上一件特别的事情并掌握好它。尝试像一个品牌一样,去定位你自己。你喜欢满足你需求的产品,而不是那些你已经自己做了很多事情的人。

和有同样爱好的人更容易相处是理所当然的事情,但是真正的力量在于那些能形成互补的人,想想 《A字特攻队》你就明白了。

Ⅵ 基础优先

在我们生命的晚期我们才会意识到基础的重要性。通常是一些老人声称他们已经回归基础。不要愚蠢到更不要那么晚才意识到这一点:首先注重基础知识。

在计算机科学中有很多非常有价值的概念,更好的是你可以将它们应用到每一个新的设计中。你应该总是尝试从他们开始自上而下地思考。

借用一句老话,软件开发中重要的三件事情是:架构、架构和架构。

这有一些基础的例子: Separation of concerns, Systems engineering theory, GOF design patterns, GRASP responsability patterns, SOLID principles, Cleancode smells & heuristics, Agile guidelines, Algorithmia, Data structures, HTTP specification...

在你开始挖掘如何使用特定的测试框架 Jasmine, JUint, Mocha 这些细节前,先开始学习如何编写可测试的代码(例如隔离应用程序的无状态代码并减少组件之间的耦合)。

Ⅶ 非同凡想

简单比复杂更困难,极简主义需要大量的创造力,才能找到用更少的钱去做更多的事情的新方法。

科技技能可以征服复杂,但是创造力才是简单的主人。

创造力是充满乐趣的智慧!所以享受这样的机会。

所以不要聚焦于工作得更多,而是如何聪明地降低工作量。多多考虑你的工作!关闭”自动驾驶“,离开你的舒适区并控制好。

以及,不要害羞。改变现状需要勇气。但是记住,你所生存地世界是由那些相信可能性的人创造的,而不是比你聪明的人创造的。

当然,有时候人们会觉得你是一个怪人,因为你在尝试不同的事情。但是如果你不是一个改革者,你就无法称为领导者。

举个例子,我非常确定我们很多人都觉得在公司的会议上浪费了太多的时间。因此,亚马逊的创始人兼首席执行官杰夫贝索斯(Jeff Bezos)在他的公司举办会议时,有一种特别的,显然是奇怪的方式。 当所有服务员到达会议室时,他们有30分钟的时间在严谨的沉默中阅读会议报告。 之后会议才可以开始。

Ⅷ 综合

我们必须为人类写代码而不是机器,所以综合就是沟通的关键。

一个很好的例子就是帕斯卡的名言:如果我有更多时间,我就会写一封更短的信。

尽量保持方法简单、类单一原则、更少的参数、避免多余的评论等待。当你没有东西可以删除时,你的工作就结束了。

“Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.” –Antoine de Saint-Exupery

译者注

Ⅸ 保持空白

在软件编程中,您可以通过添加另一层间接层来解决任何问题,除了间接太多的问题。这是事实,这意味着我们必须在设计的复杂性中找到平衡点。

抽象是很好的特性,它允许我们创建一个新的语义级别,在这个级别上可以绝对精确。然而,在某些情况下,比如重构,我们必须对全局有所理解,抽象就让这件事变得困难。

这就是为什么我们必须寻找一个可以进行划分的自然点,然后尝试理解不同的、可能的权衡之法。

一些例子:领域驱动设计中的根-叶范例, 控制器/工具范例, 高内聚/低耦合原理, 简答的 RESTful APIs...

Ⅹ清理 kipple

有一个名为 kipple 的概念来表示那些我们留存但是从未用过的东西。我们的房子里充满了这样的东西,我们的代码库也是如此。例如,那些我们害怕删除的遗留的方法、以防万一我们会再使用的库、过时的评论...

人类的本性是把事情复杂化,所以我们必须强化自己来简化。这是一个必须定期遵循的过程,识别哪些是 kipple 并销毁它。

极简主义者:这一切是为了避免分心,以便我们可以专注于重要的事情。

结语

由于我英语能力不及格(还有专业能力不够格...),所以很多翻译细节都是待商榷的。包括一些口语化的翻译。如果您对本文翻译有任何意见或建议,非常欢迎可以直接在 GitHub 上发起 PR 和 Issues。

以及有可能是我个人阅读能力差的问题,实际上有几条我觉得说得并不是十分严谨。我个人也持保留意见。但是集思广益,见贤思齐才是最好的学习态度,欢迎探讨。

原文载于:http://minifesto.org/,由于没有找到原文的许可,所以如果此文章有侵权嫌疑麻烦立刻通知我,我将会马上处理。

You can’t perform that action at this time.