1 分钟搞懂什么是 XY 问题

简介: 1 分钟搞懂什么是 XY 问题

XY Problem 会阻碍沟通,对解决真正的问题造成困扰,那什么是 XY Problem?原文: The XY Problem

什么是 XY 问题?

XY 问题是关于正在尝试的解决方案,而不是实际的问题。无论是对于寻求帮助的一方,还是提供帮助的一方,这都会造成大量时间、精力的浪费。


  • 用户想做 X。
  • 用户不知道怎么做 X,但觉得如果能做到 Y,就能摸索出解决方案。
  • 用户也不知道怎么做 Y。
  • 用户请求对问题 Y 的帮助。
  • 其他人试图帮助用户解决 Y,但却感到困惑,因为尝试解决 Y 似乎是个奇怪的问题。
  • 经过大量互动和浪费的时间后,终于发现用户其实需要 X 方面的帮助,而 Y 甚至不是对 X 的合适解决方案。


当人们被自认为的解决方案卡住,无法退一步完整解释问题时,问题就出现了。

怎么办?

  1. 在提供任何尝试过的解决方案时,请始终包含更广泛图景的信息。
  2. 如果有人询问更多信息,一定要提供细节。
  3. 如果已经排除了其他解决方案,分享为什么排除,这会提供更多关于需求的信息。


记住,如果你的诊断理论是准确的,就不会寻求帮助了,对吧?

示例

示例 1

n00b 实际上不想要文件名中的最后 3 个字符,而是想要获取文件扩展名,为什么要问最后 3 个字符?


<n00b> How can I echo the last three characters in a filename?
<feline> If they're in a variable: echo ${foo: -3}
<feline> Why 3 characters? What do you REALLY want?
<feline> Do you want the extension?
<n00b> Yes.
<feline> There's no guarantee that every filename will have a three-letter extension,
<feline> so blindly grabbing three characters does not solve the problem.
<feline> echo ${foo##*.}

复制代码

示例 2

如果 Angela 一开始就解释她想防止别人发现她的操作系统,可能讨论会更短、更有成效。


Angela: 'nmap -O -A 127.0.0.1' returns some lines starting with 'OS:'. How to change it?
Obama: Look in the sourcecode for nmap, find how it figures out the Linux part, then rewrite your TCP/IP stack to not operate in a way nmap can detect.
Angela: Yeah, but I don't know about linux system api at all.
Obama: Well, nmap's fingerprint is based on the way the TCP/IP stack works, there's no real way except to rewrite the appropriate parts of said stack.
Angela: I really need to avoid these messages. Can iptables do this work?
Obama: Well, don't use OS detection or version scanning
Angela: I want to prevent others from knowing the type of my OS

复制代码




你好,我是俞凡,在 Motorola 做过研发,现在在 Mavenir 做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI 等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。为了方便大家以后能第一时间看到文章,请朋友们关注公众号"DeepNoMind",并设个星标吧,如果能一键三连(转发、点赞、在看),则能给我带来更多的支持和动力,激励我持续写下去,和大家共同成长进步!

目录
相关文章
|
机器学习/深度学习 大数据 关系型数据库
|
Rust 程序员 数据安全/隐私保护
GitHub 上标星 13.4K 的远程软件!太强大了
GitHub 上标星 13.4K 的远程软件!太强大了
3901 0
GitHub 上标星 13.4K 的远程软件!太强大了
|
负载均衡 Dubbo 应用服务中间件
Docker Overlay网络的一些总结
在早期的docker版本中,是不支持跨主机通信网络驱动的,也就是说如果容器部署在不同的节点上面,只能通过暴露端口到宿主机上,再通过宿主机之间进行通信。随着docker swarm集群的推广,docker也有了自家的跨主机通信网络驱动,名叫overlay,overlay网络模型是swarm集群容器间通信的载体,将服务加入到同一个网段上的Overlay网络上,服务与服务之间就能够通信。
1048 0
Docker Overlay网络的一些总结
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
255385 0
|
Kubernetes 应用服务中间件 nginx
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)(上)
史上最全干货!Kubernetes 原理+实战总结(全文6万字,90张图,100个知识点)
51539 30
|
JavaScript 前端开发 API
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
本文介绍了如何在Vue 3项目中使用v-md-editor组件库来创建markdown编辑器和预览组件。文章提供了安装步骤、如何在main.js中进行全局配置、以及如何在页面中使用VMdEditor和VMdPreview组件的示例代码。此外,还提供了一个完整示例的链接,包括编辑器和预览组件的使用效果和代码。
vue3 v-md-editor markdown编辑器(VMdEditor)和预览组件(VMdPreview )的使用
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。
|
SQL 存储 关系型数据库
复盘女朋友面试4个月的Mysql面试题(1万字)
该文章详细分析了Ribbon的超时配置是否会覆盖OpenFeign的超时配置,并探讨了OpenFeign超时配置能否动态实时修改生效的问题。
复盘女朋友面试4个月的Mysql面试题(1万字)
|
SQL 存储 JSON
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
AlaSQL.js:用SQL解锁JavaScript数据操作的魔法
263 1
|
XML Java 程序员
保姆级教程,手把手教你实现SpringBoot自定义starter
保姆级教程,手把手教你实现SpringBoot自定义starter
13023 2
保姆级教程,手把手教你实现SpringBoot自定义starter