阅读更多

2顶
0踩

互联网

原创新闻 使用Facebook方法处理复杂问题

2015-07-30 15:03 by 副主编 mengyidan1988 评论(1) 有5190人浏览
计算机系统曾经非常脆弱,以至于我们不得不简化它所处理的问题。现如今,即使最复杂不过的问题,计算机也能从容应对——但我们仍需懂得如何简化,才不至于令大众面对本不必要的复杂。



哈佛大学商学院教授James McKenny是我的导师,他讲过这样一个故事:人们刚使用计算机时,零售企业西尔斯(Sears)公司曾找他参与一套库存自动化管理系统研发。他很快发现,在当时,哪怕“男袜”这样的小商品门类都会耗尽全世界的计算和存储资源,因为这个门类有庞大的属性集合——号码、颜色、材质、样式、长度等等,它们组合在一起,复杂性呈指数增长。

对当时的计算机来说,这些问题过于复杂,若想自动化处理,西尔斯公司必须先简化问题,例如将一些商品的多个属性加以整合,用同一代码表示,或者直接在系统中忽略某些属性。

自那以后,计算机性能突飞猛进,存储成本可忽略不计,压缩算法也愈加精妙。能自动化处理的问题大大增加,但是组合带来的复杂性依旧——只不过现在是“人”应付不来计算机系统了,尤其在面对那些庞杂又刻板的系统时。

这些系统极度复杂,因为牵涉的场景太多,有些差别仅在毫厘之间。与用户交互时,系统需要喋喋不休地经过许多步骤才能与用户匹配。即便95%的用户都一样,但大家都逃不过5%特例才会面对的复杂问题。结果是,自动化系统把仅仅涉及小部分用户的复杂性施加到所有用户身上。

举个例子:一家大型IT服务企业顾问前几天跟我讨论大型公共系统的。所谓“大型公共系统”包括医保、税收、社会服务、军队系统等,一般都极其复杂,因为它们本身面对的问题就是如此——与民众和公务员们打了数十年的交道后,系统中积攒了无数的规则、规矩、实例和传统,连刑具、中世纪战舰这类琐碎的内容都在其管理范围内。这些系统就是书本报端中常提到的“项目管理灾难”。(这不是新问题,也绝不限于公共领域,私有企业一点儿都不少,只不过藏得深。)

依我之见,问题的根源出在公共系统架构师身上,他们首先追求自动化,其次才想到简化。之所以先把简化搁在一边,是因为这类工作需要层层批准。“简化”就是选择不做哪些工作,其困难之处在于,专家们往往坚持把复杂的特例纳入系统中。支持先简化的人太少,支持他们立场的具体论据也太少。即便这样,先简化再自动化才会令工作更高效。

那位IT顾问提到个具体案例:数据库中的“性别”字段。乍听之下,我天真的以为“性别”无非是三种情形:男、女和待定(如事故中受害者,或是未出生婴儿无法确定性别)。然而,事实上这个问题非常复杂:除了男女性两个主要性别,还有其他许多分类,与人性的各个细小分支有关。所有这些普遍选项外的变量产生了复杂的组合,让所有问题都变得异常复杂。

听完这个案例,我暗自思索:倘若在系统架构之初不纳入这些复杂的因素,而是使用Facebook的方法,会怎么样呢?Facebook只会问很少的几个与年龄、性别、职衔问题。其中一个我记忆尤深:“你正在恋爱吗?”选项是:“是的”、“没有”和“这很复杂”。

(当然,我知道Facebook现在已经把选项设计的更精细了。请继续往下看,重点在于我因为此事想到了什么。)

一些原本刻板的系统之所以赢得青睐,是因为它们高效的应用了上面的方式。上世纪90年代,挪威税务管理局负责人叫Bjarne Hope,他非常有活力(可惜英年早逝),在他的领导下,管理局认为挪威人民花在填报各种税务表单的时间太多了,并不高效,因为许多需要人们填写的信息挪威政府已经从雇主、银行或其他来源得到了,不需要重复填写。于是他们采取了新方式,由挪威税务管理部门提前填写好一份简化后的两页税务表单,然后寄给纳税人。纳税人收到的表单上只有一个简单的问题:“以下是我司记录的本年度纳税信息,数额是否正确?”如果正确,只需签字确认然后寄回即可。(从2000之后的几年,纳税人就可以通过手机短信完成这项工作,大约从2010年,纳税人如果确认数额正确,甚至什么都不用回复。)如果数额不正确,只需要把正确的数额写在错误数额的旁边,签字确认完毕后再寄回。

