第三十二期:如何摆脱「技术思维」的惯性?

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

 

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

先问大家一个问题。

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

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

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

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

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

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

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

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

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

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

  • ……

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

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

没错,的确是这样。

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

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

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

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

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

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

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

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

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

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

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

「技术思维」的短板

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

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

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

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

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

长期以往会陷入的困境

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

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

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

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

如何破局?

有什么破局的办法呢?

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

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

技术思维典型的场景是:

  • 因为……,所以……

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

在形态上,这种思维模式是「直线」的。 沿着这根直线可以去找终点。

但是很明显,在这条直线之外因素都会自然而然地被忽略。

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

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

然后,标出所有的因素与结果之间的「相关性」大小,再根据这多个维度去做how的考虑和决定。

沿着这个思路走 ,你会 自然而然地 基于问题的 现实、基于场景去考虑问题了 ,广度自然就有了。

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

三个破局小技巧

01

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

比如,当自己准备下一个结论之前,多问自己几个下面的问题:

  1. 做这个决定的理由是什么?

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

  3. 不这样决定会怎样?

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

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

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

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

02

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

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

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

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

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

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

03

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

技术 * X = 社会价值

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

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

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

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

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

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

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

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

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

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

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

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

总结

好了,总结一下。

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

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

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

  • 目的导向的“三问”

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

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

希望对你有所启发。

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


阅读目录(置顶)(长期更新计算机领域知识)https://blog.csdn.net/weixin_43392489/article/details/102380691

阅读目录(置顶)(长期更新计算机领域知识)https://blog.csdn.net/weixin_43392489/article/details/102380882

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

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

相关文章

[Leetcode][第207题][JAVA][课程表][拓扑排序][DFS]

