如何摆脱「技术思维」的惯性?

大家好,我是Z哥。

虽然从标题上看,这篇文章是写给“技术人”的,但从广义上来说,只要你是一位以理性见长的人,那么这篇文章要讲的东西可能会与你有关。

先问大家一个问题。

如果你现在打算做一件事A,它的目的是为了X。但是在做的过程中,你发现可以多做一件事B,能让目的X的效果更好(假设效果更好是确定的)。

你会毫不犹豫的去做B吗?

比如,作为程序员的你正在做性能优化。这时候,网上看到一篇文章说,某新技术比你当前用的老技术,性能高10倍,你会不假思索的去试一下新技术么?

如果答案是肯定的,说明你的「技术思维」过重了,得“治”一下。否则,说明至少你现在还没有被「技术思维」牵着鼻子走。

远的不敢说,技术思维过重的毛病至少在程序员圈子中是一个很普遍的现象。而且,越是“技术狂人”,越容易陷入到这个问题的“黑洞”中。

Z哥也是一位地道的技术人,曾经也经历过这个时期。所以我深知陷入这个思维黑洞是弊大于利的,因此想分享一些我的经验给你。

这个“毛病”是怎么产生的?

其实你会发现类似的现象还有很多。

  • 在需求评审会上,针对产品经理设计的一个功能,技术人员们倒没有提出什么对这个功能本身的异议。反而在激烈的讨论这个功能应该怎么实现才最好,该用什么技术。

  • XXX技术性能贼强悍,我觉得把A功能里用到的YYY技术用XXX替换掉,性能至少翻一倍。

  • ……

你是不是也对这些事乐此不疲呢?

其实这些乍一看都是好事,都是在做一些让结果变得更好、改善现状的事情。应该鼓励和提倡才对啊。

没错,的确是这样。

而且,“寻求最优解”是技术人的强项,因为技术思维其实就是工程化的思维,“最优解”就是这种思维所追求的最终结果。

但是,所谓成也“强项”,败也“强项”。来看看我们技术人的这个强项是怎么得来的?

我们每个人的“强项”,真正由天分决定的微乎其微,大都是后天培养而成的。思维也是如此,也是后天培养起来的。

而在培养习惯的过程中,有一个东西起到了推波助澜的作用——多巴胺。

640?wx_fmt=jpeg

▲图片来源于网络,版权归原作者所有

20 世纪 80 年代,剑桥大学的神经科学教授沃尔夫勒姆·舒尔茨(Wolfram Schultz)对老鼠进行了一系列实验。

他和他的同事们先将老鼠喜欢的苹果片放在投射屏幕后面,当老鼠找到并咬下这些食物时,他们立刻观察到了大鼠脑内的多巴胺反应。

更为关键的是,舒尔茨教授的一系列实验最终的结论是:一开始预期一个行为能够获得奖励,如果真的得到了奖励,就能使这个行为成为一种习惯。

把视角拉回到每个做技术的人身上。我们在刚入行的时候,专业性是很低的,做事质量不高、效率不高、计划经常失控等等。

通过不断的实践和练习,我们一次次地尝到了专业技能和专业思维提升带来的好处。做事的结果越来越好了,开始得到表扬、升职加薪等等。

这个过程其实和上面的老鼠实验是一样的,在多巴胺的刺激下,你陷入了一个循环之中,逐渐形成了你的做事习惯和思维方式

「技术思维」的短板

任何事物都有它的长处和短处,如果我们单纯只用「技术思维」来考量的话,最大的问题就是考虑的维度过于单一。抽象的说,这只是在“how”的范围内考虑问题。

而“how”之前的概念其实更加重要,就是“what”和“why”。

如果说how是1~100的话,那么之前的what和why就是0~1。因为what和why才是做一件事how的意义。

这就好比,有人说我们现在要烧火取暖。然后,我们不断在花时间研究如何让火烧的更大、更旺上。而不是去考虑,取暖到底需要多大的火才够。

超过原始目的所需的临界点之后的投入,其实都是浪费的。甚至还有可能起到反作用,比如火虽然更旺了,但是烟雾也更大了,更容易呛到喉咙。

长期以往会陷入的困境

作为技术人,如果长期处于这种思维习惯中,不管你愿不愿意,你的未来职业道路只会剩下做「专才」这一个选择了

因为你的其它思维模式得不到运用和锻炼,导致你看问题总是片面的、局部的、单一的。

所以,「广度」上不行,只能往「深度」上走了。

如果你想让未来有更多的可能性,那必须得从技术思维中走出来。

如何破局?

有什么破局的办法呢?

Z哥建议你从思维模式的“形态”来考虑,就可以找到突破口。

大部分思维模式都是基于过去的经验而形成的,技术思维也不例外。

技术思维典型的场景是:
  • 因为……,所以……

  • 如果……,就会……,否则就会……

