“技术人一方面要面对复杂的业务与技术问题,另一方面又要面对日新月异的技术浪潮,常常感觉力不从心,跟不上业务和技术发展的节奏。好的技术成长思维能帮助技术人在业务与技术的洪流中找到自己的成长路径与方法,快速地吸收对自己有价值的养分,从而保持良好的成长性,脱颖而出。”一是因为没有参考学习的标准,主要靠个人在实践中逐步形成自己的思维习惯;二是更多地跟个体的经验相关,没有相关的经验很难形成自己体系化系统化的思维体系。任正非说:“自身要渴望成长的动力。自身想当将军,你就会渴望搞清楚飞机、大炮、坦克、枪,如果这辈子只想当士兵,那就何必要去了解大炮,只要懂得枪就可以了”。作为一个对自身成长有追求的同学,可以多通过业界大牛的经历和分享,来学习技术成长思维方式,因为业界大牛有比较好的技术成长思维,加上难得的技术业务际遇,才能最终成长为业界大牛。本文仅以在工作过程中接触的大牛和看过的大牛分享,略做技术成长思维的总结,希望对大家有所帮助。最容易发生的问题是:只关注方案,怎么把活干了,但是没有把实际问题搞清楚,方案解决不了问题,导致吃力不讨好,来回返工....或者直接找领导要方案,按上级说的一五一十的做,但是很多时候问题还是解决不了,问题还是会落在自己头上,这时就就会反而抱怨上级:方案明明是你给的,我按你说的做了,出了问题怎么算我的?其实这个时候就是因为缺乏问题思维,没有真正对问题抽丝剥茧,把问题定义好;要解决一个问题,不论是有的放矢,还是摸着石头过河,前提都是实事求是,对问题深刻地梳理,找到问题的关键和本质,才能制定正确的对应的解决方案。技术人有一个常有的思维定式:“手里有把锤子,看什么都像钉子”,要做到不是想当然,沉下来把问题定义清楚,问题才能迎刃而解。常用的办法是在定义问题的时候,首先要对问题的方方面面极尽细节全枚举,再抽象总结归类分层,将问题分成几个域,进而在各个域里抽象定义出问题的核心与边界;最后,再根据各个域的问题,分析出问题的本质,进而从问题的本质出发,寻找问题的解决方案,从而保证解决方案真正能契合问题的本质。即使在解决的过程中出现解决方案不尽人意的地方,也是在朝着正确的方向推进,最大限度保证找到解决问题的正确办法。因此大家在解决问题的时候,对问题越了解,越透彻的分析,才能保证正确的解决方案。而不是依据经验,或者找熟悉业务的上级,更不是用上了很牛的技术,就能把问题解决好。问题本身比答案更重要。有了问题思维,又常遇到的是效率问题:效率问题主要出在没找到合适的工具。这里指的工具,不仅包括开发工具、框架、中间件等,还包括任何能减少你的重复劳动,提高效率的方法、小技巧。这也是个人不断沉淀成长的过程。在找到合适自己的工具过程中,其中有个很重要的点:关注“重复的事情”。重复的事情不论是找到合适的工具,还是发挥技术人的优势,自己开发小工具。这样才能最大化工具的价值。比如很多大牛都是脚本达人,会把重复性的工作用对应的脚本实现,下次遇到类似的事情,改改脚本就能实现了;还有的会把解决某类问题的代码,封装为好用的框架,进而成为行业的标配,这些都是工具思维帮助自身提升影响力。但刚入门的小白还不能通过自己造工具造框架提升自身影响力,哪有什么利用工具思维提升影响力好办法呢?这里有个经验是把自己当工具,让自己成为解决某类问题的扳手,不论问题的大小,让自己成为流程或者组织的一部分,这样你就是在问题的解决中不断实践和提升自己,在工具人定位中一点点提升自己的能力和影响力。《张艺谋的作业》里讲到张艺谋摄影的起步就是从给工会活动拍照开始的。
有了问题和工具思维,就能把问题比较快地解决好,就来到了第二阶段:思维进阶阶段。这个阶段最重要的就是要扩充自己的思维边界,充实自己思考问题的维度,不只从技术的维度出发,看问题更全面,找到问题的关键,找到问题的更优解。这个阶段就像机器学习的优化器,在技术的小梯度里不断迭代,可能离开鞍点还差得十万八千里。这时换一种思维方式,换一种优化器,才能找到梯度快速下降的方向,找到问题的最优解。还有一个比较有帮助的思维就是产品思维,这也是技术比较缺乏的一种思维方式。什么是产品,产品是把可复用的经验通过设计,从而形成具有良好的用户体验,解决用户某种需求的有形或无形的物品。技术同学在业务开发的过程中,把可以复用的技术方案,变成对其他技术或者业务体验友好的技术产品,相当于个人技术能力的产品化,实现个人影响力的提升,从而取得更好的发展。这些技术产品,可以是某个业务模块的可运维后台,可以是通用的技术平台。拿一个之前遇到的简单的例子:A同学开发营销模块,业务隔三差五会不不同的营销方案出来,产品经理就拿着这些需求来找A同学开发,A同学每天开发这些业务代码,觉得没有技术沉淀,不想老给他做这些没对自己没提高的业务需求,想让产品经理提一个可以复用的营销产品方案,这样就不用每次需求来了都开发。产品说每次营销的需求都不一样,没法复用。A同学没办法,为了以后写起来效率高一定,A同学运用工具思维,想把代码抽象抽象,变成可开始复用的组件,为了复用与抽象,A同学把营销方案可以分成几个部分,每个部分又有不同的几种类型,不同的类型有不同的设置方式...就这样之前无法复用的业务需求,变成了可以组合拼装的业务组件。有了这些组件,A同学发现营销需求就能比较高效的实现了,后来A同学还简单开发了一个后台页面,有新营销需求,让产品自己去配,A同学也成为了营销模块的事实产品经理,有了更大的话语权,产品经理有新的营销配置需求会跟他商量,他也能给产品经理提供比较好的实现方案,业务和个人都得走上了更好的发展模式。正如上文所说,产品级的解决方案,是经验复用的更好的模式,技术同学需要在自身的开发能力之外,提升自己的产品思维和产品设计能力,从而能找到一个更好发挥自身价值的模式。现在大家都在讲数字化、用数据分析问题;数据思维跟大家平常讲的让数据说话,找数据确认一下有一定的联系;但对技术同学来说,数据思维更多是自己给自己找数据要数据的意识。
第一个层次是无中生有。还是拿A同学和B同学的例子。一次线上促销活动,流量一上来,请求都被夯住了,幸好不是所有机器都有问题,大家赶紧人仰马翻手忙脚乱地一边把有问题的机器摘下来,一边保留现场查问题...
这个时候,技术好的B同学应用工具思维,拿着非常好的问题分析工具非常迅速的就开始分析了;A同学的没有那么好的技术,但是他之前在链路里做了很多埋点,把他链路耗时一览图打开,一下就找到问题出在了哪个阶段,再有针对性的把事情准备的预案一执行,问题立马解决了。至于深层次的技术原因,就可以等到事后再深入分析了;而当时B同学还在各种猜测和验证,没有找到问题的真正方向。
及时解决业务与客户遇到的问题永远是第一位的,所以数据思维从另一个维度帮助你建立全局的鸟瞰图,在问题分析和问题解决中,都能开始帮你找到方向。后来也是A同学,再做这个问题的性能优化,又运用数据思维,找数据要数据,先压测做请求的cpu耗时火焰图,找到耗时的大头...问题迎刃而解。不论是性能优化还是业务功能上线,数据就像一盏指明灯,指明方向;因此在平常工作的中的数据埋点、数据可视化、数据分析是技术人不可不积极学习的基本功。
有了数据思维的第一个层次,就可以尝试数据思维更重要的第二个层次:用数据形成反馈回路。在业务系统中,数据不只是业务的一种表现和产物,也是系统的一部分,利用数据自动反馈去提升系统的行为,系统才会具有自动进化的能力,形成闭环。比如淘系的猜你喜欢,字节的推荐都是数据回路应用的典范。在技术实际开发中,可能没有这样明显的数据闭环需求,但是技术同学可以从数据闭环的角度去思考,比如失败的请求除了记日志采集数据,有没有可能利用失败比例来自动降级;比如利用缓存的命中率来触发缓存的主动刷新等等;利用数据形成链路与问题的自动化处理;在信息化的今天,日常遇到数据思维的使用例子会非常多,最重要的技术同学养成数据思维的习惯,才能在数据化浪潮的今天,游刃有余。另外一个需要养成的进阶思维,就是严谨的技术风险思维,正如常说的墨菲定理:如果事情有变坏的可能,不管这种可能性有多小,它总会发生。严谨的技术思维包括并发的考虑、一致性的考虑、面向失败的设计等等。其实风险思维本质是概率,不要忽视任何有概率发生的事情;这些小概率的事情,因为概率小就选择忽视,必然会导致出现大的问题,因为问题的大小不是由概率的大小决定,概率小的严重错误也是必须有应对方案的,技术同学经常混淆概率小和问题小两个不同的概念,甚至导致出现亿级资损的事件也时有发生。拿一个很简单的例子,某个领劵的接口会请求用户身份验证接口验证用户身份,用户身份验证接口返回非常快,而且请求的用户大概率是满足领劵条件的用户,没有风险思维,就只关注大概率的结果,把用户验证的默认值设为true,忽视验证接口超时的小概率事件,保证大部分用户的体验能正常领劵,但是止不住有专门利用这类验证超时疯狂刷劵的团伙...导致E级的资损故障。所以风险思维很多时候是反直觉的,在这些反直觉的地方,能养成严谨的思维习惯,是从另一个维度给自己的方案兜底,也是给自己的职业生涯兜底。技术人员还需要养成的一个思维是:文科的思维,生产关系思维。生产力决定生产关系,理顺生产关系释放生产力。这个思维模式,技术同学体感不强,跟技术不搭嘎,但是在业务中各参与方的流程、关系,无一不是生产者、生产资料、生产力的关系,生产关系才是从本质上阐明了业务过程中的内在逻辑。技术在做的是用技术提升生产力的事情,为了更好的把技术的力量发挥出来,就得从生产关系的角度出发对生产流程中各方的作用、交互理清楚,用技术重构生产关系,实现生产效率的提升,进而引发社会的变革,这才是技术改变世界的底层逻辑;如果连现实中生产力关系都没有搞清楚,技术如何介入到生产流程中,如何真正发挥提升生产力的作用;拿蒸汽机、电动机对社会的变革来说,无不如此,都是在真正在生产流程中替换了落后的生产力,同时又为了发挥先进生产力的先进性,对生产关系进行变革,从而实现社会的变革。所以,技术在保证自身先进性的同时,需要对业务深入研究,从社会的生产关系方面来看生产力面临哪些挑战,业务挑战成就技术;技术只有解决业务中的现实问题,真正提升生产力,才能对生产关系进行影响,并在先进生产力发挥作用过程中,对生产关系进行理顺,才能不断提升业务的效率和效果;具有生产关系思维的技术同学,能着眼于业务的本质提升技术实力,同时着手于生产关系的理顺推动组织变革,超越技术人本身的影响力,但这也是真正发挥技术影响力的最本质的要求。
在具有了进阶的思维模式,需要进一步提升的是个人的品质,进阶思维决定是否能找到了正确的方向,而个人品质相关思维决定了能达到的高度。一个人的技术有品质,最基础的要求是对技术有热情,能自我驱动去打磨自己的技术;任何的天才都离不开对自己的技术不断练习。正如1万小时理论所说:人们眼中的天才之所以卓越非凡,并非天资超人一等,而是付出了持续不断的努力。1万小时的锤炼是任何人从平凡变成世界级大师的必要条件。这就是所谓的“工匠”思维;“工匠”需要不断对自己的作品与技能进行打磨,拿日本剑道大师宫本武藏为例,他舍弃亲情、爱情,以神佛、天地为敌,磨炼自己超强点控与势压全场能力,开创出“二刀流”,成为一代剑圣。技术人虽然不用以天地为敌,但确实是每一天都需要打破自身舒适区的勇气,不论是清除代码里的坏味道,还是设计时考虑设计的开闭与可扩展性等等,具有工匠精神的技术人不放低自己对自己技术的要求,是技术人品质优秀的前提。第一种类似“晒出你的第83行代码”,把自己认为写得好的代码跟身边的同学分享,不论是更优雅的写法,还是更高的性能,通过分享,帮助大家和形成团队技术追求的氛围同时,也收到更多的反馈,更全面的提升自身的技能,进而取得更大的成就感;第二种布道思维是开源与开源的推广,把自己的代码开源,或者推广开源,不在于你开源的代码有多少人在用,而在于你参与到开源里没有,之前听一个大牛分享,他的愿望不是自己开源的代码有多少人用,而是希望自己有1024个开源库,其实道理很简单,当你不计成功与否去投入开源,更多磨炼的是你自身对技术的热情,与对代码对开源的信仰。
每一个了不起的大牛都会有自己的作品,部门里的大牛有部门级作品、公司里的大牛有公司级作品...依次类推,当你的作品是行业级作品、世界级作品,那你的水平和能力也完成是跟部门级大牛时不一个层次的。但不论哪一级的作品,底层的思维方式是没有区别的。当作为一个技术小白,有作品思维,就像一个艺术家,他每写下的一行代码,是在为作品积攒力量,为作品提升自己的审美...而你当担的每个任务,都是为你能写出更高一层级作品的习作;具备作品思维,你会在技术的优越性上、设计的优雅性上、架构的先进性上、接入的易用性上等等,你会跟某一级作品标准去对齐,从而为自己的指明努力的方向。跟作品思维对应的是品牌思维,把个人影响力与个人品质当做个人品牌来运营。很多大牛有自己的博客、出的书,就是这个道理。但品牌思维跟作品思维不一样的地方是,可能技术同学的写作能力并不强,更别说品牌运营能力,好像有没有这个思维不重要,达不达得到这个思维的能力要求才重要。其实不然。当你真正把个人影响力与个人品质当做品牌时,你就会不断思考、不断总结,一方面是思考个人的成长与得失,一方面是总结经验力求对他人有所帮助,这样从小的经验总结开始,从某个方面的思考开始,甩掉认为自己写作能力、运营能力不好的思想包袱,进入品牌的底层思维转变与相关能力锻炼。品牌的力量更多在冰山水面之下的部分,如同苹果电脑打开后盖的跟苹果电脑一样完美的布线。博客、出书是用户看的部分,你不懈坚持的总结和思考,并把他付诸文字、进而分享,是你后盖下的布线。品牌只有从一点一滴的力所能及的小事开始,不在乎用户能看到的那部分,不计较为用户看不到的那一部分持续投入多少,才能成为一个一个伟大的品牌。
第一点:支持与相信。在纷繁复杂的业务现实世界中,代码只是现实世界的简化和抽象。业务现实世界的很多情况可能都是技术的视角出发不能理解的,很多时候,需求需要返工、业务没有提升,技术很容易质疑业务或者产品同学,甚至会有撸起袖子,下场指导产品和业务的冲动。这时候更多的应该具有团队思维,相信与支持,允许产品同学和业务同学有三次试错的机会。今天这些业务强的公司,不论是华为小米,还是腾讯阿里,都不是一上来业务就能找对业务方向的,都是在摸索中逐步找到的方向。很多人在团队中发挥出超越个人能力,很重要的就是因为团队给他的支持和信心,所以具体团队思维的更能成就他人。这也是团队思维的第二点。成就他人,最重要不是成就,最重要是他人。成就是从自身出发,让他有成就,自己觉得有成就。成就他人,其实说的是他人,训练的是设身处地为他人着想的能力和思维。不是为了成就,成就是外界看上去和追求的结果。真正具有这种思维的人,不在于手把手的指导,不在于言传身教。在于低到泥土里去的身姿,在于相信这块土地会长出茂盛庄稼的殷勤关切。
最后,成长思维中最重要的就是终身学习,各种思维方式的掌握理解,都是在不断学习中加深自己的理解,不断提升自己的实践水平。不论横向的知识面扩展,还是某个主题的深入理解,运用上面的成长思维不断学习,提升知识面与理解的同时,也训练自己的思维方式,真正形成自己的成长飞轮!
本文作者:谭繁华