又见Bug
文章转载自「开发者圆桌」一个关于开发者入门、进阶、踩坑的微信公众号

作为一名开发者,如何解决遇到的问题、异常或Bug,是开发者必须要面对的,尽管问题很多,情况复杂,但还是有方法和技巧可寻的。
问题无非是易解决和难解决的两种,如何界定它们其实也非常简单,搜索引擎得到结果越多,表明该问题大家都遇到过,基本上按照别人的经验都是可以解决的,对于搜索结果很少的问题,表明遇到类似问题的人不多,经验也非常少,可能无法快速解决问题。
有时不能仅仅依据搜索结果的多寡来判断问题的难易,最根本的还是看能否解决你遇到的问题。如果尝试了几次都没有解决,基本上可以断定这个问题有点难度了。
对于易解决的问题基本上尝试一到二次后就可以解决掉,而对于难解决的问题,该如何解决呢?
对于复杂和难度都非常高的问题,单单依赖搜索引擎给出的结果已经无法满足解决问题的需要了。但是我们可以遵循一套流程来解决这类问题。即「解决问题基本准则:先思考,然后查找资料,最后再求助他人」。
可能大部分开发者遇到问题的第一反应就是去各种搜索引擎搜索,一个一个解决方案的尝试,可能在尝试了几次后,问题得到了最终的解决。我们不妨回头总结一下,其实有些问题非常简单,不需要反复的尝试,甚至在高可用的生产环境下不会给开发者很多尝试的机会。
问题得到解决后,大部分开发者第一感觉应该是这样的:「众里寻他千百度,蓦然回首,那人却在,灯火阑珊处。」
为什么问题解决后都会觉得“哦哦,原来如此。”这样的感叹呢?原因是我们没有遵守上述解决问题的基本准则,导致走了很多的弯路。
独立思考
我遇到许多开发者不做任何的分析,不思考问题发生的原因,就把异常信息贴到搜索引擎里面去搜,最后搞了N次尝试还是没有解决问题。这属于盲目搜索,完全依赖搜索引擎的错误做法。
思考很重要,一方面可以确定问题的根源,另一个方面还可以帮助你使用更加合理和精准的关键字进行搜索,事半而功倍。
当然,有些非常简单的问题,可以直接去搜索,简单的问题或者大家经常遇到的问题可能在尝试一次或者二次后就解决了,对于这样的问题,搜索是可以带来效率的提高的,「对于易解决的问题建议这样做,效率非常高」。
然而,一旦有些问题进行了三次以上的尝试还是没有解决,这个时候就需要思考了,思考问题的根源,调整自己的搜索关键字甚至是思路等。
查找资料
查找资料大家都会,但是怎么去查才能有效率,才能最快解决自己的问题,大部分初中级开发者都会遇到疑惑。其实,查资料是有技巧的。
首先,要分析一下问题的根源,然后去官方文档中查找对应的资料,官方文档是最权威的,一般情况下,基本上能找到你需要的问题解决方法。
国内开发者大多受限于英文语言障碍,很少去查阅英文官方的文档,而是一味地在中文论坛,搜索中进行,错过了很多有用的关键信息。遇到英文官网不要害怕,其实就那几个单词,搞明白了就海阔天空了,实在不行就借助在线翻译功能,基本上机器能翻译一个大概,够用。
其次,使用搜索引擎,关键字很重要,因此还是要思考问题发生的根源,这样才能使用最合适的关键字进行搜索,才能有好的结果,才能进一步快速解决问题。
最后,把官方资料、搜索结果、中文论坛等多种资源集中一起,互相验证和分析,找到解决问题的最终的方案。
对了,版本。很多你遇到的Bug已经在新的版本中解决了,如果条件允许的话,不妨升级一下版本试试,「版本问题可能是大家都踩过的坑」。
求助他人
经过上面2个步骤的探索,如果还是没有能解决问题,说明这个问题可能太难或者遇到的人很少,又或者是开发者自身的知识有限无法找到合适的解决方案。
这个时候就要带着对问题的思考去求助他人,而不是一味地贴出异常信息求助,这样才能有助于问题的解决和自身技术能力的提升。
关于如何求助他人以及注意事项,可以参考我的另一篇文章「如何请教别人问题?」。
无论遇到多么难搞定的Bug或者问题,上述思路都可以发挥它的作用,有时遵循一定的问题解决流程体系或者科学的方法,是可以快速解决问题的。
又见Bug的更多相关文章
- bug管理工具之禅道的测试模块的使用
https://www.cnblogs.com/evablogs/p/6785017.html 角色:产品经理PO,项目经理PM,开发,测试 测试任务: bug: 1.维护bug视图模块:[测试]-[ ...
- 原创科幻短篇《Bug》
这回不是纯科幻,夹了点玄幻. 以下正文: 大一的时候,李双休谈了个女朋友,俩人学校相距不远,周末约一起看电影.那是李双休第一次自己坐公交,坐反了,绕城一周,电影开始后一个小时才到,就赶上看了个片尾彩蛋 ...
- C/C++ 笔试题
/////转自http://blog.csdn.net/suxinpingtao51/article/details/8015147#userconsent# 微软亚洲技术中心的面试题!!! 1.进程 ...
- 总结oninput、onchange与onpropertychange事件的用法和区别,onchange
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...
- C/C++笔试题(很多)
微软亚洲技术中心的面试题!!! .进程和线程的差别. 线程是指进程内的一个执行单元,也是进程内的可调度实体. 与进程的区别: (1)调度:线程作为调度和分配的基本单位,进程作为拥有资源的基本单位 (2 ...
- PHP适合做大型网站吗?
1. 对递归的不良支持 递归是一种函数调用自身的机制.这是一种强大的特性可以把某些复杂的东西变得很简单.有一个使用递归的例子是快速排序(quicksort).不幸的是,PHP并不擅长递归.Zeev,一 ...
- MySQL · 引擎特性 · InnoDB 事务子系统介绍
http://mysql.taobao.org/monthly/2015/12/01/ 前言 在前面几期关于 InnoDB Redo 和 Undo 实现的铺垫后,本节我们从上层的角度来阐述 InnoD ...
- 总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码
总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比 ...
- js监听input等表单输入框的变化事件oninput
js监听input等表单输入框的变化事件oninput,手机页面开发中使用到文本框textarea输入字符监听文本框变化计算还可以输入多少字符,如果使用onkeyup的话是无法监听到输入法输入的文本变 ...
随机推荐
- Java经典案例之“水仙花数”
/** * 描述:打印出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数,其各位数字立方和等于该数本身.例如: * 153=1^3+5^3+3^3等... * 分析:利用for循环控制100-99 ...
- Eclipse 发布网站到linux的tomcat
1. 安装Eclipse tomcat插件 2. 打包程序 需要把程序打成war包,右键工程,如下操作: 3. 上传到linux 3.1 上传到tomcat目录下 tomcat/webapps/XXX ...
- ImageView及其子类(一)
ImageView继承自View组件,它的主要功能是用于显示图片——实际上这个书法不太严谨因为他能显示的不仅是图片,任何Drawable对象都可以使用ImageView来显示.除此之外,ImageVi ...
- jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限
jenkins用户权限配置错误,导致登录时提示:没有Overall/read权限 由于初次接触jenkins,于是在搭建好jenkins以后,想要对用户进行管理,于是乎开始在系统管理->conf ...
- Flex移动皮肤开发(二)
范例文件 mobile-skinning-part2.zip 在这个讨论创建 Flex 移动 skin 的系列的 第 1 部分 中,我讨论了 Flex 团队在 Mobile 主题中所做的性能优化的原理 ...
- Ajax+存储过程真分页实例解析(10W数据毫秒级+项目解析)
周末闲来无事,突然想写个分页的东西玩玩,说走就走 在文章最后我会把整个项目+数据库附上,下载下来直接运行就可以看效果了.整个项目采用的是简单三层模式,开发平开是VS2010+SQL2012 一.我要做 ...
- 理解Node.js(译文)
前言 总括 :这篇文章十分生动形象的的介绍了Node,满足了读者想去了解Node的需求.作者是Node的第一批贡献者之一,德国前端大神.译者觉得作者的比喻很适合初学者理解Node,特此翻译. 译者 : ...
- TFS2010升级至TFS2013完全指南
一.背景: 公司已使用tfs2010很长时间,目前随着公司的发展,项目越来越少,而产品越来越多,采用的开发模式,也逐渐从瀑布式.迭代式转向敏捷开发.为了更好的支持产品研发,决定将tfs ...
- qmake的配置功能(Configuration Features)
Configuration Features qmake can be set up with extra configuration features that are specified in f ...
- 远程推送-----iOS
前言 说一下我了解的推送 正文 APNs--------Apple Push Notification service 1 远程推送的大概流程及其原理 我们的设备联网时(无论是蜂窝联网还是Wi-Fi联 ...