在形态上,这种思维模式是「直线」的。沿着这根直线可以去找终点。
640?wx_fmt=png
但是很明显,在这条直线之外因素都会自然而然地被忽略。

如果我们将“因果”的「直线」形态,转换成“相关”的「网状」形态就可以破局

以终点为圆心,将所能想到的、与终点相关的因素都放进来,建立关联。

然后,标出所有的因素与结果之间的「相关性」大小,再根据这多个维度去做how的考虑和决定。
640?wx_fmt=png
沿着这个思路走,你会自然而然地基于问题的现实、基于场景去考虑问题了,广度自然就有了。

具体的做法,我有三个小技巧想分享给你。

三个破局小技巧

01
追问根源和目的,并且不要在做事的过程中将目的给“丢”了。要一直把目的作为「锚点」,防止自己所考虑的内容脱离了最初的目的。

比如,当自己准备下一个结论之前,多问自己几个下面的问题:
  1. 做这个决定的理由是什么?

  2. 确定这个理由是这件事最重要的因素吗?

  3. 不这样决定会怎样?

这几个问题会让你从思维的黑洞中拉回来,回到“网状”形态的思维中去。

这其实也是「寻求合适,而不是极致和完美」的体现。

虽然完美主义并不是技术人的专属特质。但是在我的观察中,技术人有完美主义特质的比例相对其它人群是更高的。

所以,技术人也更容易成为脱缰野马,离最初的目的越来越远。

02
站在更高的层次考虑。这个在很多讲管理学相关问题的时候会经常听到。

在我们现在聊的这个场景中,所谓的「广度」和你所能看到的“视野”大小是正相关的。

但是站在更高的层次来考虑问题,这事的确挺难做的。毕竟,自己没有真的站在那里过,没经验啊,很难进行所谓的「换位思考」。

我的一个办法是,在你的所有经历中,搜寻与这个位置更高的人当前所处的境地接近的场景。当时的你就是现在的他,然后把这个感觉带到当前的场景中来,考虑眼前的问题。

比如,虽然我没做过管理,但是我在学校里做过班长、组长啊。对于管理中的分工、协作等概念其实是相通的。

如此能让“站在更高的层次考虑”的效果更好一些。

03
以“社会价值”为导向,寻求其它的因子做乘法。

技术 * X = 社会价值

技术脱离现实的问题后,价值等于0,这话一点都不为过。因为技术本身没有社会价值。

你在做一件事的过程中会遇到一些意外,会发现一些新的“宝藏”,这都很正常。

而要让自己在这个过程中保持客观理性的办法,除了第一点「目的导向」之外,还有这个「价值导向」。区别是,前者倾向于保守,后者倾向于激进。

比如,发现的一个新宝藏,虽然会让我们多投入1.5倍的成本,但是可以发挥2倍的正向价值。这才算的上是一个有价值的想法,才值得去讨论和可以考虑是否要为之调整最初的目的。

禁锢思维的往往是我们自己

其实技术思维并不只能用于解决技术问题。思维模式是一种抽象的东西,可迁移性是很强的。

比如,管理思维中的分工、协作,其实和技术思维中的分治、分布式系统等概念是相通的。

所以,虽然我们手握着技术思维的“锤子”,但是不要只用来找技术的“钉子”去敲。

如今,不管是整个社会,还是技术人所运用的那些技术都在变得越来越复杂。

正如人与人之间的分工协作促进了社会的发展一样,技术领域中的模块化、分治等等概念也是推动技术发展的底层支撑。

但是,这也让我们每个人更容易陷入到“只看到树木而忘记了森林”境地。

希望这篇文章可以帮助你摆脱这个困境。

总结

好了,总结一下。

这篇主要讲述了技术人身上很常见一个思维惯性,「技术思维」。

我帮你分析了它产生的原因,以及会导致的后果。

然后分享了对我自己有效的破局办法,其中包含了三个实践小技巧。

  • 目的导向的“三问”

  • “处境联想”的换位思考

  • 「技术 * X = 社会价值」的公式化价值导向

希望对你有所启发。

如果你是一位技术人,并且想让自己的未来在专才之外多一些可能性,那么赶紧行动起来,突破自己的思维惯性吧。

推荐阅读:

原创不易,如果你觉得这篇文章还不错,就「在看」或者「分享」一下吧。鼓励我的创作 :)

640?wx_fmt=jpeg

如果你有关于软件架构、分布式系统、产品、运营的困惑

可以试试点击「阅读原文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RocketMq重试及消息不丢失机制

1、消息重试机制 由于MQ经常处于复杂的分布式系统中,考虑网络波动、服务宕机、程序异常因素,很有可能出现消息发送或者消费失败的问题。因此,消息的重试就是所有MQ中间件必须考虑到的一个关键点。如果没有消息重试,就可能产生消息…

cmake编译opencv3.0

本文参照了 http://www.huqiwen.com/2012/11/27/compile-opencv-243-in-visual-studio-2012/ 安装CMake 从CMake的官方网站下载最新版的CMake。http://www.cmake.org/cmake/resources/software.html,选择Windows (Win32 Installer)平台的进行下载。 安装时请勾选…

