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

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

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

 

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

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

eg:

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

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

关键字搜索

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

教一个新手编程

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

教一个有经验的程序员:

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

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


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

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

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

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

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

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

文章到此就结束了

 

来自小编的福利

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

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


推荐阅读
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 深入理解Java中的volatile、内存屏障与CPU指令
    本文详细探讨了Java中volatile关键字的作用机制,以及其与内存屏障和CPU指令之间的关系。通过具体示例和专业解析,帮助读者更好地理解多线程编程中的同步问题。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 机器学习中的相似度度量与模型优化
    本文探讨了机器学习中常见的相似度度量方法,包括余弦相似度、欧氏距离和马氏距离,并详细介绍了如何通过选择合适的模型复杂度和正则化来提高模型的泛化能力。此外,文章还涵盖了模型评估的各种方法和指标,以及不同分类器的工作原理和应用场景。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
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社区 版权所有