2009年8月5日 星期三

不會煮菜的寫不好程式 , 當不好PM

不會煮菜的寫不好程式 , 當不好PM <--這個標題 , 純屬瞎掰 , 有無道理容後說明

在一些程式設計網站 , 最常見的初學者或是初入職場的人問的問題?
某某程式 , 不知道從何寫起 , 或是不知道從如何寫?

我敢打包票 , 這些人大概不會煮菜 ,

首先 , 你要煮菜前 , 要上菜市場買菜 ,
買菜也分為兩種 , 一種是隨便買亂亂買 , 一種是有目的的買
例如: 你已經盤算好了 , 今天要煮 排骨蘿蔔湯 , 炒高麗菜 , 糖醋魚 , (關於怎麼配菜也是問題)
那你要買 的材料絕對是要煮這三樣菜的材料 , 絕對不會搞個冬瓜回家 , 也不會搞個雞回家...
為什麼 , 你已經決定好的要煮的菜 , 而要煮的菜 , 絕大部分都有固定的食譜 , 也就是有固定的配料跟調味料的樣式 ,

那跟寫程式有甚麼關係?

有的人寫程式是這樣寫的 ,
"我要寫個可以兩人對戰的網路遊戲" ,
 "但是我完全不會寫" ,
 "希望有人教教我 " ,
 "要有範例 ",
" 而且必須是藥用 C# 寫的" ,
"還有 , 我很急 , 就在線上等 , 請趕快回覆"
這樣很了不起的網路問問題的大爺問法 , 看過沒有? , 我看過 n 次...

有點扯遠了 , 這跟煮菜何干 ?
"我要寫個可以兩人對戰的網路遊戲" , <----- 我要煮個兩人吃的菜
 "但是我完全不會寫" ,                            <----- 但是我完全不會煮
 "希望有人教教我 " ,                              <----- 希望有人教教我
 "要有範例 ",                                           <----- 而且要有食譜
" 而且必須是藥用 C# 寫的" ,                <-----最好要有@XO#
"還有 , 我很急 , 就在線上等 , 請趕快回覆"

如果你就是那個人 , 你要如何回答問題
 我要煮個兩人吃的菜         <----- 首先問問題的方法就是錯了 , 要煮甚麼菜沒有說清楚 , 十分發散
                                                         如果可以決定要煮甚麼菜了 , 下面的問題就簡單了
                                                         例如:要煮佛跳牆
 但是我完全不會煮            <----- 我也不會煮佛跳牆
 希望有人教教 我               <------- 現在這個時代當然是要上網查 , 有食譜 , 有作法
 而且要有食 譜                  <----- 

剩下的是甚麼? 準備材料 ,
買回來的材料 , 還要一一經過整理清洗 , 看是要切絲 , 切塊 , 切條 , 切丁 , 反正看要煮甚麼菜 ,
相同的材料 , 用在不同的菜上面就要用不同的處理方式 ,

竹筍炒肉絲 , 如果你硬要切塊 , 切丁也不是不行 , 只是口感會不好...
(一 般來說 , 一道菜 , 如果有切絲的 , 那相關材料都是切絲 , 要不就全切丁(EX:  生菜鴿鬆 , ))
又有點跑題了....


但 是萬一 , 碰到一個你不曾用過的材料的時候怎麼處理?
先去學如何處理那個材料 , 那個材料會處理了 , 菜大概也成功一半了
(菜的烹 調方式也是一樣 , 哪裡不會 , 有需要就學 ,)


另外一點就是處理材料的方式 ,
有的人煮菜 , 會把所有材料全部先處理好 , 該洗 , 該泡 , 該削皮 ,  該切絲 , 該切丁 , 該醃的 ,
全部在生火之前 , 全部弄好 , 而且會把材料一一放到適當的剛盆 , 調理碗 ,
等到要生火 , 倒油熱鍋時 , 就只需要 , 把事先準備好的材料 , 一一下鍋 , 等火候到了 , 加調味料 , 起鍋 , 菜就煮好了 , 這種煮法 , 就不會手忙腳亂 ,


另一種人是一邊生火熱油 , 一邊才開始想要先煮哪道菜 , 然後才發現 , 材料的主菜還沒洗 , 趕快隨便洗洗 ,
鍋子已經在冒油煙 , 趕快胡亂切切 , 丟下鍋 , 突然發現 , 還有配菜 , 還放在冷凍庫 , 趕快拿出來 ,
還是結冰狀態 , 趕快用刀坎 (砍得動才有鬼) , 不得已 , 只好把冰凍的配料丟下鍋 , 這時主菜因為剛剛沒空翻它 , 已經呈現焦黑狀 , 而附菜 , 還是冷凍狀態 , 只好加大火煮 , 主菜黑焦的更兇 ,
過 了30分鐘 , 附菜是外面焦黑 , 裡面半生不熟 , 而主菜已經剩下黑炭了....
然後呢 , 等到一個小時之後 , 終於整道菜已經熟了(也焦了)
你還要加個調味料起鍋 , 然後把它吃下肚嗎?


有沒有發現 , 煮菜的方式 , 會碰到的狀況 , 也跟我們在開發程式或是在進行專案管理很雷同...
如果你不預作準備 , 就要胡亂去煮 ,  失敗的機率絕對很高....

===== 煮菜 vs 專案管理 對照篇======
但是如果你"會煮菜" , 那麼相信你在進行程式開發 , 或是進行專案管理應該也是有條不紊 ...
首 先先決定煮甚菜 (決定範圍 ,  主題)
進行材料採買        (決定資源 , 配置資源)
進行材料前處理 ,    (確認活動)
決定下鍋優先順序 , (進行活動排程)
確認菜都熟了 ,        (執行專案活動 , 進行品質驗證)
加調 味料 ,              
起鍋上桌                 (專案完成結案)



===== 煮菜 vs 程式開發 對照篇======
首先先決定煮甚菜 (決定要寫甚麼方面的程式)
進行材料採買        (決定需要用到哪些技術 , 網路通訊 , 壓縮 , 3D , 加密???)
進行材料前處理 ,    (確認 那些技術要如何使用 , 進行簡單學習確認)
決定下鍋優先順序 , (轉寫煮程式 , 將各個單項技術模組化撰寫測試)
確認菜都熟了 ,        (將各個模組合併在一起完成主程式)
加調味料 ,              
起鍋上桌                 (程式完成)