(cto娱乐)——双连击带内功连击合击版的求给个现在怎么没有了

架构师/CTO的内功修炼秘籍:《孙子兵法》与《九阴真经》-学路网-学习路上 有我相伴
架构师/CTO的内功修炼秘籍:《孙子兵法》与《九阴真经》
来源:QQ快报 &责任编辑:小易 &
“大家好,非常荣幸能够有机会和大家一起分享,我叫陈斌。The Art of Scalability 的作者 Martin Abbott,是我在 eBay 工作时认识的。去年,我将这本书翻译成了中文,名叫《架构即未来》。我在 1993 年出国去到新加坡,担任新加坡航空公司的高级系统分析员。之后到硅谷,在硅谷参加了各种创业的活动,在不少公司做过技术工作。2001 年,我在日立美国担任系统集成总监。随后在 Abacus 担任首席架构师。2008 年,我在 eBay 和 PayPal 从事高级架构工作。在这段时间里,我有幸参与了 eBay 在架构方面的很多实践,也就是这本书―― The Art of Scalability 中讲的很多故事。这本书是由两位作者完成的,一位是 Martin,另一位是 Michael。他们写的第一本书 The Art of Scalability,我翻译后取名为《架构即未来》,第二本书在今年四月份出版的,书名为 Scalability Rules,中文译名为《架构真经》。这两本书分别从互联网管理实践,架构和技术方面,做了很多非常好的总结。这本书非常出名,可能有的同学已经了解了部分内容,下面我将会和大家分享。CTO 必备的管理能力:人员、组织、过程首先,我想从管理的角度和大家分享,主要涉及人员、组织和过程三个方面。这三个方面在《架构即未来》书中,基本通过两个循环作讲解,分别是向上的正向循环和向下的负面循环。所谓良性的循环(向上的循环),是指合适的人员在合适的组织方式的组织下,通过合适的流程所规定的活动,使项目和系统不断地优化,不断地向前发展。向下的过程是指与此相反,过程不合理架构不合适。当处在这些不合适的情况下,各种活动及项目就会出现完成后成员互相埋怨对方没有做好,导致越做越差的负面效果,而这种效应就会叠加。所以我们希望我们的组织和团队都有正向的良性的循环,不断地从一个成功走向另一个成功,越做越轻松,越做越简单。这就是人员组织过程主要讲的内容的逻辑。人员这里要和大家分享的是书中提到的:领导力和管理能力的问题。这也是我回到中国之后发现的,不仅仅互联网而是很多企业都存在的共性问题:大家不区分领导力和管理能力。领导能力是指如何带动一个企业不断地向前走,靠的是领导者个人的魅力,领导者对理念目标和使命的引导,去激励大家。而管理能力是指把一个大的目标分解成小的目标,小的目标进一步分解,让员工高效率地实现。领导能力和管理能力的主要区别在于力量的方向。领导力是像火车头一样牵引团队的动力。管理力是在团队后面推动的力量,让团队向前走。两者所需要的技能是不一样的。领导力需要以身作则,有自知之明,或很谦虚,使命为先。更多的是一种天赋,领导精神和牺牲精神。而管理的能力呢,更多的是关注细节分解任务,要善于沟通,善解人意,能够有很强的执行力。这是两者的不同点。本书还强调了企业及企业文化。他用一个花园来比喻企业,花园里的土壤就像企业的文化。我们谈起企业文化,总认为只有中国才讲究的话,其实到了美国更加讲究企业文化。良好的企业文化,就像花园土壤的土质很好,可以长出很多好的花花草草。那这些花草就是企业的员工。当然有很漂亮的花也会有奇葩。奇葩或者不合适的草,即不合适的员工。而管理者就是企业这座花园里的园丁。园丁的责任:施肥除草,淘汰不合适的花草,进行选材。我从硅谷刚回来的时候,很多人问我:能不能帮忙介绍一个硅谷的大牛,我们公司上市就差这么一位大牛了,或者是有了这位大牛,公司才能如何如何……我们认为人员是组织过程中的首要元素,但人员没有最佳,只有最合适。我经常用 Steve Jobs 的例子来说明这个问题:Steve Jobs 在三十岁的时候呢,是一个很自负,孩子气的一个人,不负责任,缺乏团队精神,很多项目朝令夕改。结果,员工和企业不欢迎他,被迫离开了苹果。而当他四十一岁重返苹果的时候,他变得很负责,很自律,不仅保持了自己的创新精神,还加强了产品的经验。那么同样一个 Steve Jobs,为什么在十年前被企业扫地出门,十年后成为天才,带领苹果腾飞,使苹果有了今天的成就?原因就在于十年前他不是一个合适的人,并不是说他不是一个牛人,不能打造最佳的产品。但是十年后,经过历练,他变得更适合团队,也更适合环境,所以才会有他和苹果当年的成功。关于人员,要和大家分享的是,如何像园丁一样对花园里的花花草草进行区别考评,优胜劣汰。这就是这本书里特别讲到的 BP 模型。B 指 behavior,指员工是否符合企业文化,P 指 Performance,指员工是否具有能力创造业绩。那么公司管理者最喜欢的是既符合企业文化又有能力的人,即处于第一象限,要保留的精英。相反,如果是对企业文化不认同,技术的能力又差的员工,就是需要淘汰的人。而第二象限代表的员工,是管理者需要培养的员工。这类员工有专业的能力,是不同领域内的专才,但是企业文化方面比较差,这样的员工可以通过培养让他成为精英。关于人员,还有一件事要和大家分享:如何使我们的人员能够在一个企业里留得住,发展好。我从美国回到易宝支付之后有一点感触非常深刻,就是这么多人,却连一个架构师都没有。一个总监领着大家做,可能会有一些初级研发啊、中级研发、高级研发,但是没有架构师,大家做的事都是一样的。最后我们做了一些改变,我们有研发架构、测试架构、网络架构、安全架构、配置架构、系统架构和数据架构。那这些架构师是怎么培养呢?首先,工作经验很关键,因为架构师需要一定的经验积累。我们认为七年以上的工作经验足以胜任一个架构师,从而给员工成长的空间。组织《架构即未来》这本书里还提到了一个非常有价值的概念,也是我观察到的,硅谷的企业和国内的企业之间的一个差别:即在业务和技术之间沟通上的问题。特别是主管一级人员沟通的问题。比如说业务主管会强调要完成什么业绩;而技术主管在讨论的时候经常强调有什么问题,什么技术细节,什么 Bug,什么无法解决的问题,这两者很难沟通到一起。原因是很清楚的:因为业务主管和技术主管在教育背景、经验背景和性格特质上差别很大。一个内向,一个外向;一个是学理工的,一个是学经济和管理的。特别是他们成长的路径,业务主管往往是业绩做得好,技术主管往往是项目做得好研发做得好。组织内的冲突,是我们探讨人员的时候必须要强调的。组织内的冲突:一种是认知型冲突,一种是感情型冲突。当我们在做一个项目的时候经常有疑问:谁来干这件事?这就是一种感情型冲突。人作为一种高级动物,我们都会有保护自己的本能,而这样的情况往往在我们做项目的过程中是存在一定破坏性的。作为一个架构师,应该及时发现这种冲突,制止这种冲突。我们在项目进行的过程中需要冲突,但不是感情型冲突,而是认知型冲突。那什么是认知型冲突?认知型冲突是指在决定要做某个项目,对执行方案有不同意见时,我们要从中选出一种最佳方案。所以当一个团队在讨论什么是最优方案的时候,最好的组织方式是讨论时,参与人员有年龄差异,也有岗位和职能差异,能从各个不同的角度对方案提供不同的意见。我们再从中选取一个最佳的方案,这是保证项目或研发走向成功的基础。只有当选择的方案和策略是对的时,结果才有可能是正确的。还有一件让我印象深刻的事:在我们的互联网企业,特别是国有企业或者是大型的传统型企业中,常常分成两种思维模式:IT 思维模式。产品思维模式。所谓 IT 模式,指的是 IT 部门往往服务的是企业内部客户。比如说公司的 IT 部门,其提供的服务可能是 CRM 系统或某种业务系统。那么在工作过程中,这个部门主要考虑的是成本,因为 IT 部门的成本是直接计入公司成本,需要尽量节省成本。还有一个要考虑的因素,是公司内部的客户的满意度。在这种情况下,产品做出来后,如果内部客户反馈不好,常常是采取企业内培训的方式,培训到用户会用为止,可能产品很差,但是培训跟得上,这就是 IT 思维。而产品思维,特别是互联网产品思维呢,他不知道他的用户是谁,在哪里,或仅知道用户某种类型,但不具体。那么这个时候就会采取试错的办法,做出一个产品后投放到市场上,根据市场反馈,作相应的修改。而关于成本,产品人员更多考虑的是产品能赚回多少钱,而不是花掉多少。我们再来探讨组织,人员都是要靠组织组成起来的,那什么样的组织最合理?《架构即未来》书中讲了一个两张披萨的故事。亚马逊 CEO Bezos 曾提到,沟通是很可怕的事情。他要求亚马逊的团队规模不能超过两张比萨饼能喂饱的人数。两个披萨能喂饱多少人呢?我们简单计算一下:八寸的这种披萨大概两张能喂饱八个人左右。所以团队的规模不能太大,过大的团队会造成噪音的存在。规模最好是七到八个人,其中有主管、架构、项目管理、研发和测试。说完了组织规模,还要考虑组织的结构。大家都知道我们现代社会的工业或企业的组织结构是按照军队的线性结构设计的:骑兵在一起,步兵在一起,通讯兵在一起,炮兵在一起。各兵种之间有纵向的领导和横向的合作关系。随着工业发展,当我们提供软件服务,这就需要研发人员、测试人员、运维人员、项目管理人员和产品人员,大家天天在一起去讨论问题、解决问题。当项目结束,软件研发成功后,团队解散。这就是矩阵型结构,非常适合软件行开发企业。第三种情况,是指将所有项目人员放在一个团队里,即敏捷型组织。这种敏捷型组织呢,所有的人在一个团队,沟通更顺畅,更容易形成合力解决问题。这种方式最适合 SAS 服务,即对外提供的是软件为基础的服务。我们可以根据自己企业所处的不同阶段,所提供的不同产品和服务,选择合适的组织机构。过程除了人员和把人员合理地组织起来工作以外,还有一个重要的事情是过程。过程是指将所有人组织起来的活动中,大家按什么逻辑和方向来走。很多公司,包括易宝支付,我都发现这样的问题:一个公司,特别是运维系统发生一些问题,管理人员会怎么办?大家往往会追究是谁的责任,然后处理责任人,如扣奖金、记过处分、甚至开除。往往把处理人作为主要的目标和主要的手段。这里有张伯克利一位教授的图,借用他的图,我们来说明上面这个问题:一个系统由软件硬件测试、脚本、网络等很多要素构成,图中每个红点代表的是软件中的 fault 或 Bug。平常的它们相安无事,当外界用户的输入进入,如某种输入情况、某种流量或某种 profile,可能会引发这些 fault 或 Bug 出现问题。如果你的系统有合理的监控,能观察到这些蛛丝马迹,系统就可以避免出现大的问题。相反如果观察不到,系统就会失去目标从而出现大的问题。所以,当我们在考虑过程中所出现的问题时,我们应该聚焦在系统,也就是软件硬件网络当中的 fault 上。一定要在每件事情发生之后聚焦为什么会发生这种问题,其根源在哪里,而不是聚焦在人上。当我们把这些红点,fault 都解决掉,那么系统就不会在同一个地方栽两次跟头。这就是我们强调的,要聚焦优化过程和优化架构,而不是聚焦人。除了优化架构、优化过程以外呢,《架构即未来》书中还多次强调了 CMMI。CMMI 是由美国某大学同国防部在承包项目过程中制定的一种流程管控的办法。这种办法认为,无法度量的流程是差的流程,而好的流程不仅可度量,还能很细致的度量,最好的情况则是流程拥有一个成熟度模型,能够分级评估。即使企业不提供外包服务,我们也需要优化流程:有合适的人员、合适的组织方式、合适的流程、合适的决策使项目不断地从一个成功走向另一个成功。这部分就是我跟大家分享的《架构即未来》书中提到的关于管理的内容。架构设计理念关于架构设计的理念,其中提到的时间,均在《架构即未来》和《架构真经》中有提及,让大家了解架构师如何做设计。今天要讲的理念是:非技术设计。所谓非技术设计是指在设计互联网或信息系统架构的时候,要像建筑师一样去考虑问题:设计一座房子时,我们要考虑房子的结构,承重强度等。当我们在做架构设计时往往考虑的是:前端用 Java 语言、Tomcat,然后通过 MySQL 放在某某服务器上、某某存储上,然后由某某路由器来负责完成。如果不知道的人看到这种设计一定会说架构师是收了人家钱在打广告吧。实际上,真正的架构设计是不应该考虑任何产品的,而是为了满足用户的需求,选取最合适的手段和方式来完成。架构设计要回归事情的本源,这里讲一个故事:当年美国和苏联太空竞赛,双方遇到在太空无重力状态下无法写字的问题。美国的做法是花巨资研发一种新的太空笔,当这种笔研发出来后,他们发现竞争对手苏联却一直在用铅笔写字。这里是想告诉大家,我们在设计系统时,必须要从事情本源出发,而不能只考虑用什么系统、什么技术,因此归纳出这个概念:非技术设计。在设计的时候从非技术角度考虑,不要一开始就给出技术解决方案,或许要解决的问题因为某个业务上的改动或者某个流程上的变化,就不需要几个月的开发工作了。这里有两个过度设计的例子:设计一个空调。如果设计一种空调在绝对零度到零上三百度都可以用,你也许能够实现,但需要耗费大量资源,却完成了一件没有必要的事情,就如同美国太空笔一样。绝大多数人不需要在这样极端的环境中使用空调。过度设计不仅指超出实际需求的设计,还包括过度复杂的设计。比如你要求你的助理把附近某便利店中的所有商品一种买一样,却只用其中一样,然后把剩下的商品都送回去。这样的做法听上去很愚昧,但实际上,我们在架构设计和系统实施过程中经常会发生类似问题:我们在调取一个数据的过程中,经常会把数据库中的所有数据都搬出来,却只找其中的一个记录。这两个例子启发我们:在架构设计的过程中,不要过早考虑技术因素,而是脱离技术,回归到事情本源去解决问题。作者:陈斌,《架构即未来》译者,易宝支付 CTO编辑:陶家龙、孙淑娟
本文相关:
- Copyright & 2018 www.xue63.com All Rights Reserved正在进入...李艳鹏:技术人如何修炼内功
21CTO社区导读:这是一篇关于技术人如何修炼内功的公开课,是由趣直播举办的一场技术人成长交流会,邀请了易宝支付产品中心首席架构师李艳鹏先生分享。
开发者要学习高并发服务、大数据、操作系统、算法和数据结构;学技术得学它的内功,内功就是基础。所以对于操作系统,我们一定了解它CPU、内存、磁盘IO和网络IO,并且据此粗略评估服务的性能;应用层面的小伙伴们可能对算法和数据结构的应用比较少,也比较简单,但是它代表了一个人的逻辑思维和思考能力;在互联网公司,高并发服务和大数据是两大方向。
解决高并发主要使用的就是分而治之的思想,但是也会产生一致性的问题;大数据是最近比较火的方向,所有的根基都来自Mapreduce、Gfs和Bigtable这三篇论文,推荐大家阅读。
以下为活动的视频内容。
接下来是我分享的文字和PPT版本:
有请李艳鹏老师!第一场分享是由艳鹏老师带来的,今天非常感谢大家来到现场。艳鹏老师是《分布式服务架构原理设计与实战》的作者,之前是一个朋友介绍他来我们平台做了一次直播,然后他相应的在服务器方面造诣比较深,他在易宝现在做首席架构师,也是技术经理,所谓修炼内功,我们会经常说,底层才是内功,在后端方面让李艳鹏老师来分享一下后端方面如何去修炼自己的内功?有请李艳鹏老师。
谢谢大家,大家下午好,我是来自易宝支付的李艳鹏,今天我给大家分享的主题就是技术人如何修炼好内功。这个内功包括技术的主题,也包括我们做人做事的主题。
那首先看一下我们今天分享的内容,我们今天一共包含四个内容:
第一个内容就是个人简介。
第二个内容就是分布式的服务架构。
第三个内容就是如何修炼技术的内功。
最后一个内容就是如何修炼我们做人做事的内功。
首先第一部分就是个人简介,我个人是经历过几家公司,然后我从毕业开始进入花旗银行,又来到甲骨文,又在路透社和新浪微博工作过,然后我在这几家公司负责的系统主要包括 K12 的教育系统还有外汇的交易系统,以及一级市场的回购业务,最后在新浪微博我是负责视频的微博项目。
在不同公司,经历过金融公司,也经历过社交媒体的公司,不同公司业务有不同特点,比如说社交媒体其实它的量级比较大,但它的准确性并不是最大最好的,比如说在社交媒体的一家公司,其实有两千个出错的时候,只有一个会来反馈投诉,但是在金融公司是不一样的,在金融公司只要你有一例出错的,那要不是老板来找你,要不然就是你的客户来找你,所以金融公司的特点更注重准确性,当然他的量级也是很大的。
接下来我介绍一下我现在的工作,然后我现在在易宝支付,我是产品中心的首席架构师,我主要做产品中心的架构规划与落地,我还有一些其他职责,然后这些职责包括核心系统的建设与维护,主要包括交易,支付,渠道,还有商户平台等。我还负责一些技术规范的建设和推广,以及金融行业中最重要的资金底线防火墙的建设,大家都知道金融行业是跟钱打交道的,那这个钱只要一有损失,这个损失就是非常大的,所以我在这边还负责资金底线的一个建设,然后还有,我还负责整体性能优化等等。
分布式的服务架构
第二部分就是分布式的服务架构,我们总体看一下它的目标,目标主要包含六个方面,这六个方面都是什么呢?
第一就是高可用,第二就是高性能,第三就是可伸缩性,第四就是可扩展性,第五就是安全性,第六就是一致性。我们一个一个来说这六个目标,它们是怎么实现的?
这六个目标,第一个就是可用性,我们在一般公司里边都会用 4 个 9 或者 5 个 9 来衡量,当然我们的易宝支付是可以达到 4 个 9,那 4 个 9 是怎么实现的呢?这个我们得从影响可用性的原因来分析,这个原因有很多。
例如我们统计了一下,去年影响可用性的主要原因包括什么?主要包括就是我们上线变更的时候,会影响我们 40%,50% 的可用性,那么我们就针对这个情况,我们就增加了架构评审和设计评审,还有技术评审等等,那我们就把这一块的窟窿堵住了,那我们可用性就可以提高上来,那下一个最重要的就是性能,大家常说性能的优化,但是性能的优化用什么方法来保证呢?在我们分布式服务架构里边,最重要的就是一个分而治之的一个思想,我们通过分而治之的思想提高整个系统的吞吐量,然后另外一个就是由于分而治之,其实它会导致一些问题。
这个问题就是一致性问题。那么我们怎么解决这个一致性问题呢?是我们最困难的事,也是最有挑战的事,当然如果大家感兴趣,我这本书的第二章就是讲一致性的问题,讲一致性是怎么解决的?
第三个就是可伸缩性,是我们互联网项目中最重要的一个特性,为什么说它是最重要的呢?因为去垂直扩展,这个性价比已经变得很低了,所以我们都去采用水平扩展,包含应用层的和数据库层的,还有缓存等等,例如数据库的分库分表,缓存的分片,还有消息队列的消峰,其实我们都是为了让这个系统能够水平伸缩起来,然后提高它的性能。
下一个特性就是安全性,安全性其实大家常说的,就是有我们系统安全性,写代码的安全性,数据库的安全性,还有前端外部的安全性,但是总结起来安全性其实大家仔细想,其实只有五个目标,第一就是防泄漏,第二就是防窜改,第三就是防抵赖,第四是防偷窥,第五是防止中间人攻击,其实所有安全性最后的目标只有这五个目标,那这五个目标怎么实现呢?
就是现在密码学上的几个技术的点,那么第一个就是加密,第二个就是签名,第三个就是我们使用 HTTPS 的双向认证通道,防止中间人攻击。有了这些办法,我们刚才所说的那五个目标,其实都可以达到的,其实安全性也并没有那么负责,当然具体的答法和方式还是很多很多的。
然后我们下一个就是可扩展性,其实提到可扩展性,大家肯定觉得可扩展性和可伸缩性是一个概念,但是实际上这两个概念其实是不一样的,可扩展性指的这个系统的可修改性,将来能够进行比较快速功能的迭代,然后快速去满足新的市场需求,这个叫可扩展性,我们以前常说的可插拔,其实属于可扩展性,但并不是可伸缩性。
最后一个就是一致性,刚才我也说了,一致性是我们实施服务化或者微服务化以后,造成一个大的问题,我们都需要去保证。
那么接下来我们进行分布式服务架构,其实我刚才介绍了一些内容,但是实际上我们很难在 20 分钟内讲的比较透彻。然后我推荐三本书,第一本书就是京东开涛写的《亿级流量网站架构核心技术》,那这本书更偏向于高并发和高可用前端系统的一个架构分析和设计和方法还有实践。
第二本就是我和杨老师共同著的,分布式服务架构原理设计与实战,然后我这本书涉及到,包含了微服务化,一致性,可用性,还有大数据日志系统的建设,以及调用链系统建设,会包含一些 APM 的核心功能,再加上我们线上进行技术攻关和进行线上应急的一些经验总结,以及最后的容器化还有持续集成等主题,所以这些主题总体来讲更偏向于方法论和实战,还有一些案例,所以说推荐大家来看这本书。
最后一本书就是李智慧老师写的大规模网站核心技术,就是最后一本,大家看一下李智慧老师写的这本,大型网站技术架构核心原理与案例分析,李智慧老师写的,其实这本书应该有好几年了,应该好多年了,但是这本书讲的原理还有概念都非常的核心,非常的重要,推荐大家也读一下。
如何修炼技术的内功
01. 如何综合评估一个人的技术能力
下面是第三部分,其实我要分享的是如何去修炼技术的内功,我们要说如何去修炼技术的内功?我们先看一下,如果我们作为面试官,我们去面试一个候选人,我们从哪些方面全面评估这个人的技术能力?
大家看这三个图,还有底下的字,其实我会根据三个层面来评估一个候选人,包括广度,技术知识的广度和技术知识的深度,还有技术知识的高度,那对于广度指的是什么呢?指的是这个人做过什么事情?这个人学习过多少的知识?他用过多少语言?他属于使用多少工具等等,主要在他的知识面和他的经验,那什么是技术的深度呢?技术的深度就是期望每个人在某一方面一定是有造诣的,什么是造诣呢?
就比如说在 Java 上,你一定要了解 GC 的原理,你能够通过调节 GC 来提高它的性能,或者是你懂得我们 RDBMS 数据库的索引原理等等,并且能把这个原理应用到你的生产实践中,你一定要有几个主题或几个方面是你非常深入了解和学习过的。最后就是一个高度,高度这个事其实是我这两年才认识到的,以前我只是拿广度跟深度来看别人和看自己,现在又增加一个高度,高度是什么呢?就是你学这个技术有什么目的?学了这个技术能达到什么样的生产?学了这个技术是不是现在技术的一个前沿,还是说已经淘汰好多年的一门技术?
所以就是说,我们一定要站在很高的高度来看这些东西,学了是不是有用的?学了将来是不是有用的?将来十年有用,将来二十年是不是有用的?所以也跟我这门课一样,就是我们一定要修炼这个内功,因为内功是永远不变的,就是将来你可能过十年二十年,这个内功还是一样的。
02. 如何修炼内功
下面主要是说我们如何去修炼这个内功?有多少方面需要我们掌握?一共有四个主题,我们先看下面两个主题,那就是操作系统,算法和数据结构,那先说操作系统,其实我们现在看各种新技术,还有我们用的各种技术,其实都跟我们操作系统有关,而且我们发现新技术新原理,很多东西从这个操作系统一些核心的原理上是能找到缩影的。
其实举一个非常小的例子,比如说大家说的微服务,大家是不是觉得微服务现在很火很新?但实际上在操作系统中是有微服务的,第一它的内核是微内核,第二我们想一下命令和管道,就是我们在实现一个复杂的日志搜索,我们一个命令接一个管道,再接一个命令,再接一个管道,其实每个命令是在完成自己它想做的事,有清晰的输入和输出,然后和其他的命令去配合着使用。
所以完全是一个微服务的思想,所以我说学技术得学它的内功,内功就是我们这些基础一定要掌握很扎实,所以对于操作系统来讲,我们一定要理解到它的 CPU,内存,磁盘还有网卡的 IO 等等这些原理,并且能够根据这些资源去评估你服务的吞吐量和 TPS 响应时间等等,这个评估指的是粗略评估,就是评估是没有精确评估的。
然后我们看一下算法跟数据结构,对于算法和数据结构,对于我们应用层的小伙伴们肯定是觉得,这个事,其实我们很少在应用层直接去使用到它,使用也非常简单,但是算法和数据结构象征着我们一个人的逻辑思维和一个人思考能力,所以一定对这个东西也要掌握一些,或者是要熟悉一些。我最后有一个高级算法,高级算法是指这些,比如说动态规划,贪婪,还有剪枝,递归等等,那为什么我说有高级算法呢?就是假设在座的每一位都是面试官,那来了一个小伙伴,小伙伴说我会动态规划,我可以写出来,我随便一个都可以写出来,那这个人要不是勤奋的,要不他就是非常聪明的,所以如果你会这个,一般都是会打动这个面试官的。
然后我们再看上边的两个主题,第一个是高并发的服务,第二个是大数据,其实在互联网公司里边主要有两个方向,就是这两个方向,一个就是高并发的服务,做线上服务的,一个就是大数据,那高并发的服务其实它的核心思想就是分而治之,就是我们单体系统架构,其实不是它的性能不能提高,是它在垂直扩展过程中,它的性价比非常低,非常贵,所以我们都用伸缩,采用分而治之的思想,但是分而治之以后产生的问题,那就是一致性的问题,因为分开了,他们的协调一定会有问题。
至于一致性怎么保证,还是在我书的第二章是有的。然后右上角就是大数据,其实大数据这些年特别火,但是大数据所有核心思想其实都来自于谷歌的三大论文,包括Mapreduce,Gfs,Bigtable,所有的大数据根基都来自于这三个论文,所以推荐大家都阅读一下这三篇论文,现在网上有一些中文翻译,当然如果英语比较好的是可以看英文版的。
03. 目标方法论
其实我要跟大家分享的主要是目标方法论,然后这个目标方法论主要包含几个关键元素就是目标原则方法和结果,这个其实来自于我们易宝支付的文化,稍微有一点点变化,没有原封的拿过来,为什么说这个方法论非常重要呢?
因为我这两年在面试还有在评审的时候,我发现一些小伙伴在做一些事情,他们不知道做这个事情是解决什么问题的?还有一些小伙伴他知道是解决什么问题,但是这个问题其实根本就不需要解决,所以就是说做任何事情之前,一定要树立一个正确的目标,然后如果这个目标是抽象的,一定要把它分解成可衡量的一些目标,然后只有目标正确了,我们后边做的事情才是有意义的。
接下来就是第二个原则,原则是什么呢?是我为了实现这个目标不能做的事情,这个是底线,这个大家肯定都是理解的,就是生活中也有很多原则。
接下来就是方法,就是我们要实现一个目标,其实有各种各样的方法,方法都不一样,那么这些方法我们要去权衡,我们要权衡他们的利弊,还有权衡他们的成本,还有权衡他们达成的效果。
我们一定要找到一个最合适的方法,或者最适合的方法,而不是找到一个最高大上的方法,我也见过很多技术方案,其实是拿很多高大上的技术,最终解决了一个很挫的问题,其实这种事情性价比比较低了,所以选择方法一定要选择最适合的方法,就是做架构也是要做最适合的架构,要回归架构的简洁之美,不要所有的事情都拿一些高大上的技术招式来应付这个结构。
最后一个就是产出和结果,任何一个事情最后都会看它的产出和结果,这个产出和结果和第一个目标是相对应的,你这个产出结果如果跟目标不是对应的,那这个事情就是其实是白做了,或者是偏离了,也可能有一些副作用,作用有好有坏,但是没有满足我们的初衷。
04. 做人四原则
这个是我分享的最后一部分,就是如何修炼做事的内功,这一块可能跟我们技术内功不太一致,但是是我和身边的一些小伙伴们总结下来的一些生活和做事的经验,分享给大家,希望是能够起到一定的效果。
在这里我把它叫成一个做人的四原则,其实这四原则大家千万不要看这个内容比较少,大家一定要详细的去理解,可能等你时间久了,慢慢就理解到了。我们一个一个看,为什么我说它非常重要?
第一个就是靠谱,有脑子,衡量一个人,或者别人对你的印象,其实跑不出这两个因素,就是靠谱有脑子,什么是靠谱呢?靠谱就是别人一想起你觉得有一种信赖感,他觉得这个人行,那什么是有脑子呢?就是比较灵活,不做作,做事情总是有门路,那这个就叫有脑子。
第二项就是胆大心细,乐观,这个也是刚才李智维讲的,我们做事情一定要胆大,敢于去尝试,然后我们一定要乐观,为什么乐观呢?其实福祸是相通的,有福可能就有祸,有祸就有福,有句古语,我语文学的不好,忘记怎么说了,福兮祸所伏祸兮福所倚,就是无论发生什么事情,大家一定要乐观,可能一件坏事,等你过了一个月看仍然可能是一件坏事,但是你可能过了两个月或者两年或者十年一看,这个事有可能是好事,所以一定要乐观。
第三个好像正能量比较少,第三个就是要么忍,要么狠,要么滚。这句话什么时候适用呢?就是在座的小伙伴如果真的碰上一些坎坷了,尤其是在工作上碰到一些坎坷,不用纠结,也不用懊恼,也不用沮丧,这三条路中挑一个就可以了,往前走,因为纠结也没用。
最后一个就是要善于交流,大家听起来好像是,感觉是侃侃而谈的人就是善于交流,比较圆滑的人善于交流,但是实际上其实这个不是善于交流,什么是善于交流呢?第一你要善于思考,你要善于站在别人的角度来看待你自己,你也要善于站在别人的角度看他自己,这个才叫善于交流,这样你跟别人才能有交流,就拿现在一个心理学的非常流行的话,叫同理心,说白了就是你要能站在别人的角度来看事,但是我刚才说的那个,其实比这个要求更高,就是你站在别人的角度,不但能看他自己,你还要能看你自己,所以这个才叫善于交流。
成家立业还是立业成家?
这个其实跟技术没有关系,但是我真的十分十分想跟大家分享一下,就是我相信在座的小伙伴有些人没有成家,到底是先成家再立业呢?还是先立业再成家?这个事可能也说了几千年,但是古语是说先成家再立业,所以在这里我也推荐大家一定要早结婚,早生小孩,为什么呢?因为这样你就会早买房子,早买房子呢,因为房子长的太快,这个大家都懂得。
最后其实我的分享就结束了,然后非常感谢大家今天来参加,感谢李智维的这次组织,我觉得组织的特别棒,特别成功,然后现在这里边有两个二维码,一个二维码是我的公众号,一个二维码是我的博客,我们有兴趣可以关注。同时大家有什么问题大家可以向我提问,第一个提问题的人我会赠一本书,之后提问的人,我会回答你们。
问答互动环节
Q:你好老师,我是 iOS 的一个小菜鸟,就是说我刚进入公司是一个初创公司,一直是一个人,就是说完全没有师父带,从 get set 请求都不会,到完成一个项目这样子,但是我发现其中走了很多弯路,包括就是很多的 bug 解决也好,如果在这种情况下,没有很多时间如何提升自己?还有如何小菜鸟独立开发能力,这个您认为怎么提高比较好?
A:好的,我先说,其实你最后一个问题,你一开始的叙述上已经解答了,因为你说你在公司其实没人去培训你或者培养你,但是你自己通过学习已经解决了这些事情,所以我相信你的自学能力肯定是很强的。
第二个事就是在时间上,人的时间,我干了这些活,然后我很难再有时间去给自己充电,去学习其他的内容,但是首先就是你干这些活,首先就是提高能力,再提高能力,而且在实践的过程中,其实提高的能力是最多的,你单纯的去学习很多东西,比如说我报一个大数据的班去学习它,可能未必有你真正的去找一个这样的地,没人带你,你每天去钻研,去学习,再去实践做的快,学习的快,所以个人来讲,这个事我觉得是没有问题的。
另外一个时间上,其实只要你去抽时间,其实总是能抽出一些时间去学习的,比如说我也是工作特别忙,有的时候加班到九点十点,但不会说通宵加班,然后我会上下班的时候,我坐地铁的时候一般都会拎本书,反正在坐地铁的时候没什么事嘛,要不我也在那站着,还不如我拿本书我看一看,上下班大家也知道北京生活是很苦逼的,上下班有一两个小时的时间也很正常,这段学习时间其实也是挺多的。
再有一个就是我觉得你这种情况,可以有个一年两年,但不适合十年八年这样,就是等你到一定程度了,你向再往高发展的时候,你一定找到一个,比如说他要经验比你更丰富的,能够带你的人,其实人生就是进圈子,加圈子,跟大师学习,就是这样嘛,每个人都跟上面的大师学习,所以说长时间来讲建议你还是走这个路,但是短时间我觉得这是没问题的,也是一个提高的过程,也是必须的过程。
Q:老师您好,我是做客户端的,大概做了两三年,如果想技术上有更好的提升,是不是应该有服务端的开发经验会比较好呢?
A:其实是这样的,这个问题我是觉得树业有专攻,我个人是更偏向于后端,因为我工作好多年了嘛,已经有十多年了,在工作的前些年,其实我是什么都做,那时候都叫全站工程师,从前端的 js,HTML,css,再到后端的服务,再到脚本上线等等,所有都是自己写,那时候叫全站工程师,现在其实互联网里边更倾向于把这些组分成前端后端或者 DBA 组,当然在微服务化下,其实不倡导这些分,微服务化倡导一个自治的团队,但是微服务化的实施在国内可以说没有特别真的跟微服务化这个理想说的,就是实施的靠近的,其实大家都是在说这个概念。
所以整体来说,我就说现在的市场上,基本上还是前端做前端,后端做后端,然后 DBA 做 DBA,就是体现你的专业性,所我是觉得做客户端我们就专心做客户端,因为客户端也是很深奥的,比如说客户端的一些缓存技术,客户端的一些性能提高,稳定性,兼容性等等,这些其实都是树业有专攻的事,其实你让后端的人去搞,他也未必能搞懂,所以我的建议是要学这个就把它学的很深入。
Q:你好,我是做客户端的,然后我想问一个问题,作为一些朋友,会认为客户端后端他们可能前途更好一点,有一些后端他又会去转客户端,他觉得客户端前途更好一点,你觉得呢?
A:我觉得这个整体来说,就是一个围城的概念,大家都觉得对方是好的,但实际上他们都是对的,为什么是对的呢?他都看到了对方最优秀的人,他不是看到整体情况,整体情况其实前端后端是一样的,我举个例子,我原来在甲骨文的时候,我有些同事,他别的什么都不做,别的一切活都拒绝,他只做前端 js,HTML,那么没有多久他就自己创业了,就是他达到了一个什么样的水平?
在浏览器下,那时候移动互联网还没有兴起,主要是 PC 端客户端的界面,无论你要什么效果他都能快速现场就给你实现,非常非常的快,所以这些专家级,前端也有专家级,后端也有专家级,前端也有小白,后端也有小白,所以我的意思并不一定后端就一定更有前途,当然这个前,哪个前都一样。
所以我还是刚才跟另外一位提问者观点是一样的,就是尽量还是树业有专攻,你一定要在这个领域达到一个非常专业水平,你再去看其他领域,因为你这个领域,比如说我前端还没做好,我就去做后端,你就一定能成为大师吗?那不一定,但是你说我前端成为了大师,你去后端去做,那你更有可能是成为大师了。
所以我是觉得在一个行业内,一定要成为专家级的,再去看其他的行业,但并不是说这一辈子都在这一个行业下做这一个事,就像我刚才技术里面广度,深度和高度,就是说深度一定要有那么一个两个,广度当然也要有,你要都了解,都会一些,最主要的是高度,高度主要是方向性,你做这一些东西到底能产生什么生产力?能够产生什么价值?给公司或者自己创业带来什么样的价值?
作者:李艳鹏。
说明:本文为投稿作品,内容来自其简书博客及其他友情媒体,一并致谢。
李艳鹏现任易宝支付产品中心首席架构师,著有《分布式服务架构:原理、设计与实战》一书,是【云时代架构】技术社区的发起者。
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点}

我要回帖

更多关于 传奇内功连击补丁 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信