不写代码?

软件工程师不只是写代码的,

有人说,代码只是一种手段,工程师的真正目标应该是解决问题。

我认同这样的说法。


但是,虽然如此,

软件工程师的工作,也很难摆脱代码,

不得不跟代码打交道。


正如其他行为习惯一样,愿不愿意写代码,也是因人而异的,

一些优秀的工程师,擅于用代码解决问题,甚至想着用代码解决一切问题。

这是值得称赞的,但同时也是受限的


也有另外一些优秀的工程师,喜欢尽量的少写代码,

甚至还会做出一些工具,让这些工具的使用者,不必写代码。


这是好事还是坏事呢?

本文就来分析一下这样的优势和劣势。

代码的作用

首先我们要弄明白,为什么要写代码?

为什么选择采用代码的形式解决问题。


我想其中一个原因可能是,

机器可以用很低的成本,很高的效率,重复执行它们。

这样就能把大量人力成本节省出来。


然而,写代码也是需要成本的,甚至还是成本高昂的。

所以,写代码这种行为,一方面节省了原有的人力成本,

另一方面,也增加了把有效的代码编写出来的成本。


因此,之所以用代码解决问题,我想短期原因理应是,

写代码的成本低于原应投入的人力成本。


或者长期看来如此。

文本的好处

代码是程序的一种文本表示,这种表示方式非常关键,

因为,如果愿意,程序当然也可以表示成一系列人工操作。


文本与人工操作不同的是,它可以被机器识别,然后自动执行,无人值守。

并且,连这些文本本身,也还可以被另外一段程序处理。


这些文本就是我们所写的代码,

代码还可以用来处理另外一段代码。

这就是编译技术的本来面目。


换言之,如果我们放弃了文本,就错过了编译技术所能带来的种种好处

我们很难对一个机器编程,让他执行一套人工操作。

是很难,不过也是可行的,比如控制一只机械手臂来完成。


机器也可以识别图形,或者自然语言,

比起处理文本而言,可想难度会更大一些。

不写代码

由于这个社会上,并不是所有人都会写代码的,

或者说,并不是所有人的工作都跟代码有关。


那么,如果给产品的任何一项功能,都提供编程界面,就显然是不合理的了。

某些产品的用户需要无编程界面。

他们需要不写代码也能使用产品的功能。


因此,让用户不必写代码,或者不用写代码,并没有错。

关键是想清楚,我们预期用户怎样使用我们的产品。


这些都是设计出来的,而不是一件意外

换句话说,用户这样的使用方式,是否能提高用户价值

是否能提高用户体验,是否乐于被接受?

结语

代码不能解决所有问题,不写代码也不能,

工程师自己是否乐意写代码,是个人喜好问题,

让自己的产品是否可编程,是产品的设计问题。


所以,关键不是通过个人喜好来衡量用户,

而是真正站在用户的角度考虑问题。


庄子与惠子游于濠梁之上。

庄子曰:“鲦鱼出游从容,是鱼乐也。”

惠子曰:“子非鱼,安知鱼之乐?”

庄子曰:“子非我,安知我不知鱼之乐?”

惠子曰:“我非子,固不知子矣,子固非鱼也,子不知鱼之乐,全矣。”

庄子曰:“请循其本。子曰‘汝安知鱼乐’云者,既已知吾知之而问我,我知之濠上也。”

——《庄子·秋水》