顯示廣告
隱藏 ✕
※ 本文為 cuteman0725 轉寄自 ptt.cc 更新時間: 2012-09-23 16:26:33
看板 Soft_Job
作者 awert ( )
標題 Re: [請益] 程式寫太慢..
時間 Sat Sep 22 02:04:40 2012


你要學會如何解決問題,而不是氣餒。

首先...

沒有人是什麼都會的
------------------

    當你的主管拿了一份"作業",說要讓你"練習"時,我相信他多少有心理準備,
知道你不會兩三下就交出來。因此,遇到問題解不開,絕對不是什麼罪該萬死的錯。
罪該萬死的是自己不會卻沒有去想法子,死線到了兩手一攤說我不會。

程式設計師的工作,大多數的時候都在想辦法解決自己不知道答案的問題。所以...

        不懂,很正常!

以後只會碰到更多不會處理的問題,但是你還是要去解決,因為這就是你的工作。


沒有問題是不能解決的
--------------------

    說實際一點的話好了,你既然是新人,那麼你所遇到的問題,通常都是可以處理的。
如果真的那麼難的話,你也不會在這裡發文問這種問題了。

    不會很正常,問題又一定有解法,那麼還有什麼好擔心的 ?


解決"不會解決問題"的問題
------------------------

    既然問題是有解的,那麼就只剩下找解法。怎麼做 ?

    這個問題不好回答,因為我不清楚作業內容是什麼,不瞭解你的程度,也不知道你
卡在什麼環節上,更不曉得你做過了什麼樣的努力。但就我自己本身或看過的人的經驗
來說,通常都是這幾種狀況。


    1. 根本不知道問題在哪

            這種現象很容易出現在第一次接觸的問題上,連自己為什麼不會都講不出
        個所以然來。這個時候,你就需要仔細的去思考,是什麼地方不懂。

        是不知道整個程式運作流程 ?不知道用什麼的技術 ?API 看不懂不會用 ?
        程式寫出來有錯不知道原因 ?

        如果現在有30秒的時間讓你問一個問題,你能夠馬上完整地描述你的困境,而非
        單純把問題丟出去要答案嘛 ?

        不行的話,開始著手釐清。

    2. 不肯(敢)提問

        怕被別人認為自己程度差,怕煩到同事前輩。明明答案只需要開口就有了,卻
        不願意去問。大部份的程式設計師工作的時候,都身處於一個開發團隊裡。身為
        團隊的一員,幫助同儕解決問題,本來就是應該的,更何況是幫助新人 ?而且我
        認為會去做程式設計工作的人,大部份都樂意於幫忙解決程式上的問題。


        溝通、合作是程式設計師的工作之一,因此不要怕和同事提問,他們可能都正預
        期著你會問問題,如果不肯提問而造成工作無法達到目標,真的就是因小失大,
        而未來你也該抱著如此的心態去幫助同事。


        如果沒有同事,或是同事真的沒辦法幫你解決問題 ?

        網路上多的是程式的討論區,到處都有高手等著你發問,豈有藉口說沒人能問 ?

    3. 不會找資料


        上面剛剛也說過了,問題通常早就被人問過,被人解決過了,可是在 Google 找
        半天卻找不到解答,很多時候都是找的方式有問題。例如:Google 收尋時關鍵字
        只打中文、只看中文網頁、不看技術文件... 云云,這些都是有問題的。拿英文
        不好當藉口是不能讓問題消失的,資料來源範圍當然是越大越好。


        程式上的問題通常關鍵字以錯誤訊息、API來當作條件會是一個好的開始。找到
        的資料太發散時,就多加一些和你問題有關的關鍵字。如果還是找不到,技術文
        件通常會是一個很好的資料來源。如果完全沒有東西,那你可能是關鍵字範圍太
        細,試著用英文描述問題的關鍵字,Google 會幫你多找出不少內容。


     4. 你累了嘛?

        寫程式是很燒腦力的事,為了解決問題而長時間不休息,只會讓效率更差。甚至
        過度加班、熬夜使身體得不到休息,結果隔天精神更差。壓力很容易造成這種
        惡性循環,你必需要學會處理這些壓力,並適度的讓你的身心休息。上洗手間、
        喝水,找事離開座位幾分鐘走一走,腦袋休息一下。有時候在來回的路上你就會
        靈光一閃。



如何提問
--------

    雖然我說的好像大家都等著你發問,非常的美好。但現實生活上,你的同事都有自己
