程序员的产品观和程序员的互相看不起

jopen 10年前

        这篇东西怎么产生的

        今天早上,我们的美女编辑跟我说,需要在书《Zabbix 深度实践》里面再加三页的内容,是印刷那边的要求。我答应明天(现在已经是 28 号了,其实是今天)要给她。晚上想了一想,没有什么想在原文中补充的内容了。就在书的最后一部分——后记二,和大家随便聊聊我的一些思考,顺便也贴到博客 了。下面这些东西,每段东西都不长,有自己的小标题。

        我们在做“产品”

        我是个程序员,我相信买这本书的大多数也是程序员。在我工作的过程中,以及跟其他朋友聊天下来的感觉,我发现,很多程序员对于“产品”这两个字 是没有概念的。这里提到的“产品”,不是一般意义上的“产品”——某个 App 是个产品,某个网站是个产品,某个活动是个产品。我这里说的“产品”,指的是程序员做的一个“东西”。

        我从一开始,一直在做系统开发相关的工作,做出来的东西,大多数面对的用户是程序员。比如最早在 PPTV 做的监控系统,目前在唯品会做的日志平台。你做出来的每一个被他人使用的工具,都是一个“产品”,而且这个“产品”上有你的 Logo。“产品”靠谱,说明你这个人靠谱。“产品”不靠谱,说明你这个人不靠谱。用户会把“产品”和你这个人,绑定起来。请大家牢记这个。下文的“产 品”,不再打引号,敲字太累。

        先可用,再好用

        这六个字,是我对于产品的基本观点。大多数程序员都是完美主义者,巴不得开发的东西 1 个 bug 都没有,然后界面酷拽炫,屌炸天,才能推出去给别人用。比如做个数据可视化工具,一定要把前端界面搞的跟科幻片一样才行,否则就是“不可用”状态。其实在 你的产品推出之前,别人是没有工具可以用的,这种情况,叫做“0 分”。你的产品只要基本的将数据变成曲线就可以了,已经能做到 60 分了,再加上基本的导航,80 分就到了。当然,做出科幻片似的前端,确实能做到 100 分。但我们要这么想,从 0 分到 80 分,用户的快感,和 80 分到 100 分的快感,哪个更强呢?从 80 分做到 100 分,需要花多大的精力呢?对于软件开发本身来说,正确的方式就是发布简单的版本,根据用户的反馈,进行一次一次的迭代,最后收敛到一个用户满意的结果。

        不要把半成品推出去给别人使用

        看到这句话,大家是不是觉得更前面说的“先可用,再好用”是矛盾的,瞬间有了想打我的冲动。其实这两个观点并不矛盾。我对于一个“产品”的观点 是“先可用,再好用”,这里的“可用”不是说东西还没法稳定的运行就推出去给别人用。我的意思是把最基本的功能跑通,满足用户最痛点的需求。然后再慢慢完 善它。用户对于产品的自信,是不可恢复的。当用户认为一个产品垃圾之后,这个产品想要在用户心里变成非垃圾,是非常困难的。所以说,在退出一个产品的时 候,一定是要一个“能用”的版本,千万不能把半成品推出去给别人用。

        不要闭门造车

        程序员可能是世界上最自信的种族了,这里“之一”我都不需要加。这点“自信”在做一个最终用户并不是自己的产品的时候,是个非常大的问题。程序 员一般是不会跟用户沟通需求,先自己捣鼓个近似产品的东西出来,往用户跟前一扔,说“用吧”。这样的结果一般都是——返工,或者用户非常的不满意。

        文档很重要

        一般越牛逼的程序员越不情愿写文档。我觉得是因为这种牛逼的程序员非常享受用户来问他问题,估计有种众星捧月,君临天下的快感。另一方面,程序 员觉得自己的产品易用性已经到达极限了,如果不会用,一定是用户自己智商问题。简单来说,就是易用性已经到达了不需要文档的地步了。首先,这种令人发指的 易用性是不存在的,其次,不同用户的知识面不同,工作领域也不通,不会用产品是非常正常的。一个好的文档,能让用户了解这个产品的背景,学习如何使用这个 产品。这是推销产品的一个好方式。

        除非只是一个脚本,否则一个易用的前端非常的重要。一个好用的前端,会使得产品的易用性是呈指数级增长。有个前端,可以将用户拓展到非程序员。 而且,想象一下,一个是对着黑洞洞的终端敲命令,一个是在 Chrome 中鼠标点点就完成工作,哪个更好用呢?有人说前端太难了,没法做。这里我要呈请下:前端不难。1 周入门,2 周开发个简单的 demo 绰绰有余。Python 的 bottle.py,web.py,ruby 的 ruby on rails,再高级点的可以用 Angular JS。现在前端工程师非常难招,学习一下,以后工资能高点,这是个两全其美的方法。

        面对别人的咨询,别摆出一副“爱用不用”的样子

        记住这么一句话,用户是你亲爹。当一个产品的用户都流失了以后,这产品还有存在的必要吗?年底的 KPI 还怎么办?所以说,用户是你的衣食父母,好好服侍着。前面说到,程序员就是一种自我感觉良好到爆棚,整天想着“老子天下第一”的生物。面对别人的咨询,都 是认为对方是弱智,从而不想跟弱智沟通。我知道改变程序员这种“老子天下第一”的思想是很难的,所以,希望大家能搞清楚,用户是给你饭吃,给你 KPI 的人,别态度太差。

        结束语——程序员这个种族

        看了前面这几段东西,大家会不会有会心一笑呢?笑完再想想,是不是自己也是这样的呢?这一段作为结束,我会和大家聊一聊程序员这个种族。

        程序员的自信心基本都是爆表状态,每个程序员都认为自己是酷拽炫屌炸天,天命所归,老子天下第一的程序员。作为这种自信心爆棚的结果,每个程序 员都是乐观主义者、完美主义者。乐观主义者体现在对于一个任务的完成时间。几乎所以程序员都会高估自己的战斗力(自信心爆棚的另一个表现),所以肯定是任 务的实际完成时间晚于程序员自己估计的时间;完美主义者体现在程序员认为自己能解决所有的问题,所以程序员对于自己推出的产品的要求就是完美无瑕。

        程序员另一个特征就是互相看不起,这个想法是超哥(诸超)提出来的,自己想想真是非常的正确。从我本人的经验来看,每当来了个新程序员,我第一 反应是这个人技术肯定不如我。对于他问我的问题我也很反感,反正就是怎么看怎么不顺眼。在慢慢了解,接触以后,对这位新程序员的评价,才能回到客观中。如 下图,横坐标轴表示时间,纵坐标轴是新程序员的水平。假设这个新程序员的水平是 4 分,那么以前从我认为这人水平是0,到正确判断出这人水平是4,用了 9 个时间单位。在我意识到我也有这个“程序员互相看不起”的问题之后,现在改进到 5 个时间单位就能正确评价新程序员了。

程序员的产品观和程序员的互相看不起

        我相信每个程序员都有这种问题。这个也没法改,大家如果意识到自己有这个问题,就慢慢改吧,哈哈。

        好了,扯完了,正好豆瓣 FM 一首歌,谢霆锋的《因为爱所以爱》,好像和上面说的这些还挺有关联的。睡觉去了。