开发者宣言

1、你是工匠,而不是工程师

工程师是让代码运行起来就可以。但是你是一个工匠,远不止这些,工匠需要通过不断练习提高手艺,其经验和才能需要达到艺术家的表现水平。

需要像一位手艺人中大师傅一样对待你的工作。


2、风格问题
不能因为我们构建的是基础设施和工具,就不能变得酷炫和时尚以及有趣。

圆滑与乐趣 vs. 强大与认真。

风格是通过设计和工作流程来表达。工作流程和设计决定了架构。

如果没有考虑我们的客户流程或内部团队流程的情况下,那就不要构建任何东西,因为如果工作流程有缺陷,那么架构肯定是有缺陷的。

工作流程与设计的迭代可能而且需要基础设施的重构。


3、疯狂专注于优雅和简约
你也许对工作倾注了大量热忱和关心。但是可能缺乏对清晰干净的关注。

产品的简单形式就是一个原型。真正的一件成品应该被视为一种让人们欣赏的艺术品。

反复多次思考能使得您的代码更具表现力、优雅和清晰。下一个看你的代码的人应该对这点感觉很明显。

3、完成工作
一个产品如果只是进行了简化,还表示它没有完成。真正成品应是干净、有文档和有测试的。

如果产品是一个Web服务,它至少应该有一个CLI来管理它。有时需要一个Web UI。

如果您是唯一可以使用它的人,这表明您的产品未完成。您必须是已经制作了必要的工具来管理产品,包括相关文件参考,至少要有一个其他人看过你的展示或演示。

4、时间是一切
如果你正在构建一些东西,但好像哪里看着不对劲,那么也许现在不是将它搞正确的时间。把当前工作放下一会儿,你可能需要进行一些另外的学习和尝试。也许在几个星期或几个月以后,你(或其他人)会再次拾起继续工作时,你会发现世界已经发生了变化,也许是成功建立它的正确时机。

5、扔掉它、重做
这不是代码是否有价值的问题,而是你需要从代码构建中获得对系统的理解。

永远不要害怕扔掉它,再做一次。在第二(或第三或第N)个时间段内,构建得也许更快、更好。

6、一切都是一个实验
我们所做的任何事情 - 产品、功能、参加的会议、工作流程或协作工具 - 都可能会发生变化。这包括停止或关闭等任何可能发生的事情。结束一个实验不是失败。从不符合我们想要结果的实验中反而学到最多的东西。

7、质疑一切
现状总是不够好。

8、用你的直觉
预感能引导您到创造产品新价值的地方。用户并不知道他们想要什么。创造人们喜爱的产品需要将产品的开发视为一种艺术而不是科学。但产品必须真正解决用户问题。

掌握产品变化对现有产品的影响最好通过研究数据来完成。当您拥有成熟的产品和许多用户时,您有很多有关你的用户是如何使用它们的数据。使用这些数据作出循证决定。

不要只是因为客户或产品经理“需要”它而做某事。明智,用你的直觉。努力地了解真正的问题,并设计出一种以最佳方式解决问题的解决方案,也许不是客户或产品经理的想法。


9、创造价值
当我们站在用户立场解决了痛苦,价值就创造出来了。例如,SSL进程通常是痛苦的。我们的客户通过使用的方便感觉到价值。对我们来说,这意味着为他们解决了痛苦的问题。

同情我们的客户。如果他们感到痛苦,我们就有机会创造价值。

要小心。有时用户的痛苦是自我造成的,这需要避免。

10、获得信任
信任不是一种权利,这是一种特权。

信任是由:

(1)即使我们只能够提供情感上支持,也要血泪之路。
(2)做出负责任的决定,而不是期待别人解救你。
(3)志愿服务,即使时机不理想。
(4)在紧急情况下,在休息时间内提供帮助。
(5)编写稳定的代码,并可用于修复Bug,甚至有时在几个小时之后。

信任丢失:

(1)让别人承担支持您的代码的负担。
(2)无法紧急情况下帮助别人,不计划与其他人共享。
(3)加强自己,防御性地争论你的立场,强迫别人围绕你的僵化设计进行编码。

11、所有权,非共识
每个产品、功能、软件组件、网页、商业交易、博客文章等都应该有一个所有者。许多人可能会一起合作,但所有者是“系统在这里停下来了”,并在发生事情后进行最终呼吁的那个人。

所有者可以而且应该收集他人的反馈意见,但只是反馈 - 所有者可能选择这些反馈(也可能不会选择)纳入他们的工作。如果某些东西没有所有者,没有人应该在这里工作,或者试图作出决定。在这些事情发生之前,它必须有一个拥有者。

所有权不能被动给予,只能主动获得。所有权不能宣告,只有证明。所有权从创造事物的人开始。后来拥有者可以把它交给别人。如果某个项目由于某种原因被丢弃,那么任何其他人都可以可通过公平的游戏重拾其这个项目。

苹果对所有者的术语是“直接负责任的个人”或DRI。

所有权可能会被取代甚至撤销:

(1)任何上述原则(风格,工作流,优雅,简单,完成)都没有被观察到。
(2)事物或项目的目标不符合公司的愿景。
(3)事情或项目的决定不考虑员工的规模或成长。
(4)所有者不认可与其所拥有的东西或项目进行互动的其他项目的观点。

信任和所有权是不可分割的。如果您没有获得团队的信任,您不能拥有项目或事物。

12、忽略竞争(大部分)
我们不是“me too”的公司(me too是附和 跟从的意思)。我们会创新,并信任我们的创新过程。我们决不复制别人。

有时标准和惯例是由竞争对手建立的,并且被广大社会接受。我们不能忽视这些标准,因为是竞争对手建立起来。

有时候,我们需要做出一个战略举措来定位自己的市场。这个定位是相对于竞争对手。我们可以结合功能来应用杠杆。

竞争对手也有很好的想法。如果适合,借用他们想法(草船借箭)

13、强意与弱势
可以有强烈的意见,可以进行热烈争论。但是当你遇到新的情况与信息时,也要愿意改变之前主意,不要为了面子故作矜持。

钝感blunt,诚实honest,真实truthful。建设性批评是最好的。为了礼貌,避免你对某人或某事的批评,保持安静。

对你自己的看法要说实话。如果你认识到你是为了辩论而争论,就退出辩论。

如果你认识到你在辩论中不了解整个观点的话,就会说出来。通常我们不明白正在讨论的问题。如果你发现自己在这种情况下,说出来。您不能参与任何您不了解其问题的解决方案的辩论。

如果您认识到您正在争取“不改变”而辩论,或者为一个更容易(但不一定正确)的解决方案而辩论争取,则应立即撤回。

14、归功于失败
你曾经在错误的时间发布博客吗?交付之前却未能记录所实现功能?不尊重某人的所有权,还是伤害某人的感受?

如果是,就承认你的错误,道歉,并感到失败,以确保你从中学习。然后,重新上班。

15、热情
我们处于一个非常快节奏的行业,任何事情都不会停滞不前。要对工作流程和工具能被改进得更好的一种热情驱动。

The Developer Manifesto