的工作要負責,就算你隔著螢幕問著住在世界另一端的大大,他也有自己的現實生活要忙
,因此有些準備工作你必需要先做好。


    1.  想清楚你要問什麼問題

        如果要問什麼都不清楚的話,要如何期待別人給出滿意的回答 ?花時間想辦法
        弄清楚想問的東西,把範圍縮小,絕對不要拋出一個無邊無際的問題。

        如果想問的是程式的問題,較好的方式是想辦法弄出一個可以重現問題的範例,
        這個作法叫做 SSCCE (Short, Self Contained, Correct (Compilable),
        Example,  http://sscce.org/ )。為什麼要這樣做 ?一方面是讓回答的人可以
Short, Self Contained, Correct Example
Describes the short, self contained,
correct example. A useful technique for debugging. ...
 
        在很短的時間裡了解你的問題;另一方面是,在重現的過程中,你有很大的機會
        摸索出問題癥結所在。

    2.  提問前先嘗試解決

        千萬不要因為問了就有答案而拼命提問,很少有人會喜歡回答一個去 google
        就有一堆資料的問題。程式有 bug 找不到問題 ?試著一行一行的把程式解釋
        給自己聽( http://en.wikipedia.org/wiki/Rubber_duck_debugging )。答案
Rubber duck debugging - Wikipedia, the free encyclopedia
[圖]
Rubber duck debugging,[1], rubber ducking,[2] and the rubber duckie test[3] are informal terms used in software engineering to refer to a method of debugging code. The name is a reference to a likely apocryphal story in which an unnamed expert programmer would keep a rubber duck by his desk at all t ...
 
        有時候其實都在眼前。

    3,  尊重對方的時間

        雖然幫助同事是應該,但不要忘了公司裡的每個人都有自己的事要忙。整理好你
        的問題,一次問完,不要每十分鐘就跑去打斷對方工作。如果不確定對方是否有
        空幫你,那麼就問是否有適合的時間能和他請教。


要講的話還有很多可以講,有空時可以讀讀這篇,雖然有點舊了,但仍然是很好的一篇文
章。

提問的智慧(How To Ask Questions The Smart Way)
http://www.chweng.idv.tw/smart-questions.php


--
We who cut mere stones must always be envisioning cathedrals.

--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.186.241
strangehead:推這篇,不光是寫程式,很多方面都是這樣1F 09/22 02:41
howy:強力推,受用不盡2F 09/22 03:50
forthewill:推3F 09/22 04:15
henrik:不只是寫程式的要看! 團隊合作的都該看4F 09/22 06:11
ninepoints:這篇寫得真好!光是知道問題在哪都要練很久5F 09/22 09:11
gmoz:推SSCCE 我也是無中生有自己習得這個方法XD6F 09/22 09:20
SYC1205:這一定要推一下7F 09/22 09:22
sunflier:推這篇~8F 09/22 10:07
jack089452:有看有推9F 09/22 11:06
bobju:請教問題要請吃飯.10F 09/22 11:11
blackie1019:推一個 熱心教學11F 09/22 11:46
kewang:大推這篇!12F 09/22 12:06
CHeagleeye:大推!!寫得真好!!13F 09/22 12:43
andymai:好用心~推~~~14F 09/22 13:09
wtvwtvwtv200:推~15F 09/22 13:22
mynoid:推~~16F 09/22 18:26
lovelycateye:推這篇17F 09/22 19:12
pttfly:推這篇18F 09/22 19:43
kiii210:大推.. 你累了嗎~~19F 09/22 22:49

--
※ 看板: P_qman 文章推薦值: 1 目前人氣: 0 累積人氣: 215 
※ 本文也出現在看板: abc1231qa
作者 awert 的最新發文:
  • +17 Re: [請益] 程式寫太慢.. - Soft_Job 板
    作者: 114.35.186.241 (台灣) 2012-09-22 02:04:40
    你要學會如何解決問題,而不是氣餒。 首先... 沒有人是什麼都會的 ------------------ 當你的主管拿了一份"作業",說要讓你"練習"時,我相信 …
    19F 17推
  • Re: [問題] 關於字串比對的小問題 - java 板
    作者: 114.35.186.241 (台灣) 2012-01-31 23:16:35
    用推文有點慢.. 我的想法是這樣子的,這個idiom並沒有問題。 但是,實際寫code時遇到要處理null問題時, 我不會鑽牛角尖考慮哪一種處理null的方式比較漂亮/有效率, 而是要先看為什麼要處理 …
    1F
  • Re: [問題] 關於字串比對的小問題 - java 板
    作者: 114.35.186.241 (台灣) 2012-01-31 20:47:24
    理論上是第二種,差別單純在於 a如果是null時,不會有NullPointerException 但我覺得微調這個沒有太大意義就是了..
    1F
分享網址: 複製 已複製
( ̄︶ ̄)b abc1231qa 說讚!
abc1231qa 轉錄至看板 abc1231qa (使用連結) 時間:2012-09-24 11:05:10
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