【问题描述】[中等] 【解答思路】 1. 拓扑排序 复杂度分析 HashSet[] 数组 import java.util.HashSet; import java.util.LinkedList; import java.util.Queue;public class Solution {public boolean canFinish(int numCourses, int[][] prerequisites) {if (numCourses &l…

codeUp 2031 To fill or not to fill 复杂贪心

2031: To Fill or Not to Fill 时间限制: 1 Sec 内存限制: 32 MB 提交: 599 解决: 132 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find gas stations on the way fro…

RabbitMQ(1) - win+rabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平台上。 1.安装Erlang 所以在安装rabbitMQ之前&…

[周赛][Leetcode][第5457题][JAVA][动态规划][和为奇数的子数组数目]

【问题描述】5457. 和为奇数的子数组数目[中等] 【解答思路】 1. 动态规划 第 1 步&#xff1a;设计状态 dp[i][0] 记录以arr[i]结尾的和为奇数数量 dp[i][1] 记录以arr[i]结尾的和为偶数数量 第 2 步&#xff1a;状态转移方程 for(int i1;i<n;i){if(arr[i]%20){dp[i][0]…

第九期: 阿里巴巴程序员常用的15款开发者工具

阿里巴巴将自身在各类业务场景下的技术积淀&#xff0c;通过开源、云上实现或工具等形式对外开放&#xff0c;本文将精选了一些阿里巴巴的开发者工具&#xff0c;希望能帮助开发者们提高开发效率、更优雅的写代码。 从人工到自动化&#xff0c;从重复到创新&#xff0c;技术演进…

WPF 绑定StaticResource到控件的方法

WPF 绑定StaticResource到控件的方法 原文:WPF 绑定StaticResource到控件的方法资源文件内的属性能否直接通过绑定应用到控件&#xff1f;答案是肯定的。 比如&#xff0c;我们要直接把下面的<SolidColorBrush x:Key"RedBrush" Color"#FFFF0000" />直…

第三十三期:对于人工智能的恐惧及其5个解决方法

实施人工智能技术的IT领导人可能会感到一些恐惧&#xff0c;这有着充分的理由。人工智能在拥有数十年发展和应用历史的同时却有着奇怪的定位&#xff0c;但对于许多人来说&#xff0c;人工智能仍然是一种未来主义的感觉。 实施人工智能技术的IT领导人可能会感到一些恐惧&#x…

[Leetcode][第392题][JAVA][判断子序列][动态规划][双指针]

【问题描述】[简单] 【解答思路】 1. 双指针 时间复杂度&#xff1a;O(NM) 空间复杂度&#xff1a;O(1) class Solution { public:bool isSubsequence(string s, string t) {int n s.length(), m t.length();int i 0, j 0;while (i < n && j < m) {if (s[…

codeUp 2143: 迷瘴 浮点计算|贪心

2143: 迷瘴 时间限制: 1 Sec 内存限制: 32 MB 提交: 666 解决: 201 [提交][状态][讨论版][命题人:外部导入] 题目描述 小明正在玩游戏&#xff0c;他控制的角色正面临着幽谷的考验—— 幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长…

权限分配之权限的展示

最后就是权限的展示了&#xff1a;对前面的 总结&#xff1a;  1. 一级菜单列表&#xff0c;是我对 menu表的&#xff0c;增删改查。  2. 二级菜单列表&#xff0c;是我对Permission表中&#xff0c; 可以作为二级菜单存在&#xff0c;如 客户列表、账单列表的 增删改查  …

优先队列----堆

问题 打印机打印作业一般是放在队列中的。如果按照先来先打印的顺序&#xff0c;有一个100页的打印任务&#xff0c;那么会让后面短小的任务等待很长时间。更合理的做法也许是最后处理最耗时的打印任务&#xff0c;不管它是不是最后提交上来的。 在多用户操作系统中&#xff…

第三十四期:游戏开发中常见的10种编程语言

游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要技术水平。 他们需要具有特定需求的编程语言。 游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作&#xff0c;也需要…

[Leetcode][第5458题][JAVA][字符串的好分割数目][双指针][HashSet]

【问题描述】5458. 字符串的好分割数目[中等] 【解答思路】 1. 双指针 前面的搜索前面的个数和&#xff0c;后面的搜索后面的个数和 时间复杂度&#xff1a;O(N^2) 空间复杂度&#xff1a;O(1) class Solution {/*双指针做法&#xff0c;前面的搜索前面的个数和&#xff0c;…

Spring Aop——给Advice传递参数

给Advice传递参数 Advice除了可以接收JoinPoint&#xff08;非Around Advice&#xff09;或ProceedingJoinPoint&#xff08;Around Advice&#xff09;参数外&#xff0c;还可以直接接收与切入点方法执行有关的对象&#xff0c;比如切入点方法参数、切入点目标对象&#xff08…

第三十五期:AI核心难点之一:情感分析的常见类型与挑战

情感分析或情感人工智能&#xff0c;在商业应用中通常被称为意见挖掘&#xff0c;是自然语言处理(NLP)的一个非常流行的应用。文本处理是该技术最大的分支&#xff0c;但并不是唯一的分支。情绪AI有三种类型及其组合。 情感分析或情感人工智能&#xff0c;在商业应用中通常被称…

AtCoder - 4172 Modulo Summation 贪心

开始想复杂的了 仔细观察样例后发现这个数 其实就是所有的数的LCM-1吗 只有LCM-1 对所有数取模的时候才能对所有数得到MOD = a[i]-1; 那么一个X%Y得到的最大值就是Y-1 于是得到了这个代码 #include<iostream> #include<cstdio> #include<queue> #includ…

[Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]

【问题描述】[简单] 【解答思路】 1. 递归 终止条件/基本情况 root null 递推关系 max(l,r)1 时间复杂度&#xff1a;O(N) 空间复杂度&#xff1a;O(height) class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;} else {int leftHeight ma…

第三十六期:人工智能统计调查:86%的消费者更喜欢人工客服

美国消费者越来越不愿意与聊天机器人聊天&#xff0c;人们对人工智能作为关键业务组成部分的期望越来越高&#xff0c;由于部署这项新技术导致员工技能差距越来越大。 最近一些人工智能的健康和进展状况相关调查、研究、预测和其他定量评估突显出以下几点&#xff1a;美国消费者…

[Leetcode][第111题][JAVA][BFS][二叉树的最小深度][BFS][递归]

【问题描述】[简单] 【解答思路】 1. 递归 自下而上 基本情况/结束条件 &#xff1a; 叶子节点的定义是左孩子和右孩子都为 null 时叫做叶子节点 当 root 节点左右孩子都为空时&#xff0c;返回 1 当 root 节点左右孩子有一个为空时&#xff0c;返回不为空的孩子节点的深度 当…

PAT 1009 说反话

#include<cstdio>#include<cstring>#include<iostream>using namespace std;typedef long long ll;char a[82][82];int cnt;int main(){while(scanf("%s",a[cnt])!EOF){cnt;//***** 由于这里把cnt放到上面的判断中去了导致 最后在判断EOF的时候多判…