作者y2468101216 (芸)
看板Soft_Job
标题[心得] 如何问( google )问题
时间Tue Aug 29 18:08:49 2017
老样子一样放在 gist,这篇是我一直很想写但写不好的。
原文网址:
https://goo.gl/mizaKs
以下正文
# 分析问题
## 前言
如果你有在网路找过如何问问题的话,你应该会找到泛用的回答。
而这边要讨论的是如何对 Google 问问题。
会写这篇是因为我发现很奇妙的有些工程师比我还老,
但却不太用 google,常常问一些 google 就有答案的问题。
## 问问题的技巧
有几个原则 :
1. 用英文
虽然是老生常谈,不过你都用英文写 code 了,资源当然是国外比较多
2. 专有名词
基本上问题会随着你的语言、框架而有微妙的差异。
比如 php & java 就不太一样,虽然都是 programming language
3. 不要用句子
用句子会导致你失去一些答案,因为每个人问问题的语句都不一样。
(Can I take out? Can I take away?)
除非你想要找的就是那种topic的标题。
4. 分解到不能再分解为止
一般而言问题常常是有点笼统的,这时你必须把问题拆成几个单字内
(一般来说我倾向五个单字内)是最好的。
这样可以把问题简化,也可以直捣问题核心。
## 简单例子 : == 跟 === 的 异同之处
首先先转换成英文
1. 等於 为 equal
2. 运算子 为 operator
专有名词这边是 php
然後不能在分解下去了
所以大概要喂 :
```
equal operator php
```
## 复杂例子 : 网站产品页读取缓慢
首先先拆分,一般来说这问题可以先拆成四部分。
1. 前端
2. 系统
3. 後端
4. 资料库
从前端开始看起
1. 使用者使用的是桌面还是行动版
2. 使用者网路稳不稳定
3. 使用者的浏览器版本
4. js 过於肥大
5. 图片是否为第一次读取
6. etc...
好的让我们稍微等等,你应该意识到这个问题过於复杂,问题有很多个,应该要每个都问吗?
## 问问题的成本
我很喜欢钢之链金术师的一个真理:等价交换原则。
任何事情皆有代价,问题只是在於这个代价由谁支付而已。
那要如何评估问问题的成本?这里我们可以从几方面来看
1. 时间方面
有没有听过一句话:什麽都急,就付你钱的时候不急
如果你有时间上的限制的话,你应该选择那些时间成本很低的问题。
一般而言你越熟悉的领域,你问的问题会越精准,矫正时间成本会越低。
2. 金钱方面
有钱不是万能,没钱却万万不能。
所以你公司没钱的话,还是不用问 load balancer 这种东西了
3. 困难程度
即使是你熟悉的领域也有分困难程度的,比如把 mysql 转换成 mssql 远比优化 sql 来得难多了
你应该优先选择那些困难程度低问题。
困难程度有时不是只考虑技术方面,人的部分也要考虑。
## 最後的抉择 - 经验法则
往往在估算完这些以後,还会剩下几个选项,从哪个开始问才是最好的?
答案是有规则的猜他,而这个就依赖你以前的经验了。
如果你有空可以多看看 reddit 、 hack news 之类的,看国外是怎麽问问题的。
看书也有助你有规则的猜测,对於问题发生的环境了不了解也很重要。
## 回到复杂例子
首先假设这个问题是你家的 PM 丢给你的话,则环境在台湾,由於台湾盛行吃到饱跟一年换一次手机,可以先排除纯行动端问题。
如果是网路不稳的话则无解,所以这个问题也可以排除。
系统硬体部分公司有钱的话可以考虑,排在顺位低的列表。
系统软体的话考虑困难程度,排在顺位低的列表。
後端部分,因为更换後端语言各方面成本太高,所以列在顺位低。
优化语法成本比较低,排在顺位高。
资料库部分,笔数高低直接影响效能,且语法查询也影响效能,排在顺位高。
图片往往也直接影响速度快慢,排在顺位高。
所以我们可以直接得到一个顺位:
1. 图片快取
2. 後端语法优化
3. sql 语法优化
然後就依照你对架构的了解开始猜测哪个问题是正确的。
## 总结
依台湾的情形而言,大概有90%的问题可以在网路上找到一样的,
所以问题在於你要怎样去找到这些已经问过的问题,
以及在於你要花多少时间成本下去找。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.160.54.124
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1504001333.A.124.html
1F:推 Boston: ok google 08/29 18:33
2F:推 cryinglove: 赞~google 08/29 18:59
3F:推 del680202: hey google 08/29 19:01
4F:推 kaitokid1214: 感谢分享心得~一直无法像前辈们快速的google到想要 08/29 21:08
5F:→ kaitokid1214: 的解答而很烦恼 08/29 21:08
6F:推 Csongs: how google 08/29 21:51
7F:推 mdkn35: 推推 08/29 22:23
8F:推 IhateOGC: how to key world in google search bar 08/29 22:32
9F:推 dick8101070: 老实说这能力应该大学就要培养好了(不论文理组) 08/30 00:04
10F:→ dick8101070: 因为下关键字查资料弄报告应该是基本吧.. 08/30 00:04
11F:推 SimonAllen: 推 但也同意楼上 大学还不会google英文重点关键字 08/30 00:19
12F:→ SimonAllen: 大概就是分组报告不负责做 只负责上台讲 08/30 00:19
13F:→ SimonAllen: 结果出社会工作後..哇赛不会google的人还超多 08/30 00:19
14F:推 buper: 用英文找真的比较多 08/30 07:38
15F:推 hsnuonly: 有的时候用句子会有意想不到的结果 08/30 08:50
16F:推 rx1304: 谢谢分享 08/30 10:21
17F:推 gnihtontsuj: 推 XD 08/30 12:11
18F:推 fishlinghu: 大学就用的滚瓜烂熟了XD 08/30 12:22
19F:→ pttworld: 谷歌的训练是透过组合关键字,让答案网站出现在第一位。 08/30 12:55
20F:推 johnny94: 其实现在用一些短句子也可以找到很好的结果 08/30 13:06
21F:推 LikeCherry: 如果要找中国那边的技术资料 几乎都被内容农场淹没 08/30 13:29
22F:→ LikeCherry: 是不是用百度比较好? 还是有什麽过滤方式? 08/30 13:29
google 知乎 用中文,大概就这三个。
如果是自行开发 open source 的 github 上面也会有,没 open source 的
就要自行想办法,我见过问这个问题的人多半都是 android 工程师,因为 中国 android
独步全球(?
※ 编辑: y2468101216 (118.160.49.253), 08/30/2017 13:48:49
23F:推 tennyleaz: stackoverflow发了不少问题,但是也有被Downvote的,超 08/30 15:06
24F:→ tennyleaz: 丢脸XD 08/30 15:06
25F:→ qrtt1: 根本在於该看的书没看过,以致於不知道用什麽 term 吧。 08/30 15:38
26F:→ s860134: 以前引擎空格会视为 and ,用句子根本没意义 08/30 19:46
27F:推 jj0321: 结论: 英文要会 原文书要看得多 08/30 19:54
28F:推 LikeCherry: 感谢回答 您内行! 後来在知乎上看到相关的问题 知道 08/30 22:55
29F:→ LikeCherry: 要用哪些关键字 08/30 22:55
30F:推 Sunal: 教学文件或是书至少也要看过 才知道关键字是什麽 08/31 23:57
31F:推 CP64: 推 很重要 虽然我关键字都翻文件的时候沾一点沾一点积起来的 09/01 11:50
32F:推 jason710068: 有时候关键字都不知道该怎麽下的时候再试试打句子也 09/02 19:29
33F:→ jason710068: 可以 09/02 19:29