热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

作为一名优质的程序员如何高效的解决各种bug?

作为一名优质的程序员如何高效的解决各种bug?,Go语言社区,Golang程序员人脉社

 

第一件事情是学会二分查找

第一件事情是学会二分查找。我看过很多刚入门的程序员,要么是自学编程的,没有系统地学过算法,连二分查找都不知道;要么是本科念完,算法都还给老师了,总之就没有这样一种基础意识。看他们定位问题,从第一行代码开始加断点或者是打印上下文信息,我会有一种强烈的冲动:还是让我来吧。

eg:

如果你有一段代码,例如说一个函数,或者多个互相调用的函数,最终结果不是你想要的,你不要从头开始找哪里出错了。你应该找一个中间点,从那里开始二分查找。你在中间点查一个断点,或者是把上下文信息打印出来,以此确定程序执行到中间点时的状态是不是还是符合你预期的。如果符合你预期,问题处在中间点之后;如果已经不符合你预期了,问题出在中间点之前。如此重复,直到你能定位问题出在哪里。

如果你能定位到问题出在哪里了,要么是显而易见的逻辑错误,你自己把写错的逻辑纠正过来就好了;要么是更底层的问题,你觉得你的逻辑是没错的,但底层的运行时、框架、浏览器、操作系统之类的就是不按照你预期的方式进行处理。这时候你只能通过搜索去学习,为什么你依赖的底层没按照你的预期进行处理。你的预期有可能是对的,底层出错了,你要想办法绕过去;你的预期也有可能是错的,因为你没有真正理解你依赖的底层,这时候你要继续学习新知识,调整你对底层的理解,然后修正你的代码逻辑。

关键字搜索

遇到这种问题时,你应该用什么关键字搜索呢?这是个很难教的东西,因为是否能抓准关键字来搜索是非常依赖于眼界和经验的。这种状况我在教新手编程时遇到过,在教非常有经验的程序员上手新公司技术时也遇到过。

教一个新手编程

教一个新手编程:我跟他说,你遇到这个问题,你自己搜索一下。他尝试用他能想象得到的关键字搜索了一番,就是找不到答案。我来一搜,答案就在 StackOverflow 上,或者这个开源项目已经有人提了个 Issue。为什么他搜不到呢?原来某些更复杂的技术概念他还没学到,我直觉能想到用什么关键字,但他根本意识不到那些关键字的存在。

教一个有经验的程序员:

教一个非常有经验的程序员上手新公司的技术:我跟他说,遇到这个问题你搜一下公司内网吧,我们的内部搜索系统非常强大的,Wiki、文档、讨论……什么都能覆盖到。他怎么都搜索不出来,但换我来一下子就搜到了。为什么他搜索不到呢?因为公司内某些系统、术语、代号他还从来都没听说过,而我一下子就能想到,于是我能搜索到。

这种眼界和经验是没办法系统化、一次性地教给一个新人的。就算你尝试一次性地把很多知识传授给一个新人,他也无法全部都记下来。所以最好的学习方法是不断地通过覆盘来学习——我遇到了这样一个问题,我尝试了如下的操作,没有解决好问题,或者解决了但效率很差,那比我厉害的人遇到同样的问题是如何解决的?他们如何使用不同的操作更高效地解决同样的问题?我能从中学到什么?让我重来一次的话我会怎么做?


这时候自然引申出来的一个问题是:去哪里认识这些比自己厉害的人?如何能获得他们的帮助和指导?这有付费和免费两个途径。

付费的话,例如说知乎的付费咨询啦。(知乎的产品和运维,如果我这个答案帮助你们提高业务指标了,记得多收录我其它答案啊!)有不少人都在尝试付费咨询这样一件事情,这个行业在中国还很不成熟,但如果你付得起的话可以试一下。我做一对一的 career coaching,收费是 300 美元一小时(5 美元一分钟的费率),有需要的可以私信联系我。

说完付费的再说一下免费的,这里面最重要的一点是跟比你厉害的人建立关系,让对方意识到你也在为他在乎的领域创造价值。以下是我提供的一个简单的步骤:

  1. 去关注比你厉害的人,看看他平时发布的内容都在说什么,了解他最在乎的领域是什么。
  2. 在他发布的内容下面参与互动,发表你对于他的领域的见解,最重要的是你的见解要能在他已有的内容之外创造新的价值。
  3. 在跟他有持续互动之后,他可能会主动想要认识你,否则的话你也可以主动私信他,提出说你想认识一下他。如果是你主动的话,你最好带上一个有价值的话题,以此展开私信对话。

我可以给你一个非常具体的例子,当年跟我聊上一位大佬,他私信我的第一句话是「鼓起勇气不要脸一波,可以给我这个回答送个专业吗?」我觉得他写的答案质量都不错啊,确实在为刷题的留学生提供了价值,于是我毫不犹豫地帮他的答案点了个专业。

在你跟一个比你厉害的人建立关系后,给点耐心多聊聊,在你有需要是别人往往是愿意帮助你的。

文章到此就结束了

 

来自小编的福利

今天的技术分享就到这里了,给大家推荐一本书  Java并发编程艺术  需要的小伙伴  可以 点我 点我 免费领取 哦,还有一些小编整理的Java核心知识点资料整理分享给到你们哦 !

喜欢小编的文章可以点赞三连哦,还可以白嫖资料呢


推荐阅读
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 全面解析运维监控:白盒与黑盒监控及四大黄金指标
    本文深入探讨了白盒和黑盒监控的概念,以及它们在系统监控中的应用。通过详细分析基础监控和业务监控的不同采集方法,结合四个黄金指标的解读,帮助读者更好地理解和实施有效的监控策略。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文将详细介绍多个流行的 Android 视频处理开源框架,包括 ijkplayer、FFmpeg、Vitamio、ExoPlayer 等。每个框架都有其独特的优势和应用场景,帮助开发者更高效地进行视频处理和播放。 ... [详细]
  • 探讨在PHP开发中,如何选择使用Cookie或数据库来优化网站性能,特别是在处理用户保存的搜索结果时。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • 本文回顾了2017年的转型和2018年的收获,分享了几家知名互联网公司提供的工作机会及面试体验。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有