打破思维定势,跳出问题漩涡

2024-03-19 00:32

本文主要是介绍打破思维定势,跳出问题漩涡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    思维定势(Thinking Set) 是由先前的活动而造成的一种对活动的特殊的心理准备状态,或活动的倾向性。在环境不变的条件下,定势使人能够应用已掌握的方法迅速解决问题。而在情境发生变化时,它则会妨碍人采用新的方法。消极的思维定势是束缚创造性思维的枷锁。

    上面的描述太专业化,通俗地讲,思维定势其实是根据个人或团队先前的知识积累去解决现实问题的方法或者思路。通常而言,思维定势能解决我们遇到的绝大部分问题,只有少部分问题,在思维定势的框架下,只会将问题越变越复杂而不能最终解决问题。

    就拿软件设计来说,瀑布模型是一种条理清晰、层次明确的设计方法,在需求明确、人力资源、时间和成本允许的情况下,无疑会是大家首选的;但当环境变了,比方说需求不清晰、或者特别强调工期的项目,就不再适用瀑布模型,此时专家们突破思维定势,创造出来螺旋模型、快速原型模型、增量模型等设计方法。

    单位的一位领导曾跟我说过,不要把自己当成一位码农、一个只知道砌砖的民工,要把自己当成设计师、当成既画蓝图又砌砖的建造师。想必很多人听到了都觉得这是个理想。初听到这句话,我也是这么想的,自己就是一个苦逼码农,就是用十指创造生活的人,哪谈得上什么设计师?且慢,静下心来,我们不妨细看看开发过程。

    软件的设计工作总是从《用户需求说明书》开始的,根据这个我们去编写SRS。编写SRS的过程,是对用户需求理解的过程、是用软件语言翻译需求的过程。这个过程就用到了工程师的积累,老资历的工程师通常很快就能完成这个过程,并且能做到理解准确,贴近用户初衷。

    完成了SRS,我们开始执行总体设计、概要设计、详细设计这些过程。到了详细设计阶段,就比较接近最终的代码了。我们就说说这个详细设计阶段,如果说前几个阶段都是在描述问题,那么这个阶段就是要充分考虑如何去解决问题了。

    需求中棘手的问题,都要找到解决方法。这个过程中,思维定势能帮助我们解决99%以上的问题。个别问题,利用积累,我们想到多种解决方案,但这些解决方案虽能解决问题,但要么受制于其它条件,要么成本巨大,都不能成为我们的首选方案。在这里,开发过程陷入了僵持阶段。项目经理也不敢轻易从备选方案中选择最终解决方案,只要上报更高一级别的领导——技术总监。

    技术总监拿到这个问题和配套的多个解决方案,也深表赞同,正要痛下决心采取提高成本来解决问题的方案时,突然说了一句,“跟用户沟通下,让用户修改下需求不行吗?”对啊,这个需求其实也存在不合理的地方,如果用户同意修改一下,那么我们的解决办法就比较简单,并能保证工期,并且不用增加成本了。

    项目经理在总监的一句话提醒下,顿悟。

    其实,刚刚技术总监就是做到了突破思维定势,提出的一种解决办法。

    为什么大部分人都不能突破思维定势呢?按照我的理解,就是因为“当局者迷”。遇到这种事情的时候,不妨跳出来,以一种局外人的视角重新审视这个问题,或许就有意外收获呢。

    也许下一次你突破了思维定势,提出了新的解决方案,大家会拍着大腿说,“对啊,就应该这么办,我怎么没想到呢”,往往这就是成功的突破。

    以上为本人开发过程中的一点拙见。

这篇关于打破思维定势,跳出问题漩涡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/824212

相关文章

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python Jupyter Notebook导包报错问题及解决

《PythonJupyterNotebook导包报错问题及解决》在conda环境中安装包后,JupyterNotebook导入时出现ImportError,可能是由于包版本不对应或版本太高,解决方... 目录问题解决方法重新安装Jupyter NoteBook 更改Kernel总结问题在conda上安装了

pip install jupyterlab失败的原因问题及探索

《pipinstalljupyterlab失败的原因问题及探索》在学习Yolo模型时,尝试安装JupyterLab但遇到错误,错误提示缺少Rust和Cargo编译环境,因为pywinpty包需要它... 目录背景问题解决方案总结背景最近在学习Yolo模型,然后其中要下载jupyter(有点LSVmu像一个

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

如何解决Pycharm编辑内容时有光标的问题

《如何解决Pycharm编辑内容时有光标的问题》文章介绍了如何在PyCharm中配置VimEmulator插件,包括检查插件是否已安装、下载插件以及安装IdeaVim插件的步骤... 目录Pycharm编辑内容时有光标1.如果Vim Emulator前面有对勾2.www.chinasem.cn如果tools工

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Java多线程父线程向子线程传值问题及解决

《Java多线程父线程向子线程传值问题及解决》文章总结了5种解决父子之间数据传递困扰的解决方案,包括ThreadLocal+TaskDecorator、UserUtils、CustomTaskDeco... 目录1 背景2 ThreadLocal+TaskDecorator3 RequestContextH

关于Spring @Bean 相同加载顺序不同结果不同的问题记录

《关于Spring@Bean相同加载顺序不同结果不同的问题记录》本文主要探讨了在Spring5.1.3.RELEASE版本下,当有两个全注解类定义相同类型的Bean时,由于加载顺序不同,最终生成的... 目录问题说明测试输出1测试输出2@Bean注解的BeanDefiChina编程nition加入时机总结问题说明

关于最长递增子序列问题概述

《关于最长递增子序列问题概述》本文详细介绍了最长递增子序列问题的定义及两种优化解法:贪心+二分查找和动态规划+状态压缩,贪心+二分查找时间复杂度为O(nlogn),通过维护一个有序的“尾巴”数组来高效... 一、最长递增子序列问题概述1. 问题定义给定一个整数序列,例如 nums = [10, 9, 2