【 .NET Core 3.0 】框架之五 || JWT权限验证

前言关于JWT一共三篇 姊妹篇,内容分别从简单到复杂,一定要多看多想:一、Swagger的使用 3.3 JWT权限验证【修改】二、解决JWT权限验证过期问题三、JWT完美实现权限与接口的动态分配这里一共三个文章,目前是第一篇,剩下两…

OpenCV Stitching 工程搭建

转自http://www.tuicool.com/articles/fMbUfaF Opencv中提供Stitcher类,实现了多图像自动拼接,Opencv是开源的,程序实现的源代码都在Opencv安装文件中,以及Opencv提供的函数查询手册和Opencv教程都可以在…

asp.net core 3.0 更新简记

asp.net core 3.0 更新简记Intro最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0,记录一下,升级踩过的坑以及经验总结,包括但不限于TargetFramework ( netcoreapp2.2 需要更新为 netcoreapp3.0)DependencyHost/Environme…

kafka吞吐量高的原因

kafa 吞吐量高的原因 1、顺序读写 kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能 顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写 2、零拷贝 在Linux kernel2.2 之…

【 .NET Core 3.0 】框架之三 || swagger的使用

一、为什么使用Swagger上文中已经说到,单纯的项目接口在前后端开发人员使用是特别不舒服的,那所有要推荐一个,既方便又美观的接口文档说明框架,当当当,就是Swagger,随着互联网技术的发展,现在的…

MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)

1、kafka主从同步与高可用 https://1028826685.iteye.com/blog/2354570 http://developer.51cto.com/art/201808/581538.htm 2、MQ有可能发生重复消费,如何避免,如何做到幂等 2.1 MQ消息发送 1、发送端MQ-client(消息生产者:Producer)将消…

微软编程题:寻找最小的k个值

转载自:http://blog.csdn.net/v_JULY_v/article/details/6370650 寻找最小的k个数 题目描述:5.查找最小的k个元素 题目:输入n个整数,输出其中最小的k个。 例如输入1,2,3,4,5&#xf…

Bumblebee微服务网关之访问日志处理

记录访问日志可以起到非常重要的作用,它不仅记录了API的使用情况,更可以反映API各种相关数据;通过分析日志可以得到API不同时间的负载情况,访问效率和流量分布,更进一步还能分析出用户的操作历史和行为这是非常有价值的…

负载均衡基础

1、什么是负载均衡(Load balancing) 在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服…

Bumblebee微服务网关之并发限制

对于服务应用来说支持的并发越高越好,但很多时候资源有限,超负载的并发则会给整体应用带来更大的危险性(更何况有些并发来源是恶意的)。作为微服务网关应该具有一定的挡洪作用,这样可以一定程度保障后台逻辑服务的稳定…

[ASP.NET Core 3框架揭秘] 跨平台开发体验: Mac OS

除了微软自家的Windows平台, .NET Core针对Mac OS以及各种Linux Distribution(RHEL、Ubuntu、Debian、Fedora、CentOS和SUSE等)都提供了很好的支持。我们先来体验一下使用Mac来开发.NET Core应用,在这之前我们照例先得在Mac OS上构…

接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示…

使用RabbitMQ实现接口补偿

业务背景在我们的日常开发中,经常需要调用第三方接口来进行数据传递,在调用接口的过程中,会因为各种原因导致调用的失败。这时我们希望能有一种机制实现对失败的接口的重复调用,并且能够实现人工干预。实现思路1、当接口调用失败&…

集群环境下,你不得不注意的ASP.NET Core Data Protection 机制

引言最近线上环境遇到一个问题,就是ASP.NET Core Web应用在单个容器使用正常,扩展多个容器无法访问的问题。查看容器日志,发现以下异常:System.Security.Cryptography.CryptographicException: The key {efbb9f35-3a49-4f7f-af19-…

.NET斗鱼直播弹幕客户端(上)

前言现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎。斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆。看到有不少主播接入 弹幕语音播报器、 弹幕点歌等模块,这都需要首先连接斗鱼弹幕。…

程序员后期,架构师发展路线!

作者:zollty,资深程序员和架构师,私底下是个爱折腾的技术极客,架构师社区合伙人!我总结了3个阶段。先说一下各个阶段的感受:1、系统架构阶段:系统架构实际上包括了 业务功能架构 和 技术功能架构。业务上&a…

YUV格式学习

转载自http://blog.csdn.net/searchsun/article/details/2443867 YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它…

Flappy Bird游戏python完整源码

通过pygame实现当年风靡一时的flappy bird小游戏。 当前只设定了同样长度的管道,图片和声音文件自行导入。 效果如下: # -*- coding:utf-8 -*- """ 通过pygame实现曾风靡一时的flappybird游戏。 小鸟x坐标不变,画布左移实现…