愛提問題是對的,但是……

小美娜娜發表於2019-04-12

警告:本文乃個人主觀情緒極重的文章,不喜勿入。但是本文並非diss任何人任何事,僅僅是希望提問者和回答者能夠更加有效地溝通。提問者肯定是無奈之下才會尋求幫助,但是回答者都有各自的事情,並不可能隨叫隨到給提問者回復,估計也只有Siri才能隨叫隨到,及時回覆。

互相體諒,互相尊重也許是共同進步的關鍵所在!

最近筆者一直在想一個問題,就是該如何問問題?

說句不要臉的大實話,筆者挺自私的,並不喜歡回答問題,原因有三:

  • 有些問題明明可以通過各種搜尋軟體得到問題,偏要找“人肉搜尋引擎”。
  • 秉著負責任的態度,對待答案總要自行檢查一遍,雖然過程中也可有收穫,奈何費時費力。
  • 本身工作挺忙,待學習的佇列已經排到美國了,期間看到問題,真心覺得煩躁。

可以說上述三條理由都是筆者在為自己這種自私的行為開脫,但是要筆者不情不願的回答一些“不是問題”的問題,憋屈啊。將心比心,因為知曉己所不欲勿施於人,所以筆者很少提問。即使提問也要斟酌再三,確認無誤,確保不是“惱人”的問題。那麼,究竟什麼樣的問題是“惱人”的,甚至“不是問題”的問題,什麼問題是“值得回答”的問題呢?

問題黑名單

首先來談談那些“惱人的”問題(若有雷同,純屬巧合):

第一類:百度搜尋

相信大家都遇到過,客氣的人會說這個不復雜,你可以百度一下。,但是脾氣暴躁的人會說,這麼傻X的問題,你不會百度啊。這類語氣著實傷人,為了防止個人的玻璃心受傷,就要避免一些“百度”的問題。

百度問題分以下幾類:

  • 最經典的莫過於api的問題,有關api的用法,百度吧。但是有個隱藏的api問題,就比如筆者想要實現某個功能,但是根本不知道用啥api,這個時候有好心人給了方向之後,就自行百度吧。
  • 0基礎的小白的問題,這一類問題,很難回答,相信很多好心人說著說著恨不得自己拿過來幫人家寫了算了。這個時候筆者推薦提問者先從基礎開始學吧,網上挺多零基礎的教程的。雖說要對自己有所要求,但總不能還沒學會爬就要開始跑了吧。
  • 常見問題,比如CSS中經典的居中問題,佈局問題,自適應問題,相信網上應有盡有。相信大家已經回答地不想再回答了,並不是說鄙視這類問題,而且乏了,真的乏了,估計已經回答了幾十遍同類問題了。

第二類:不知所云

每次遇到別人問,咦,這個怎麼沒出來呀?為什麼報錯了呀?。這個時候筆者就想裝死,畢竟本人不住在瀏覽器,報錯和不出現的問題,就算當面除錯也不一定能夠立馬出答案。而且考慮到面子問題,萬一出不來會不會顯得筆者很渣?

不知所云分為:

  • 截圖或者一句話,沒有詳細說明,沒有操作說明,沒有想要的結果說明。比如為什麼ajax獲取不到資料,這一類好心人會一步步引匯出真正的問題,像筆者這樣的就直接無視了,甚至會diss,“誰XXX知道你想問什麼”(乖寶寶們不要學習)。
  • 直接丟出一個報錯,報錯的原因千千萬種,不瞭解對方專案的該如何,這個時候又要回到第一類問題了,完全可以百度以下錯誤的成因,然後根據自己的專案分析。此類問題非經驗豐富的,基本get不到提問的點。

第三類:道德綁架

線上等,急

此類問題一律不答。至於原因,感覺筆者不幫助找到正確答案,彷彿就是個大壞蛋,甚至自我懷疑。

第四類:要你何用

這一類算是筆者的親身經歷吧,可能脾氣太好了。在大學的時候,一個小學弟來問筆者資料庫的問題。且不說筆者當時並不熟悉,現在筆者也是個渣渣。小學弟問了很多問題,筆者都沒答上來,最後他來了一句要你何用。真棒,學姐沒用!題外話,說者無心聽者有心,這對筆者當時的幼小心靈造成了極大的傷害,還好筆者沒心沒肺,沒多久就恢復了。

對於問問題,且不說虛心討教,還要充大佬的,不尊重人的,門在那邊,出門左拐不送,不伺候。

問問題是門藝術

這裡筆者想要借用StackOverflow的一些規範,來總結下如何問出討喜的問題。

先給出一個錯誤示範:

大佬,我碰到了XXX問題,不知所措。(謝謝,大佬比你更不知所措~)
複製程式碼

搜尋搜尋再搜尋!

問問題之前,請再三地搜尋,即使找不到有用的資訊,也可以對比你的問題和其他人的不同,同時總結出一些結果,即使現在無用,以後也許用得上,這也是一種學習過程。

詳細說明

詳細說明你的問題,一上來就放出一堆程式碼,反正筆者看到幾十行的程式碼都是直接遛的。用簡短的語言,整理邏輯關係,詳細說明。

必要時給出實列程式碼

現在有很多線上的code play的網站,比如codepen(my favourite),jsfiddle,實在不行貼上github地址。這樣大幅度減少了對方瞭解問題的時間。

舉個例子,筆者的模版

提出問題:
大佬,我碰到了XXX問題。我希望的結果XXX,然而預期的結果XXX。

