3 个技巧,让你像技术专家一样解决编码问题

news/2024/11/23 4:39:51/

「我应该如何提高解决问题的能力?尽管我掌握了 JavaScript,却无法解决实际问题或理解复杂的 JavaScript 代码。」

经常有年轻的开发者朋友问我类似的问题。对开发者来说,解决问题非常重要。编写优秀的代码是一门创造性的艺术,而要成为出色的开发者,就必须成为富有创造力的能够解决问题的人。

我发现新手程序员犯的最大的错误是专注于学习语法,而不是学习如何解决问题。—— V. Anton Spraul

尽管我观察到,解决问题的技能需要时间和经验的积累,但我坚信掌握它并不需要很多年;只要勇敢地直面问题,就会有所提高。我曾与许多初级开发人员一起工作,年轻人们也比他们的老伙计更善于解决问题。

本文将详细讲解三个技巧,让开发者可以像技术专家一样解决问题。重头戏开始之前,我们先来看看技术专家和技术小白在解决问题方面有哪些不同。

01 专家思维 vs 新手思维

大多数人会回避或胡乱处理问题。优秀的思考者和领导者则会主动寻找问题,他们也拥有能够更好地解决问题的方法。—— Michael Simmons

Robert J. Sternberg 教授根据美国心理学家 Herbert A. Simon、Robert Glaser 和 Micheline Chi 等人的研究,揭示了技术专家解决问题比技术小白更有效的秘密。

Arnaud Chevallier 在 Work forward in solving problems, not backward 一文中犀利写道,「逆向工作法是一种从假设出发的方法。如果想要提高利润率,逆向工作法会指引你去寻找增加收入的办法,因为增加收入可以带来更高的利润率。那减少成本呢?难道在确定最终的解决方案之前,我们不应该先全面地了解各种可以实现目标的办法吗?」

可以看到,技术专家通常会花大量的时间寻找、明确和定义问题,并且使用正向工作法解决问题,同时密切关注问题解决的过程。下面就跟大家分享,技术专家们常用的问题解决技巧。

02 三个专家级的问题解决技巧

1. 问题十二连 The 12 What Elses

提问题听上去没什么难度,但要找到正确的、缺失的问题并准确地描述出来却不容易。Lenedra J. Carroll 介绍的「问题十二连 The 12 What Elses」可以有效帮助我们摆脱这个苦恼。

在头脑风暴时,先提出一个问题,并生成 12 个答案;然后选取其中一个答案转化为下一个问题,再生成 12 个答案。不断重复此过程,直到获得一个明确的解决方案。

通过连续地提问,我们会得到一个「问题回答地图」,它对假设的测试和结构化解决复杂问题很有帮助。

使用「问题回答地图」测试假设

提问和追问是如何将我们往正确方向上引导的?下面两个例子可能会给你答案。

2. 根本原因分析法 Root Cause Analysis

我们经常在多次解决失败后,才发现问题的情况跟预期有所不同,所以在开始解决问题之前,就要先了解其根本原因是什么。

只有消除错误的选择,才能更好地定义问题并找到有效的解决方案。根本原因分析法有助于避免在错误的方向上浪费时间和精力。

根本原因分析的几种方法

根本原因分析法的示例

当需要修复 Bug 时,开发者可以使用以下任意方式,进行根本原因分析:

  • 确定问题在哪个环境出现,并尝试在相同和不同的环境中重现它,以掌握更好的理解。
  • 如果与 Web 性能有关,可以分析捆绑文件。
  • 进行单元测试和集成测试。
  • 进行日志文件分析。
  • 进行交互式调试。

3. 使用多元思维 Spectrum Thinking

二元思维认为事情的状态是非黑即白的,只有互相对立的两种可能。有些时候它是正确的,但其他时候,它可能是一种错误的简化。

二元思维

与二元思维对应的是多元思维,也可以称作频谱思维(Spectrum Thinking)。它会考虑更多选择、更多替代方案和可能性,比如「两者共存」「介于两者之间」「其他的可能性」或「二者皆否」等。

频谱思维

