程序员如何高效提问?
不会提问就很难通过问问题解决问题,失败的提问无论对于你还是对于看问题的人来说是严重的身心伤害。
我不常问问题,但我是身经百战了,见的低质量问题太多了,今天我感觉很有必要传授一点提问的经验。
先来看看常见的低效做法
这里复现一下通常情况下,大家提问前的场景
想做一件事
设计一套方案(或者不设计方案,先尝试想一些看起来有用的事)
按方案(直觉)开始实际去做
做到某一步的时候被一个问题卡住了
自己想办法尝试解决
发现自己解决不了,就找人问
在这之后,很多人提问时,我往往能够发现这样一些问题
信息不全(只给出自认为有问题的地方,不给出完整信息)
目的不明确(声称目的是想做一件事,其实是想通过这件事达到其他真正的目的)
沉迷于细节(自己解决问题的过程中钻牛角尖,拘泥于不重要的细节,导致不反复提问就无法解决问题,浪费时间)
提供不完整或不实信息(为了面子,或者出于对对方的不完全信任,隐藏或编造某些信息,导致问题解决不了)
一个典型的反面例子:
[还未学会正确提问的楼主]:
萧大 你有web服务器 方面的资料么 想用Python 构建一个 web服务器
[萧井陌]:
打开百度 输入 python web 服务器
做个预研再来问人吧.......
不要把别人当搜索引擎
[还未学会正确提问的楼主]:
我知道 搜索过
不会犯 这种低级错误 都老司机了 我想让你推荐个 比较系统的web服务器 理论上的 书籍之类的
[萧井陌]:
你意思是你想造一个web服务器?
那为啥不能直接问呢?
[还未学会正确提问的楼主]:
是的 想造一个简单的 web服务器 轮子
[萧井陌]:
你就搜 用python写web服务器或者直接看flask初版源码
[还未学会正确提问的楼主]:
搜了 找到一个老外的 伯乐网翻译的 正在看
[萧井陌]:
那你还有什么问题呢?
[还未学会正确提问的楼主]:
想问你 有木有更系统一点的
[萧井陌]:
没有
这个世界上最系统的东西就是教育部的大纲、教材和配套习题
因为政府收税 并且有责任心
如果你能把你的话一次性描述清楚 还需要这么麻烦地浪费双方的时间吗?
「我想自己用python造一个web服务器的轮子,通过搜索我找到了一个外国教程的中文翻译版,我想问一下是否有更系统的资料?」
你如果这样问 不就可以一次性解决你的问题了 你开心别人也开心
这样的话我就可以直接回你 没有
而不用诱导性地问出所有的前置条件
不要觉得我是在敷衍打压你 这是很重要的技能
如果你能认真思考这段话,将会得到一笔宝贵的财富
接下来看看有效的做法
在一个双赢的提问中,需要注意以下原则
尽量完整的给出问题相关信息,不要遗漏和隐瞒
让自己的眼光回到全局,而不要局限在细节中
不要忘记自己的最初目标,以免解决问题的过程中走偏
具体来说,对于我(或是其他求助对象),作为协助解决问题的一方,这些信息是必须要你来提供的:
1,你最初的目的是什么?(你最终想做一件什么事?)
你的做法可能是错误的,描述需求可以帮助他人发现你南辕北辙的解决方案。
你的需求可能是错的,给出目的可以帮助他人发现你错误的需求。
2,在你的计划中,你打算通过怎样一系列的步骤来达成这个目的?
描述思路有助于他人搞懂你在做的事情、搞懂你遇到的问题
你解决问题的想法和思路可能是错的,描述清楚有助于发现错误
3,你在这个过程中,进行到哪一步的时候遇到了什么问题?尽可能详尽的给出遇到这个问题时的相关信息(包括你在试图解决的过程中得到的信息)
对具体信息的描述可以帮助他人分析具体问题,所以要给出错误的具体、完整的信息,而不是残缺的截图或者零散的几句描述
尽可能的描述你的操作步骤,以便让对方可以重现出你遇到的错误,这样才能针对具体的问题进行进一步的解答
4,给出具体的完整可执行(或可重现问题)的代码(如果有的话)
如果不尽量给出完整、简化、可运行、可重现问题的代码,对方很难定位具体问题,也就无从解决问题了
接下来就尝试用这个工具修正一下上面的错误例子:
你最初的目的是什么?(你最终想做一件什么事?)
想要用python造一个web服务器的轮子
你打算通过怎样一系列的步骤来达成这个目的?
先尽可能找到更好的资料
然后照着资料完成这个项目
你在这个过程中,进行到哪一步的时候遇到了什么问题?尽可能详尽的给出遇到这个问题时的相关信息(包括你在试图解决的过程中得到的信息)
在进行第一步的时候,上网找了一些资料
目前正在看一份翻译的国外材料(给出这份材料)
对这份资料系统性不够满意,想要一份更系统的材料
给出具体的完整可执行(或可重现问题)的代码(如果有的话)
(空)
实际上,这个方法不仅仅只能帮助你向他人求助
经过之前两年对提问表格的推广,收到很多反馈说,在利用这个工具提问的过程中直接就想明白了自己的问题。并不是自己没能力解决问题,而是没能把思路理清楚
这也算是一个意外收获
程序员如何高效提问?相关推荐
- 程序员怎么高效做笔记
目录 前言 25分搞定 Markdown 怎么快速入门Markdown Markdown的进阶玩法 Markdown 管理API或者项目说明文档 巧用EverNote,做网页笔记 用Gist 记录经典 ...
- [读书笔记—程序员]《高效程序员的45个习惯:敏捷开发修炼之道》- 苏帕拉马尼亚姆,亨特
虽然不记得阅读本书用了多久,但是整理本书的读书笔记用了两个小时的时间,因为本书的大部分内容对于笔者来说都是新知识,很难进行归纳总结 本书所讲的是程序员应具有的工作态度和在团队中作为开发者和领导者具备的 ...
- 程序员如何高效的学习?
作为一名程序员,技术的日新月异的发展.行业竞争也是愈演愈烈.你如果想让自己立于不败之地.自学是必不可少的.如何能够高效的自学呢?本篇文章给大家简单梳理一下对应的方法流程,希望能对大家能有一些帮助. 1 ...
- 程序员应该如何提问?
提问是软件开发的一个不可避免的环节,各种思想火花地碰撞往往能产生奇妙的结果,但是作为一名傲娇霸气君临天下人见人爱花见花开炒鸡屌的程序员,你是否真的思考和总结过自己的提问方式呢?如何去问一个让双方都满意 ...
- 程序员如何高效提升学习能力?做到这三点,你就会与众不同
前言 众所周知,现在是一个知识爆炸的时代,知识更新非常快.据测算,一个大学毕业生所学到的知识,在毕业之后2年内,有效的不过剩下5%.对于软件行业而言,这种形势更为明显,我们赖以立足的,不在于我们现在掌 ...
- 【双十一】程序员的高效剁手清单,是你的购物车么
又是一年双11,你的钱包它还好了咩? 过去的11月11日,程序员们的生活并未有何波澜,一如既往地敲敲代码,看看朋友圈里的恩爱,吃吃狗粮.虽然,他们一个个搞着面向"对象"编程,但离& ...
- 职场程序员如何高效自学
程序员是个蛮累的职业,除了有996的工作时长,还需要持续不断的学!学!学!生怕稍微松懈,就赶不上大部队了.人的思维能力,理解能力各异,学习效率也各有不同.智商高,理解能力强的,一点就通,稍差些的需要再 ...
- 程序员的高效工作场所
前言:最近几天,心里颇不宁静,感觉无所适从.每天沉浸在游戏中,我对自己说,只有跌入谷底,才知道往上爬.在写这篇博文的时候,终于能够从游戏中挣脱出来,尝试着去做出一些改变,再次从Jeff的博文中获取进步 ...
- 2020,程序员如何高效提升身价?
福利!廖雪峰最新研磨的实战宝典<如何将大数据开发做到优秀>首次开放了,内容出自开课吧 vip 课程"大数据高级开发实战班",为帮助大家特殊时期职场走得更加顺畅,现决定将 ...
最新文章
- PAT甲级1030 Travel Plan (30分):[C++题解]dijkstra求单源最短路、保存路径
- selecte设置不可用使用disabled属性注意
- 2D空间中基于矢量运算的碰撞后效果as3源码
- 用Java编写约分最简公式,2013年Java方向C组第五题
- ES6规格之数组的空位
- 特斯拉中国向招商银行贷款50亿元 工厂本月开始生产
- itext 7 设置页面大小_indesign页面设置技巧教程【indesign页面大小设置教程】
- 数据库系统工程师5天修炼_程序员逆袭之路,5年IT人生从电脑装机到技术大神,人生不认输...
- 深度强化学习DQN(Deep Q Network)原理及例子:如何解决迷宫问题,附源码
- Linux 下Jetty 部署 项目 JNDI 数据源加载
- python判断用户名是否有效_Python校验用户名是否合法示例
- 新零售场景下数字化营销运营管理方案
- Cisco Packet Tracer中配置链路聚合
- H5链接分享给微信好友,显示标题、描述、缩略图
- HQChart实战教程17 -K线沙盘推演
- Windows Defender
- 《小石潭记》古文鉴赏
- 机器学习项目实战——15Kmeans算法之NBA球队实力聚类分析
- 白色恋人--18首扣人心弦的经典情歌
- 冷静分析:Opteron优势和潜在问题 (也是完全从网上copy的)