最初,这套系统仅适用于挪威30%的纳税人,他们只有一份工作、一份固定的收入,只享受标准减税政策。年复一年,随着税收政策不断简化和系统升级,扩展到了更广泛的人群,如今已覆盖80%的纳税人。我自己的纳税情况比较复杂:一份主要的工作、几份兼职、运营了几个小公司。然而,去年我纳税的方式非常简单——看了一眼税务局发给我的纳税申报单(当然是在线的,不是纸质),然后什么也没做,因为申报单上的数额是正确的。我的公司纳税流程也是在网上进行的,直接通过会计系统完成。

大多数挪威人对税务管理局的评价很高,尽管也时不时抱怨税收太重(这很正常)。能够赢得纳税人的认可,全都是因为在系统架构之初他们就先想到要把简单的事情自动化,然后再持续简化流程和扩展系统。这件事还有个附带的好处,那就是给政客们带去了简化税收政策的压力,因为只有简化税收政策,纳税人才能轻松确认纳税申报单。

依我看,生活中需要更多这种“是的,不是,这很复杂”的选项。你们觉得呢?

或许你会回答:“这很复杂”。

原文链接:http://ubiquity.acm.org/blog/the-facebook-method-of-dealing-with-complexity/
  • 大小: 128.4 KB
来自: 极客头条
2
0
评论 共 1 条 请登录后发表评论
1 楼 java_doc 2015-07-30 17:31
less is more

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 在 Linux 中创建用户 and 给用户设置密码相关操作

    真的强烈建议小伙伴们想要修改用户密码的时候,可以使用 root 账户进行重新设置用户的密码(跟修改密码的效果是一样的,密码还不会有限制)。指定用户的用户组,不指定,会自动加入用户名同名组;比如,我的用户叫做 wx,我不指定用户组,也就是不写 -g,passwd 命令选项有多个,可以使用 passwd --help 命令查看,我这里只是列举了一个进行讲解。命令进行登录,此时,可以看到因为用户密码被我删除的原因,所以。如果在root 用户以外给用户设置密码,会有权限限制。代表可选的参数,要设置密码的用户名;

  • Linux 命令行添加用户和密码

    面向无交互条件下直接在命令行创建Linux用户并且带可登录的密码的需求(例如:Docker build 镜像时创建用户和密码),可以使用useradd命令中的-p命令去添加,但需要注意的是该命令需要的参数是经过加密后的密码,直接输入明文会导致密码错误,官方对改参数的说明为。 加密的密码可以使用https://github.com/codehasbug/passwd-crypt项目提供的工具生成。 二、添加用户 例子:添加用户名为test,密码为test1234的用户 也可以单独生成加密后的密码,第一个参数是

  • 设置登录用户和登录密码

    设置登录用户和登录密码 在根文件系统刚做好之后,是没有登录用户和密码的,我们需要进行添加。 根文件系统中,根用户和密码有关的文件有三个。分别是 /etc/passwd。用来存放用户信息.当/etc/shadow文件不存在时也会存放密文密码。 它的文本格式为name:password:uid:gid:comment:home:shell。如:root:x:0:0:Linux User,,,:/r...

  • 17.Linux给账户设置密码

    系统会提示你输入密码。输入时,屏幕上不会显示密码或类似字符,这是为了避免其他人查看到密码。输入完成后,按下回车键。系统会要求你再次输入新密码,以确认输入正确。请确保两次输入密码相同,然后按下回车键。系统会要求你再次输入新密码,以确认输入正确。设置密码完成后,系统会显示一条消息,表示你已成功为该用户设置密码。命令加上需要设置密码的用户账户名,例如假设需要设置用户名为。至此,你已经成功为 Linux 系统中的账户设置了密码。命令为账户设置密码。在 Linux 系统中,可以使用。

  • Linux命令之设置用户密码passwd

    `passwd` 命令可以设置用户密码。通过 `useradd` 命令创建的用户初始是没有密码的,需要通过 `passwd` 命令来为其设置密码,未设置密码的用户不能登录系统。

  • 给用户设置密码

    1. 未设置密码前:ysql> select host,user,password from user;+-----------+------+----------+| host | user | password |+-----------+------+----------+| localhost | root | || xin.mysq...

  • linux创建用户命令

    创建用户、设置密码、修改用户、删除用户: useradd testuser 创建用户testuser passwd testuser 给已创建的用户testuser设置密码 说明:新创建的用户会在/home下创建一个用户目录testuser usermod --help 修改用户这个命令的相关参数 userdel testuser 删除用户testuser rm -rf testuse...

  • linux创建用户、设置密码

    添加用户:useradd -m 用户名  然后设置密码  passwd 用户名 删除用户:userdel  -r  用户名   1. 在root权限下,useradd只是创建了一个用户名,如 (useradd  +用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的,为了避免这样的情况出现,可以用 (useradd -m +

  • linux给用户user1设置密码,Linux用户管理之useradd、passwd命令讲解

    在上一章中,我们了解到了Linux用户的每个配置文件的内容及作用,以及通过手动修改用户配置文件来手动添加一个用户。但是在实际工作过程中,我们并不是通过手动修改配置来添加用户,而是通过用户管理的各种命令来管理用户。一、添加用户命令:useraddLinux 系统中,可以使用 useradd 命令新建用户,此命令的基本格式如下:useradd [选项] 用户名 -D查看缺省参数该命令常用的选项及各自的...

  • 【linux】创建用户,添加密码,及添加权限

    创建用户:adduser username      #添加用户名passwd username       #添加登录密码,适合adduser之后没提示设置密码的情况添加用户sudo权限修改 /etc/sudoersvi /etc/sudoers# User privilege specificationroot ALL=(ALL) ALLusername ALL=(ALL) ALL      ...

  • Linux下批量添加用户的两种方法

    作为一个系统管理员,可能要经常的为机器添加用户,可能是在一台机器上添加很多用户,也有可能是在很多机器上要添加同一个用户。 基本上,批量添加用户有两种方式,一是用useradd + passwd命令配合脚本来添加,二是用newusers+chpasswd来添加。 第一个方法合适用来在不同的机器上添加不同的用户,或者在同一台机器上添加大量的规则命名的用户。第二个方法可用于在同一台机器上添加大量的用...

  • linux 设置创建用户设置密码

    创建用户设置密码

  • 配置user_如何为华为交换机配置用户名和密码

    1、telnet只需输入password即可远程登陆交换机。 进入用户界面视图 [huawei]user-interface vty 0 4设置认证方式为密码验证方式[huawei-ui-vty0-4]authentication-mode password设置登陆验证的password为明文密码”huawei”[huawei-ui-vty0-4]set authentication passwo...

  • Linux修改用户密码

    管理员给普通用户和给自己设置密码 passwd 用户名 随后按回车,然后输入密码即可 普通用户修改自己的用户 passwd按回车,随后输入密码即可。 查看Linux账号的密码状态 passwd -S用户名 锁定用户和解锁用户: 锁定用户: passwd -l用户名 解锁用户: passwd -u用户名 使用字符创作为用户的密码 echo "123456" ...

  • linux系统为用户设置密码,如何为用户设置密码(MYSQL)

    如何为用户设置密码(MYSQL)发布时间:2006-08-24 12:42:20来源:红联作者:bear10214当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者以不带口令的root身份进入数据库.另外如果你是一个管理员,你还要进行一些用户的建立及授权,这又涉及到设置密码的问题.下面我们就讨论一下如何设置密码:首先我们应该知道Mysql数据库中的口令存储必须用password()函数...

  • 如何为用户设置密码

    当初次在机器上安装完Mysql时,你可以匿名进行访问数据库或者以不带口令的root身份进入数据库.另外如果你是一个管理员,你还要进行一些用户的建立及授权,这又涉及到设置密码的问题.下面我们就讨论一下如何设置密码:首先我们应该知道Mysql数据库中的口令存储必须用password()函数加密它.因为在user表中是以加密形式存储口令,而不是作为纯文本.如果你没有加密,直接在数据库中执行以下语句:us...

  • 练习2:手动创建用户user1,并设置密码

    一、要求:手动添加用户user1, 设置其基本组为user1 (5000),附加组为othergroup,最后添加密码二、操作过程: 1、创建用户组othergroup[root@localhost home]# groupadd othergroup 2、添加用户组user1[root@localhost home]# echo 'user1:x:5000' >&gt...

  • 用户管理命令:添加用户useradd,设置用户密码passwd,查看当前用户who.

    Linux下添加用户:useradd 用户名 为用户名添加密码:passwd 用户名 查看系统中的所有用户:cat /etc/passwd |cut -f 1 -d : 注意:| 是管道,把cat的输出传给cut处理;后面的cut取出每一行的以:分割的第一栏。 用who命令可以查看当前登录的用户有哪些,一个用户可以多次登录比如有两个root。一个root在它的本地,一个ro

  • Spring Security 设置User密码正确的姿势

    在设置密码的时候,按照官方文档中的方式如下: UserBuilder users = User.withDefaultPasswordEncoder(); 但是User.withDefaultPasswordEncoder()已经标注为弃用@Deprecated。通过withDefaultPasswordEncoder()方法的注释我们知道了,推荐我们采用如下方法进行配置。 PasswordEn...

Global site tag (gtag.js) - Google Analytics