strint

开发者体验 Developer Experience(DX)

Developer eXperience(DX) 定义

普通用户关注产品,需要提高用户体验,即 User Experience(UX)。

开发者的关注对象是库、功能、API、文档,需要提高开发者体验,即 Developer Experience(DX)。

DX的核心目标:提高自服务能力

需要提供各种工具、文档、机制,让社区的开发者可以自己服务自己,很容易的完成工作。

易用性、开发者体验差,体现基本都是开发者无法自服务,需要通过深度的外部协助才能完成,比如:

所以良好的易用性,良好的开发者体验,总体目标也很简单:开发者可以自服务。

软件不能让开发者自服务,结果就外部开发者使用摩擦大、内部开发者疲于做支持。

提高开发者自服务能力的方法

功能建设方面

功能好是核心和基础能力。

信息沟通方面

信息沟通的形式

真实、开放、诚信的沟通

和开发者交流的态度会深刻影响开发者对软件、软件维护者的感知。开发者很容易感知到被糊弄了,保持诚实更容易获得开发者尊重。

如果软件存在缺陷,请清楚的说明情况。比如提供一个状态页面来公布情况,诚实的发布问题处理过程,及时共享问题分析和进展。

在论坛发布功能路线图,让开发者来提供优先级建议。邀请他们参与、听取他们的写法。

让沟通总是轻松、愉快

所有的开发者都希望参与的过程是开心的。想办法让交互的过程变得正向和有趣。

优质的文档

假设读者是新手。

保持概念的一致性。

文档体系需要有符合逻辑的结构。

对于文档来说,详细(啰嗦)的介绍是好的,一个细节的介绍可能可以解决卡住其他开发者很久的难题。

代码自解释不适用于负责和外部交互代码。

Release Log

主要回答三个问题,发布的新版本:

易用性建设体系

来自 MindSpore 一个比较完备的图景。这里没有显示出重点和优先级,但比较完备。来自想飞就飞 @ MindSpore 。

参考资料

架构

好的架构来自对要解决的核心问题的理解,之后做出理想设计。

组织架构决定软件架构。太大的组织架构难以做好一致性比较好的东西。

哲学

Reading list

功能

软件的基础组成单位是功能及其API,需要精细的打磨。

好的功能集合,来源于好的设计,来源于对用户反馈的深入理解。

自己需要去多使用自己开发的功能。开发功能的人自己是第一用户。开发功能的人要为功能写测试和文档。

尊重行业标准、惯用语。

不要假设编程范式。考虑其他开发者的学习成本,往往函数式编程范式就是不好的。

正反馈的工具

工具的使用,最好的方式是交互式的探索:最简理解 -> 最小计划 -> 执行 -> 拿到反馈 -> 优化理解 -> 优化计划 -> 执行,如此循环。那么做软件时,最好就能让一个抽象好理解、看到就大概猜到该怎么用、很简单就运行起来、正确或者错误有具有指导性的反馈,形成一个“正反馈工具”,进而被用户接受。而上述探索式学习的过程,对应的就是软件接口的交互性、可观测性。

参考来源:做出让人爱不释手的基础软件:可观测性和可交互性, https://mp.weixin.qq.com/s/WEO1y8vg21CXlix8wO28hw

API

How To Design A Good API and Why it Matters

Full slides: http://www.cs.bc.edu/~muller/teaching/cs102/s06/lib/pdf/api-design

Why is API Design Important?

Getting the requirements for your API:

Writing the API:

Here is a summary of the above summary:

Reference:

库和生态

软件首先要自己提供一些开箱即用的应用库。一方面证明自己能解决特定领域的问题,另外方面可以使得用户开箱即用,第三方面还可以为功能使用提供范例,第四方面还可以对功能提供内部反馈。以获得良好传播。