热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

程序员杀人越货必备良器--排除法

排除法先回答上一篇的问题,上一篇说到,如果自己看不到不顺眼的东西,先反省自己是不是错了。这算不算逻辑思维。我定义的逻辑思维,是认识与验证


排除法


先回答上一篇的问题,上一篇说到,如果自己看不到不顺眼的东西,先反省自己是不是错了。这算不算逻辑思维。我定义的逻辑思维,是认识与验证世界的思维。站在存在即合理的角度,每一件东西的存在,就有其合理性。看不顺眼,只能说明一点,就是有自己没看到的东西。所以,看不顺眼之前,第一个要做的事情,不是谴责别人,而是反省自身。使用该逻辑思维,以我自己的经验,每次不顺心之后的反省,我的知识量是增加的。谴责别人,不会给你带来任何的长进。


今天我要讲一下排除法,排除法是我在解决技术问题时,最常用的办法。

我喜欢让技术团队队员们玩一个游戏—“猜人名”。这个题目有一个出题人,心理想一个名字,这名字必须是每个人都知道的。以是虚拟的,可以是现代的,也可以是古代的,可以是神仙,也可以是妖怪。然后让大家猜,大家用最小的问题,把人名猜出来。出题人只能回答是与不是。在技术团队内,一般我会要求10个问题以内。非技术理工人群玩这游戏,可以放大到15个问题以内。


玩这游戏,你需要对人物进行分类,对活与死分类,性别分类,姓名分类,职业分类,朝代分类等等。

比如如果猜孙悟空,包含的属性是:虚拟的,四大名著里的,名字三个字的,师徒四人里的,一一拆解。最终是把目标名字给揪出来。


以我在技术群体里玩这个游戏的经验,大多名字都可以在10个问题内问题出来。玩这游戏的前提是,你对人物属性的分类是熟悉的。如果不熟,一个个猜名字,人记住的名字,少说也成千上万。不可能一个个去试。


一个个去试的办法,我定义为赌徒。

排除法,不是赌,是几近100%达到目标的办法。


如同碰到技术问题,需要去解决的时候,很多程序员生手,使用的就是赌徒的办法,一个个去试。有甚者,试来试去还在原地打圈(试来试去,就是那几个可能性)。如同无头苍蝇一般。


使用排除法的前提,一定需要对出问题的环节组成有清晰的认识。比如一台电脑不能开机。有可能是电脑问题,有可能内存问题,有可能主板问题,有可能插线板问题。而不是脑子里,只有一个词:电脑坏了。我们可能通过,换插线板,把内存拔除,再拿一台电脑来,逐一零件替换... 最后一定可以定位出问题出在哪里。


虽然,更小的细节,比如主板坏了,具体哪个集成电路坏了,或者哪个电容坏了,没办法查,但从大件上来说,你已经定位出来了。你脑子里是有排除法的概念的。如果对电脑的细节不了解,就没有办法对更细一层级使用排除法。但对于电脑维护从业人员来说,他们是要使用排除法的。


回想这么多年的技术生涯,我用得最多的还就是排除法。但排除法的前提就是,你需要对解决问题的对象的原理,要了解清楚。当然了,细度也是无限的,每个人对自己的需要,或者自己的情况,自己掌握需要了解原理的粒度。比如一般人来说,对电脑的原理,就需要知道,硬盘坏掉,内存坏掉,电源坏掉,大概会有什么样的问题。而不需要深入到电路板原理粒度。


做技术时间长,解决问题的办法其实是没什么增长,增长的是知识量。丰度与细度原理的增加。还有就是经验,经验的作用,其实也就是把问题可能性的点排序。有经验的,可能第一个问题,就能把答案问题出来。


比如我曾经有别人玩猜人名,我看到对方眼睛转了几转,最后眼睛停留在我身上,然后皮笑肉不笑地跟我说,我想好了,你猜吧。我说,你猜的是不是我。然后该位兄弟崩溃了。



推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 35岁程序员连续被2家公司裁掉,网友酸了,成功入职成事业编晒出福利
    这篇文章讲述了一个35岁程序员连续被两家公司裁掉的故事,他在遭遇中年危机后成功入职事业单位,并分享了入职后的福利。文章探讨了程序员在互联网行业中的竞争力下降的原因。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了程序员最美的情人节礼物,即使用JS渲染的3D玫瑰,通过在QQ空间和人人网上分享这个特殊的礼物,可以给情人带来惊喜和喜悦。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了一种处理AJAX操作授权过期的全局方式,以解决Asp.net MVC中Session过期异常的问题。同时还介绍了基于WebImage的图片上传工具类。详细内容请参考链接:https://www.cnblogs.com/starluck/p/8284949.html ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 如何在跨函数中使用内存?
    本文介绍了在跨函数中使用内存的方法,包括使用指针变量、动态分配内存和静态分配内存的区别。通过示例代码说明了如何正确地在不同函数中使用内存,并提醒程序员在使用动态分配内存时要手动释放内存,以防止内存泄漏。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
author-avatar
少爷lianglian_414
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有