提起计算机,大家都不陌生,现在人人手里都有计算机,基本的应用也是得心应手,可是,你会使用不代表你了解你的计算机。举个简单的例子,你的电脑突然蓝屏了,你可能就直接蒙圈了,啥情况?坏了?被黑了?有病毒了?其实呢,可能都不是。所以,在他为你好好工作的时候,都好好的,当他闹个小脾气的时候,你可就有的受了。那我说的这么多和我们的主题又有什么关系呢?其实,我所说的计算机思维,其实就是让你像计算机的算法模式一样来思考,起码知道他为什么闹脾气了。
初级人类可识别的语言与计算机二进制之间的输入输出的逻辑由编译原理来建立。编译原理就是一套将一种逻辑表达方式转化为另一种对等的逻辑表达方式的算法,说到这里,大家有没有想到初中考的英语,用相同意思的短语来表达同一句话,大概就是这个意思了。
大家学习《谷歌方法论》以后,知道工程师分五级。
第五级、合格的工程师,你做到工程师最基本的要求。比第五级以下是不入流。
第四级、你可以带领几个徒弟共同完成一件事。网络的行为。带几个弟子完成一件更大的事,就要有一点领导力。
第三级、在谷歌里面,你相当于能负责一个产品线,整个的产品是你的,比如说你负责地图,地图里面有一些跟地面数据和卫星的图象能够重合, 卫星的产品是你,或者是导航是你。做到同行比较好的,但是人家还是能够做出来的,做的没你好。
第二级,你能够做到世界上其他人做不出来的东西。
第一级很少见,
一个合格工程师,要满足三个属性
第一,经常能工作,不要老坏。
第二,可继承,你做出来的本身可用。万一你不在,或者离开公司,哪怕死掉,这个事还能有人接着做,不能说中断,一个文明的进程是不断继承的过程,工作不断从零开始,没有积累,效率太低。
第三,打好包,封装好,人家可以在你这上面做进一步的工作。不仅工程师如此,任何一个职业人士,这是三个最基本的素质。
谷歌和微软培养的IT工程师和国内有时候小公司出来的有什么差别呢?
1、比如说做一件事的时候,他要保证把这一件事做好,而不是把这其中的一小件事情做好。比如说一个游戏,从设计到功能,到测试,封装、提交,以及到后来的很多维护,都要一个人自己做。你自己吃你的狗粮,自己做的事情要自己收尾,不要让别人擦屁股。现在分工的角度讲,为什么测试不能交给别人做?
2、测试,看一个人职业化的人很重要的一个原则。小学生都知道,交卷以前要检查,自己不测试,可能连小学生都不如。因为没有人写代码是能够完全正确的,到目前为止世界上证明水平最高的人可能是高德纳,一辈子写代码,被人发现只有个位数的几个错误,但是其他人所有的代码都被人不断的发现错误,如果你不测试,可能用不了几天就死掉。
3、能够继承的,继承性,你总要留下一些遗产,你离开一个公司以后,回头五个人告诉你说,我们现在用的还是你的代码,我们就会很高兴。你前脚高走,后面人说,终于把这个质量很烂的东西删掉了。你就没有什么成就感。
4、你做的东西,上面还可以发展,比如说很多的程序是开源的,上面可以做各种各样的变种的,子操作系统,或者是新的UI的界面操作系统。能够做到这一点,你的成就才会被最多的人使用,你自己才有成就,你才能获得最大的收益,可使用性,这是一个非常基本的要求。
一个工程师你要接着往上走,你还需要一个能力,相当于师傅一样,带一个小团队,你怎么把这个团队带好,首先,自己的一个规范,当你自己一个人做事情,你能够理解你全部的意思。
作为领导者,如何管理带领团队呢
汉朝有一句话:韩信带兵,多多益善。但是对于很多领导来讲,带的人越多,他越乱。你要制订一个规则,让大家都来遵守,这才是合格的职业人应该做的事情。医生有医生的规范,律师有律师的规范。
做到这一点,在中国这样一个环境中有非常大的发展机会,因为如果你做到这一点,别人做不到这一点,你就有非常大的机会。很多人说赢在起跑线上,你不用在起跑线上那么辛苦。因为在规范性这一条上,80%的人做不到,只要你做到了,你就赢了80%的人。
第一,树榜样,你怎么做,下属也怎么做。
第二,你只管好你的下属,至于下属很多事,你不要太操心,由他自己来管。一个公司的总经理管好下面每一个部门的总监,你只要管好你的总监,你树立一个榜样,这个榜样是一个规矩,你下面人也跟你一样执行这个规矩,每个星期下面每个人要跟你做一次交流,谈半个小时,介绍一下工作。每星期你要组织他们大家开一次会,大家讨论一些问题。这就是一个规矩。
至于你下面的总监,每个人还有20个产品经理,或者其他的工程经理,他们就学你,你跟每个下面总监交流,他也跟下面每个经理交流,他也组织一些经理开会,下面的经理就跟小组长们一对一的交流,组织大家开会,小组长们再跟下面的每个员工交流,一级一级的管起来,这样一个大的机构就可以管起来,你可以管一千个人。如果你没有这样一个清晰的机构,一千个人管理起来很费劲,一会儿这儿出问题,你像一个救火队长一样冲过去。
怎么培养领导力,
1、递归,在领导力上叫做授权,最糟糕的领域是事无巨细。都像诸葛亮一样,事必躬亲,自己累死也未必能把事情搞好,一个领导再厉害,也不能把所有事情做的在行,最主要的是发挥下面人的才智。
很多人在一个单位干了十几年也不能得到提升。他自己是一个技术尖子,自己干的很好,但是不知道把把这个事情教给下面的人做好。很多人说,与其教他做,还不如自己来。
所以常常是一个创始人的基因决定了一个企业的基因。所以我们投资的时候经常看一个创始人合适不合适。创始人如果不合适,造成一个很坏的基因,这个公司哪怕做的事情再好,最后也难以成功。
事情合适,但是人不合适,这件事情几乎是一定不成功的。这是讲的递归,很简单、很偷懒也很有效的管理方式。很多人问我,你哪有时间干那么多事,我说很简单,就是授权,把自己的权限授权下去,给下面做一个榜样,下面被授权的人就按照你的模式来做事情了。
2、分制。在计算机算法里面就是各个击破。一个大问题的复杂度比十个小问题要大得多。但是如果你有本事把一个复杂的大问题,拆解成十个相对并不关联的小问题的话,就要容易得多。
因为能够处理解决大问题的人是很少。能够解决相对小问题的人是很多。比如说能够写一百万行代码的这样一个大系统,能够负责这样一个项目的总架构师其实不多。但是如果你有本事把它拆成十个十万行的项目,你在社会上还是能请到十个这样的人。
在一个企业里面,很多人说,我是不是把很多牛人凑在一起,这个事就能做成。不是的。很多时候是你要找到一个合适的拆解办法,把你的大的工作拆解成十个小的。这十个小的你找到能够胜任自己工作的人来做。
因为杀鸡用牛刀,把很重要的人放在不太重要的位置上,这个人产出不一定很高。这是今天管理很重要的原则,岗位的人要相匹配。对于一个大问题要有拆解的能力。人一下子从第五级的工程师上升到第三级,我刚才讲的方法就是很重要的,用分制法,把大问题拆成小问题。
做为领导者,一个是分制,一个是递归,两个可以结合起来使用,把大问题拆成小问题,找下面合适的人做,立下自己的规矩。把自己的工作方式方法传达下去,整个企业就会有一致的文化,这也就能获得一个很强的合力,大家能够往前发展的更好。
计算机思维:人工智能
吴军:在计算机里面,相互对立统一的关系,比如说我讲大和小的统一,快和慢的对立统一。很多纬度和单一纬度的统一。比如说,计算机是一个网络效应,人常常是一个个体效应。
发现基于大数据的人工智能做的事情比人能做得好,是一个网络效应。同样,人如果脱离掉完全自己独立的,自己只考虑自己的做事方式,能够兼顾很大一个网络,也会得到很好的效果。
全局和局部的关系。有一支军队,赢了每一场战斗,输掉了整个战役。或者有的人,输了每一场战斗,但是输了整个战争。
人认识的世界相对是一个小世界。比如说今天个位数你认识起来没有问题,十位数也数得很清楚,到了几千几万几亿的时候,是完全无感的。计算机要处理的世界比这个要大得多得多。
很多时候我们说,说起抓大放小容易,但是人做事都是从小到大一点一点积攒,聚小变大。计算机做事和人做事的差别是什么。领导考虑问题和个人考虑问题有什么差别。
计算机的做事方式,自顶向下的,先考虑一个非常大的整体,底下的东西都是不精确,先把几个大的整体模块定义清楚。然后再往下一级一级的细化。
我们人做事常常是反过来。让你写作文,从细节开始一点一点写下去。比较专业的人写作他会先构思整个故事的情节。这就是业余人的做法和专业人的做法的差别。
因为计算机精度有限,只有32位,甚至有些时候只有8位,你怎么能表达一个数字,我们通常想,一个数字的表达越准确越好,你学数学的时候并不觉得位数是一个问题,最多你自己觉得算不过来了,老师说,算到小数点后四位就可以了。
计算机中只有8位。你如果表达一个数字,只有从0表达到255,如果要表达几万怎么办?或者一个8位的二进制能不能表达几十万。原则上来讲是可以的。在这里就要有一个牺牲,我数量级基本上要保证是对的。
计算机七对关系:大和小、快和慢、多维度和单一维度、网络和个体、自顶向下和自底向上、全局和局部、成本和表现。
计算机思维首先在大致的范围内要定一个,原来最大的素数已经到多少,现在要超过它,大概到多少。
第二,他要把很多很多小的资源合并起来来处理一件大的事情。这就是它大和小的辩证关系。
我们今天知道云计算,云计算几乎有无限制的计算能力,这个计算能力不是凭空产生的,他要保证每个小的单元都有足够的计算能力,把它合并起来具有的计算能力。通过计算机的思维里面可以看到大和小的辩证法。
计算机最重要的思维方式,先抓大事,后追究细节,自顶向下。
吴军:人类如果能够攻克癌症,到底平均寿命能够增加多少岁。
有些人认为能够多活10岁20岁,也是不可能的。答案是3.5岁。这是谷歌下面大数据医疗公司卡里扣的CEO埃特莱文森给出的答案,他是现在苹果董事会主席。所以给出的答案是很权威的。
计算机的两个原则:
等价性原则:人类容易给什么问题就解决什么问题,但是有时候一个较难的问题A和相对容易的问题B是等价的,计算机就会试图解决等价。
模块化原则:我们做一个桌子,或者凳子会直接去做,计算机会制作几个简单的,能够大量复制的模块,然后利用这些模块,搭出复杂的桌子和椅子。
接下来讲我们今天的正题,也是规格方法论里面计算机思维很重要的一点。什么问题不要光问对和错,计算机世界里很多时候没有对和错,只有好和不好,积极在同样的成本下,什么是最好。
年轻人讲,希望选一个太太,提出10个要求,我说你肯定找不着,这样的人首先不一定存在,存在也未必看得上你,因为她也可以提十个要求,你一定不能满足她这十个要求的,这件事不太可能发生的。
而微软的操作系统,只是说他已经足够好,在目前的情况下,他对PC机来讲,同样成本的情况下,是大家最能接受。
所以在计算机世界里面,常常不是对和错、好和坏的事情,而是给定了固定成本以后你怎么做,常常边界也就确定,你所能做的事情也就定。