處理過程:
我搜尋了很多資料(表明你搜尋過了),網上有一些和我的問題很像,但是有些區別,我是這樣地,他是那樣的。(給對方畫一個範圍,告訴對方你的問題在哪一個區域)。
我試過了1,2,3,4……種方法(最好講明每一種方法的利弊,節約對方的勞動力)。

客套一下:希望大佬能給我指一條明路。(因人而異,看個人個性,筆者喜歡謙虛一點,畢竟是請求對方幫忙。)
複製程式碼

相信筆者,經過這一番的思考之後,自己就能找出答案了。

解惑者

那麼遇到一個問題,該如何回答,畢竟大家都有做新人的時候,總是要受點挫折才能成長為大佬。對於萌新還是要有“慈悲為懷”的。

此處再次借用StackOverflow地規範,有關於態度地,也許對於解惑者更重要的是一種態度。

錯誤示範:

這個問題百度下就可以了。
我都不知道你要問什麼。
(雖然有時候有些問題確實一言難盡,但是此類的回答語氣還是不太好的。)

複製程式碼

和善地提出——你可以去百度了

第一種,優雅地告訴對方,請百度:

這個問題其實難點在於XXX,是很常見,推薦搜尋一下,應該就會有許多解答。

第二種,手頭上有合適的大佬文章,丟擲連結:

這個連結裡面的內容,感覺和你的問題很像,可以參考下。

友好地告訴對方我不知道你在說啥

我無法get到你的問題點。給出對應的推理,是XXX這個原因嗎?還是說你想要XXX?

避免帶有挑釁的語氣

比如不屑,侮辱,甚至人身攻擊,這裡就不舉例子了,不合適。

優雅地回答!讓萌新不再瑟瑟發抖。

筆者解決問題的過程

  • 首先是StackOverflow搜尋,這裡能找到答案的機率最大,而且用英文搜尋,更加精準,不是筆者推崇英文,而是中文的表述過於複雜,很多名詞有多個解釋。
  • 找不到問題再去google,同樣關鍵字刪選。
  • 整理解決方案,一個個除錯,整理每次失敗的過程。
  • 無法解決可以換一個思路再去解決,此路不通,那麼就繞路而行。
  • 最後的最後,整理解決過程,找大佬解決。

筆者曾經問過一個關於video在微信上自動播放的問題,雖然最後並未找到更簡單的方式。大家可以參考一下。

一個問題的產生過程

問題提出: 需要在微信上面,自動播放視訊。但是手機為了使用者體驗著想,都不允許自動播放,所以該如何繞路而行了。我並不想使用常規的摸一摸播放,順便提一下在安卓上面一定要click事件才能點開視訊……

問題的痛點: 搜尋了多方面的資訊發現一個噩耗,無論什麼樣的播放都需要使用者的操作支援。而且ios和android的支援不同。首先蘋果為了代替gif,雖然支援靜音狀態下的播放,但是我無法保證音訊和視訊的一個同步執行,總是有個微微的延遲或者提前,而且音訊也需要摸一摸。安卓?不提了……

可行的方案: 終於找到了解決方案,然而卻需要利用ffmpeg轉流,然後通過jsmpeg將轉化之後的流通過canvas等技術播放出來。這能同時解決安卓和蘋果的自動播放問題。不過學習成本過高,需要掌握ffmpeg的基本操作以及jsmpeg的用法。

請求: 不知道大家有什麼更加簡易的解決方法?

當筆者寫整理完問題的時候,彷彿已經知道了最終答案,只是抱著試一試的心態去問一下也許有大神就知道呢?同時這也算是一個小小的經驗分享吧,該踩的坑都踩了。相信大家有一個自我的思考過程答案迎刃而解。

(感覺只有加粗大家才能看到筆者的請求,到現在都沒有收到更加簡單的方法,要是有大神知道請留下您寶貴的建議!)

筆者回答問題的過程

讓筆者找一個在stackoverflow回答的例子

提問的寶寶很客氣,原文大概是這樣的:

有關於通過js執行css的問題。

謝謝大家花時間看我的問題,任何幫助我都會感謝大家。

我有以下一串程式碼:

.middle_n.expand.remove
{
 animation: contractm 0.3s forwards;
 transform-origin: 0 75px;
 height:200%;
 animation-delay: 1.3s;
}

@keyframes contractm 
{
 0%{}
 100%{transform:translate(147.8%,100%) rotate(-16.75deg);}
}
複製程式碼

我希望能夠傳遞一個動態的值,讓這個轉起來。我該如何做。通過js可以實現多個動畫嗎?

再次感謝。

雖然是個新手,但是提問點很清晰。剛好筆者擅長該領域,於是就給出了回答。


筆者的回答:

在我看來,如果你希望控制你的動畫,我的簡易是你可以使用js控制你的元素的style。因為animation是完成一系列的動畫的。

並且有一個非常強大的css屬性,叫做css變數,你可以通過這個連結得到更詳細的解釋

然後給出筆者的例子:

const rotate=document.getElementById("rotate")
let r=0
rotate.addEventListener("click",()=>{
  r += 10
  rotate.style.setProperty("--rotate", r+"deg");
})
複製程式碼
#rotate{
  --rotate:0deg;
  background:pink;
  width:100px;
  height:100px;
  transform:rotate(var(--rotate));
  transition:transform 1s;
}
複製程式碼

當然,如果你希望一系列的動畫,你可以檢視這裡。設定一系列的動畫很簡單。


本文的主觀性很強,如果有感到不適的地方,筆者道歉。筆者只是為了大家能夠有個更好的學習氛圍。少一些爭論,多一些討論。好好學習,天天向上。

怕被打,溜了溜了。

不知道如何安放的文章,筆者應該怎麼新增標籤呢?

相關文章