當個好工程師

第一招:看到問題唸十次

a. 確認你記得問題下次還記得

b. 確認你瞭解問題,沒有漏掉什麼要求

c. 確認你以後踫到類似問題,還會想到它

d. 確認你連做夢都會想到它~悲慘的程式設計師宿命~

第二招:程式不會寫,先開始寫註解

a. 例用註解將問題描述,將問題做分析
b. 把分析方法與解法都 document 起來~對你自己最有益處
c. 直接註解而省略白紙,由註解行數的改變,讓你老闆知道你有在努力做~
c. 人家是用照片寫記憶~程式設計師是用文件寫記憶~

第三招:解法不會寫,先寫工具

a. 一個複雜的問題,尤其是面對演算法相關的所謂困難部份 如果能把工具(諸如模擬)寫出來,這樣是比較容易找出解法的~
b. 工具總是可以拿來重覆利用的~這會讓你越寫越輕鬆~
c. 寫工具也是一種重要練習~

第四招:整個問題不會解,先解會解的
a. divide and conquer(偶稱它為個個擊破法) 不用多說,不知道網上查也會知道~
b. 就像寫論文一樣,如果無法提出所有問題的統一解決方法,限定一些條件來解
c. 還有有時候一下就想最困難的問題,一來浪費進度、二來心情不佳
三來老闆可能把預算砍了因為沒有結果~所以先解會解的是經驗上的金玉良言~
因為一來你花了20%完成了80%超越進度,老闆來拍肩膀了
二來你解了簡單問題心情大好,更覺得整個問題也沒什麼大不了
說不定困難問題因心情好(沒有專牛角尖)也就想到而解決了
三來老闆看你有成果說不定常拍你肩膀哩~(老闆這時候真好騙~可惜薪水不好騙)

第五招:查網路、問別人、看書獲取各種解題的資源
a. 想想偶們還在用193x的理論,當然問題絕不可能只有你才踫到
一定粉多人早就見過了~只有你踫到的通常是你自己寫出來的bug~
b. 這是群策群力的時代,多找資源、人家的經驗和別人幫忙~
c. 對應於b, 現在這個社會最忌諱單打獨鬥, 那代表你不能 team work~
d. 增加知名度、人緣~ Social 粉重要~切記~切記~

第六招:暴力法求解再找最佳化
a. 先求有再求好~
b. 有成果人家才看得見~不然做不出來,中間再怎麼完美都沒有用~
c. 暴力法通常是最白痴也最有效的辦法~
d. 有時白痴解法最好~因為只有呆子在演東西給傻子和電腦看~你還期待有什麼
人會看你的程式?偶們高貴的使用者嗎?
e. 一代萎人瞪小平同志說過:「黑喵、白喵 會抓老鼠的就是好喵」

第七招:多印追蹤資料少偵錯
a. 講得粉白話~就是要你可以節省出問題找錯的時間~這樣才有更多時間解決真正
是問題的問題
b. 因為有追蹤資料 (trace information)不僅你可以找問題,別人也才可以幫你找
出問題,想想吧~如果 compiler 只告訴你程式錯,而沒告訴你大約是哪裡它踫
到錯~你要花多少時間解決一個打錯字的問題
c. 真正的問題也常能由追蹤資料找出蜘絲馬跡
d. 養成習慣,不要等到當了還在想怎麼寫追蹤資料的程式碼或可以重覆發生的方法~
e. 你是壞人喲~幹嘛壞怕留下線索~還是你是蜘蛛精,「偶揮揮手不帶走一片data而
當機」所以,人家是照相機抓得住偶,程式設計師是用 bug 抓往住偶~偶不是故
意幫那家快倒的、沒有「即時更新技術」的公司打廣告~

第八招:多讀、多寫、多想、多說
a. 多讀,像第一招,有時候會幫助你瞭解問題的所在或 think out of box
讀也包括讀參考資料~
b. 多寫,熟能生巧~工欲善其事,必先利其器~
c. 多想,解法大部份還是要腦袋想出來,即使是人家的也要腦袋理解、吸收
d. 多說,只有在你能表達出問題所在,才表示你真正瞭解問題~
只有你能表達出你的知識,那個知識才是你的~

第九招:學會改進重於學會重寫
a. 任何時間都要學會成本控制~不然你就沒有經費~
b. 當來練習學會維護別人寫得爛程式~以後踫到再怎麼爛也看得懂~
c. 為什麼爛-用註解的方法記錄下來,有機會(成本效益考量)再改進-記住是改進
不是重寫
d. 由這種維護的痛苦加深寫好程式的方法和印象~真是歹命呀~;)
e. 工作機會要找改進的粉多,完全寫新的粉少~

第十招:記得備份
a. 即使BMW也會 Crash,那「軟~」體會可能都不當機嗎?有誰說他家有裝避雷針
不怕閃電、有水管(PVC)把電源線和所有線包起來不讓老鼠咬~
還有說他寫的程式永遠不會當 (如果是,偶送你Taiwan No 1封號 的病毒~)
b. 讓電腦忙一下讓腦袋休息一下,對大家都好~
c. 還是記得備份~遠方又傳來哀嚎:「神啊~請讓偶記得備份~」

留言

這個網誌中的熱門文章

電腦網路project