提问是软件开发的一个不可避免的环节,各类思想火花地碰撞每每能产生奇妙的结果,可是做为一名傲娇霸气君临天下的程序员,你是否真的思考和总结过本身的提问方式呢?如何去问一个让双方都满意的好问题并最大程度的获得回复呢?毕竟人生苦短,谁也不肯意为一个烂问题浪费大把好时光。git
提问以前,请先扣心自问下以下事项:程序员
仔细思考过遇到的问题吗?github
单凭自身的能力已经没法解决了吗?数据库
搜索引擎和社区里有人提过相似的问题吗?浏览器
我有合适的提问人吗?框架
作好了提问前的准备材料吗?编辑器
对于各类凌乱的技术问题,程序员中,女程序员觉得男程序员,什么都会;男程序员中,通常程序员觉得技术好的程序员,什么都会;技术好的程序员,每次都在网上苦苦找答案......工具
提出好的问题是你提高的第一步,提问就跟写程序同样,要有语境,要有上下文,要有条理,要有断点调试,而不是一来就要求被问人必须给出答案,毕竟谁也未曾欠谁的,帮你是热心,不帮你是本分。测试
确认本身没法独立解决,已经作过不少尝试 :遇到问题不要急着问别人,解决问题的独立性必定要培养出来,在时间容许的状况下先看看本身可否应付而非偷懒,一方面能够锻炼分析问题和解决问题的能力,另外一方面,一旦问题解决了,问题就不是问题,而是经验和知识库。若是有条件,请记录下来,能够避免其余人在你的问题上犯一样的错误,知识做为财富是能够被散播和继承的。优化
搜索引擎没有找到满意答案 :如今互联网环境整体来讲已经很是开放了,诸多的技术资料和各种问答网站均可以利用,想碰到一个别人没碰到的问题,已经很是困难了,此外也不存在什么问题是一眼就能够看出答案的(若是有,只能说明这个问题太粗浅或者太常见,更没有咨询求助的必要了),你提出的问题初衷应该是对这些问题的答案并不满意,解决不了当下的问题。另外,不要排斥英文阅读,结合语境语义地阅读其实只要看关键字就好,各类翻译软件也随时可查,要知道你的问题可能早已经被人解决只是并不是用中文来表述,因此请多多使用google和stackoverflow等知识搜索引擎,会有不少意外之喜。
找对要咨询的目标人选 :若是作了努力依然不能解决,或者客观条件不容许你本身解决了,那么首先要选择提问对象,确保他是你所知道的最佳解决人选,而且对你的问题会感兴趣,因此选择通常的建议顺序是:同事 > 社区 > 软件做者(github私信),必定要在解决问题的时长,质量,响应速度上作到均衡,毕竟没有人会时刻准备着为你提供各类无私的服务。
用最干练和扼要的语言来提问 :多用清晰的短句来做为你遇到的问题的发问标题,若是没法总结,那就贴出你的关键代码和报错日志,不要让被问人在梳理你的问题本意上浪费过多时间。
一篇提问的内容如同一篇好的破案报告同样,既要有客观详实的叙述,也要求有尝试方案的记录,这是对问题的起码尊重,若是连你本身对问题的表达的不清晰全面,怎么能期望被问人从中发现更多有价值的思路。
不要先入为主地固守本身的方法:切记不要一上来就强调本身的每一步操做都是对的,为什么结果不对,这种是极其不负责任的作法。想一想既然你都有如此的主见,为什么还须要来咨询他人,另外你肯定这样作不会把提问人带进沟里?子还曰过"三人行,必有我师焉",虚心求教,放低姿态,是对他人与问题的起码尊重。
提供你的运行上下文 :程序的运行都会依赖自身所处的执行环境以及对应的各类配置项参数,这些一般包括有:操做系统、数据库、浏览器、框架等相关软件及其版本号等等,参考下本身公司用来记录bug的报告(如jira,issue list等),一般测试系统在报告一个问题时都会有很是规范的叙述模板,通常包括:出错表现、运行环境、错误日志等多要素,因此尽量地按照这些来要点组织你的提问语言和线索。
问题是否能够重现,怎样重现 :请尽量地详细地复现出错步骤,找出问题复现的通常规律,一般解决问题的关键点其实就是某一段小代码或者某个配置项不对,复现的过程当中会逐步减小出错的范围,这会极大的节省调试时间,同时也能激起各类解决问题的灵感。
描述下以前使用过的解决方式:把你的本身以前用过的方式都简明扼要地记录下,能够是日志、程序中的try catch信息、出错截图等,这个有点相似排除法,一来避免求助人在一样的操做上浪费时间,二来也是对求助人的尊重,说明本身至少是尝试过解决而非直接上来乞讨答案。
善于利用编辑器:有良好的排版能够提升可读性,减小阅读成本,若是条件容许请多用协做调试平台和代码片段分享工具,尽量地让被问人和你接触到的代码环境保持一致(若是是站点发问咨询也能够额附上代码片段和github公有库地址),真实环境下的实时调试会比滔滔不绝地文字描述效果好的多;
实时跟进和完善你的提问内容:一个复杂的问题每每不是一步到位解决,而是经过一个个片段的持续改进与更新来最终完成,因此每当解决一个关键点时,请及时同步你的进度信息,持续优化与集成,而不是把问题甩出去后就与我无关,等着拿成果就行,毕竟做为当事人没人比你须要更对这件事的总体进度负责。
就事论事,不要附加负面情绪:不少时候咱们遇到的问题每每本身也没法避免,好比选用了不熟悉的语言,框架,不成熟的技术选型等,这种状况下每每会有各类槽点和不服想倾述,但请记住这些东西你自行消化或者找个地方写篇长文批判下都行,可是不要带到你的提问内容中,由于这些信息对解决问题没有任何实质性的帮助,同时会带来很多负面的情绪。既然已经跳到坑里了,首先应该想到的是怎么尽快跳出来而且确保之后再也不掉进来,而非一直在抱怨是谁挖的坑。
提问是门学问,请认真对待,在提问的过程当中不断提高概括问题,分析问题的能力,不断提高自我才是最终目的,一个好的提问会跟好的回答一样精彩,同时别忘了给每个帮你解答过的人说声谢谢。