3 个技巧,让你像技术专家一样解决编码问题
「我应该如何提高解决问题的能力?尽管我掌握了 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@oschina。
LigaAI 助力开发者扬帆远航,欢迎体验我们的产品,期待与你一路同行!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
短视频云端批量混剪实操指南
本文为阿里云智能媒体服务 IMS「智能内容创作」实践指南第一期,讲述围绕新媒体广告营销场景,通过“去重策略”全自动批量混剪短视频,助力更高效、更快速地创作优质短视频内容。 欧叔|作者 5G 时代,越来越多的企业把短视频营销从“尝试”演变为“需求”。视频素材更直观、更形象的展现形式,往往能直击用户痛点,带来更好的广告投放效果。 由于各大短视频平台采用了“去重机制”以防视频盗用,内容完全相同的视频会采取“屏蔽”、“限流”处理,这就要求投放于不同账号的视频需要在内容、结构上有所差别。因此,基于有限数量的基础素材,智能化生成指定数量的新视频,是营销短视频创作的常见思路。 本文从实际场景案例入手实践阿里云智能内容创作的“批量混剪”功能,通过提交剪辑需要的数据结构 Timeline 对云端的音视频内容进行二次剪辑生产,将有限个数的素材,通过不同的排列组合、添加不同的转场、特效、字幕、音乐,最终合成出多个不同的成片视频。 01 Timeline 概念说明 如何配置Timeline? 在 iMovie 和 Premiere 等视频编辑软件中,一次剪辑会包含多个轨道以及相应素材的位置、时长等信息,而在阿...
- 下一篇
ZadigX 支持 Nacos 配置自动变更,安全又高效
随着软件系统的复杂性和规模的不断增长,配置管理和变更成为了一个重要的领域,尤其在云原生和微服务架构下,业务配置变更和运行时环境配置变更是常见需求。在环境配置变更方面,通常可以使用原生的 Kubernetes YAML 配置管理实现变更。而在业务配置变更方面,由阿里开源的 Nacos 已逐渐成为市场上主流采用的配置管理工具。 ZadigX 能够和 Nacos 紧密集成,通过自动化和变更管道的方式,实现配置管理的自动化,并确保变更的安全性和一致性。 本文介绍 ZadigX 如何支持 Nacos 配置管理,并提供真实的研发场景示例,全面展示自动化配置变更的过程。 ZadigX 如何支持 Nacos 配置管理 只需要在 ZadigX 中集成 Nacos 配置管理系统,配置工作流任务,即可实现配置的自动化、安全变更。 第一步:集成 Nacos访问 ZadigX 系统设置 > 集成管理 > 配置管理 > 添加 Nacos 配置管理系统。 第二步:配置工作流任务将 Nacos 配置变更任务编排进工作流中即可实现使用 ZadigX 工作流一键自动变更配置。具体操作:编辑工作流 &...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库