作为程序员,遇到问题时你的解决手段是什么?

2021年07月23日 10:35 22 次阅读 来源: 阿杰 作者: 路人甲

这篇文章的想法来源于最近的工作:对Worktile客户端升级重构和解决现有堆积的 bugs,这对于我来说是个难题,因为这是一个几年前的老项目了,功能和逻辑虽然不是很多,但其中存在着一些历史原因,目前负责该项目的同事已经离职,留下的文档和资料屈指可数,可以说代码是唯一文档了;第二,项目是用Electron写的,我自身对 electron 的熟悉程度也只是停留在入门阶段,那么要完成此任务自然花费学习成本。在面对上述问题的过程中遇到很多困难,踩了很多坑,目前项目已经完成,针对上面的困难谈谈在这“无助”的情况下是如何克服和解决的,我把我的过程上升一个层面总结为本文的主题:作为程序员,你遇到问题时会如何去解决?拥有解决问题能力的人,是稀缺的。

渠道/手段

1. Baidu or Google

遇到疑难杂症,百度和谷歌是必不可少的解决手段之一,相信这也是大家最常用最下意识的办法,“面向百度/谷歌编程”,“CV 工程师”,“CRDU”,这些标签可不是白来的,但不要觉得这很低级,百度/谷歌确实是非常高效的解决手段,很多时候谷歌 5 分钟的事,却要在一些技术群里听“大佬”吹逼两小时,只能说google yyds!

2. 官方/社区

当百度和谷歌解决不了的时候,那么我们需要其他手段:找官方、找社区。

2.1 翻阅官方文档

对于翻文档是很多小伙伴不愿做的事情,尤其是遇到非中文的文档更是令人懊恼(庆幸的是 Electron 支持多语言),但官方文档确实是信任度是最高的,效率也还不错,遇到困惑的时候就多翻翻文档,每次仔细阅读总能发现之前忽略了的细节,往往这些细节能帮助你解决问题。

2.2 项目托管平台提issue

主流托管项目的平台有 github、gitee 等,它们都会有一个功能叫 issue,这是专门为开发者提 bug 和提问题设立的。

我升级了 Electron 最新版本后,许多功能不可用了,这必然在项目中是零容忍的,而且这应该属于偏细节的问题了,当时是比较难解决,每个问题都要花上几天时间,很是焦虑,这种场景下,到 github 提 issue 是我少有的办法之一(因为之前谷歌和文档搞的我几乎殚精竭虑了),还好官方比较活跃,而且对问题是一针见血,热情而快捷的帮助我解决了,那段时间我每天上班的第一件事就是要看我的邮箱是否收到了官方的回复。

image.png

image.png

image.png

2.3 官方社区

一些知名的开源技术都会有社区,社区通常都有沟通方式,其中有的活跃有的否,但在无计可施的情况,这也不失为一种途径。

开始常常在 github 提 issue,但由于官方是其他国家的,时区不同,所以我大多数都是第一天提问题,第二天晚上才能收到答案,有时官方忙,抽不出精力的时候,甚至好几天都得不到回复,再遇到周末基本需要等上 4 5 天,这对于我来说实在伤不起啊,但官方似乎了解了我的困境,在一次沟通中给出了另一个渠道:社区。社区页面提供了一些解决问题的方式:1. 加入Discord server 2. Electron fiddle(提供最小 testcase demo 的工具) 3. Stack Overflow,不知不觉又多了一些希望,后来在解决问题的过程中 Discord 成为了非常重要的沟通工具,Discord 中有 Electron 单独的服务器,能够实时的沟通,这大大节约了我解决问题的时间。

image.pngDiscord

image.png

Electron fiddle

image.png问答社区

3.1 Stack Overflow

在等官方回复的过程中我也没有闲着,其中也上一些问答社区提问题,抱着侥幸心理,希望能得到别人的帮助,我找的第一个问答社区就是 stack overflow,因为我很多次在这个平台找到答案,而且技术栈非常的丰富,问答质量很高,回复效率也是同样,首推,除此之外当然还有其他优秀的问答社区和博客平台,就不一一列举了。

3.2 技术论坛

关于技术论坛,最好找最接近问题的技术栈论坛,靠的越近越容易获得答案,而且要活跃,很多社区一个帖子沉寂好久,等别人回答了黄花菜也凉了。

4. 咨询专业人士

如果上述还没有解决问题,那么找周围同事、朋友和技术群等大佬们帮忙也是一种办法,善于利于身边的资源,但需要注意的是:

不要遇到问题就问,一个是不要依赖别人,另一个是老麻烦别人欠的是人情,也不是所有人都毫无保留、乐于帮助解答的。

要注意问人的态度和方式,一定要问的有质量,你仔细考虑过这个问题,不要问一些网上到处的都是,这样有可能会让人感觉到不尊重。

仔细归纳你的问题的描述,让别人能够理解,有时候线上不如先下交流那么方便,所以需要简短准确描述你的问题。

5. 查询书籍

在黔驴技穷的时候,看看书也许真的能帮你解决问题,在选择书方面,尽可能看新出版的书,尤其是技术框架类,它一直在变,版本不一致遇到的问题和答案并不一定适用,总的来说,看书解决问题并不是很推荐,以为比较耗时也不方便,并不是所有公司都允许你上班时间看书,看书作为学习和知识积累还是非常不错的,书比较系统,纸质的东西对吸收的效果也很好。

我在解决 Electron 时也看了相关的书——《Electron 开发实战》,看这本书时,并不完全是为了解决问题,其中百分之 60 是自身兴趣+学习知识,但这本书确实帮助了我很多,有意思的是在书中看到一个新特性,我会忍不住的去项目中找是否用了此特性,如果没有用那是否可以运用此特性做一些事情,这样不知不觉多看了代码,大家都知道硬看代码是很难看下去的,同样的我在看代码的过程中看到了不懂的内容,又去翻书看看书里是否有讲解,没想到不知不觉的把这个项目做了大半。

结语

综合以上的方式,给出一些温馨提示:

学会归纳问题,不知哪位名人说过:问对了问题,就解决了问题的多半(完整的不记得了),很多人同样都在使用搜索引擎却有的找不出答案。

要掌握一些常用英文词汇和拥有一个好的翻译软件,它能够提升你看文档的效率,同时也方便跟老外交流。

给官方提问题要尽可能提供完整的信息,最好有一个可运行且小的 testcase demo。

到一个问答社区提问题要注意规范,Stack Overflow 的代码格式化(第一次提问题的时候,搞了好几个小时)

问人要讲究艺术(具体看文中"咨询专业人士"章节)

~阅读全文-人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。 微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。
还可以输入136 讨论区:
评 论