Ghostty 开发者 Mitchell Hashimoto 谈如何设计功能
- 在急着动手开发之前,先进行「策略性思考」
Mitchell Hashimoto 以 Ghostty 上的几个来自用户提的「功能需求」为开头。一个用户说,可否有 Copy mode;一个用户说,可否拥有类似 VIM 的模式编辑,和键位绑定;一个用户说……
在他看来,在面对需求的时候,一定要后退一步进行策略性思考,所有的这些需求,它们的背后,是否指向了一个通用的结构,而这个结构,可以一次性解决当前的这几个需求的同时,还可以为未来的功能需求留下空间。
所以,Mitchell Hashimoto 不会简单、直接地回应来自用户的功能需求,他不会直接说 Yse or No。而是深层思考,这功能背后的需求是什么。他说,「功能设计,体现了你如何解决一个问题或一组问题的思考过程。」
- 在考虑开发细节之前,先考虑「人机交互」
对于刚才几个用户提的需求,Mitchell Hashimoto 作出了开发的决定,这个功能称之为「Key Table」,大致上是用户可以自定义按键,以及这些按键可以绑定 Ghostty 的行为,这样子用户就拥有了完全自定义按键的能力。
但在决定如何开发之前,他首先做的,是考虑「人机交互」。他这番话非常精彩:“所有涉及人机交互的功能,都是充满情感的。当一个人在使用功能之前,不管他是多么无动于衷,总是有很多情感上的负担。”他打了个比方,如果人类作为程序里的可执行函数,那么执行这个函数时,输入了一些东西,但总是会输出情感。
所以,在着手开发功能之前,他会直接思考,最终呈现给用户是什么,是怎么样的体验,他会打开一个临时文件,来不断去测试自己的想法——当然,他设计的是一个终端,所以他考虑的是使用终端的人,在使用过程中如何保持愉悦。
#think
via
x.com