通过培养多元思维,开发者可以有效提升创造力;你会惊讶地发现,修复 Bug、解决冲突、设计/执行客户需求的实现方案等居然会有这么多种解决方案和方式。

以展示信息详情为例,二元思维认为,信息详情要么通过弹窗展示,要么跳转到一个带返回箭头的新页面进行展示。

多元思维认为还有其他可能性,比如新增 Tab 页直接查看和更新信息,无需关闭当前列表页面。


多元思维还可能认为,可以提供一个支持三种布局的动态模板,让用户自主选择要用以上哪种方式。

二元思维和多元思维各有利弊,在实际工作中可以配合使用。

写在最后

解决问题能力是一个超出软件开发范畴的话题,它高度取决于我们的心态和态度。要想培养和提高解决(复杂)问题的能力,首先要对问题和挑战充满好奇心,而不是感到沮丧。

就像 Tim Hicks 说的那样,「问题就像赛车道上的弯道。处理得好,便可以在接下来的直道中状态满分;如果过弯太快,很可能会引发侧翻,影响后续赛程。」

(原文作者:Rakia Ben Sassi)


了解更多开发者提效、研发效能管理、前沿技术等消息,欢迎关注 LigaAI@CSDN。

LigaAI 助力开发者扬帆远航,欢迎体验我们的产品,期待与你一路同行!


http://www.ppmy.cn/news/343573.html

相关文章

探索LowLatency的HLS低延迟直播协议

HLS全称为HTTP Live Streaming,其中m3u8作为描述协议,指向一系列切片文件。支持多码流与自适应码率,支持广告无缝播放,支持CMAF协议的低延时直播,也支持CDN动态选择。 我们先看下HLS整体架构,由三部分构成…

如何快速完成TensorRT模型生成和加速

0. 简介 之前作者在《深度学习之从Python到C》介绍了一些比较传统的方法,主要侧重介绍了如何将pth和pytorch传统形式文件转化为onnx的文件,这个部分的内容,也可以主要看一下《PyTorch模型部署:pth转onnx跨框架部署详解代码》这个…

Java之旅(十五)

Java 抽象类 Java抽象类(Abstract Class)是一种特殊的Java类,用于定义一个模板结构和方法集合,为子类提供一个共同的基础。抽象类不能直接实例化,只能用于被继承。抽象类可以包含抽象方法(abstract method…

如何制作电子印章?电脑做印章最简单的方法是什么?

现在随着时代发展,电子印章已经越来越常见了,尤其是在很多贴吧、论坛里面都可以设置签名档,有很多人就把自己的个人印章做成了签名档,非常美观又有趣,那么我们如果也想制作属于自己的电子印章应该怎么办呢?…

透光按键激光打标机,激光打标机

按键”在我们的生活中随处可见,用途广泛。这些键每天都是用手指摩擦的,比如:灯键、电脑键盘键、汽车内饰键等等。因为这些按键上的信息给我们的生活带来了便利,在长期的接触中很容易慢慢模糊甚至脱落。透明按键激光打标机是电子行…

skycut刻字机软件控制选择

**skycut摄像头定位刻字机软件问题**在不干胶印刷行业客户经常使用的skycut刻字机,采用摄像头定位技术,但是客户在使用过程中总是遇到机器配套软件不能正常使用问题,导致摄像头定位标签模切机不能正常工作。在实际操作中,skycut刻…

Maker工作室_激光雕刻机使用方法

Maker工作室_激光雕刻机使用方法 1、首先检查设备相应的物品是否整齐完好 记得戴上护目镜(PS:不戴护目镜看了很长时间的我现在有点后悔…) 2、插上激光发射器的电源,进行激光的焦距调整,使其调整到最佳状态 正常情…

小型数控雕刻机制作Arduino_基于Arduino DIY的激光雕刻机

很多人都梦想有一部专属的激光雕刻机,无论是给自己的作品制作实物,还是给木牌刻字、制作印章,都充满了Maker的DIY乐趣,今天出场的是以Arduino为控制核心所DIY的一部小型激光雕刻机。 使用材料: Arduino UNO R3作为控制…