跳到主要內容

給學生與軟體業新進的十招

莘莘學子與軟體業新進請聽聽在下的十招~對於這十招提供了一些基本的解釋也希望能以詼諧的方式幫助各位加深印象~相信這十招各位經過更多歷練後會有更多解釋~所以把這篇從原篇中獨立出來,希望能方便讀者參考:

 
第一招:看到問題唸十次
  1. 確認你記得問題下次還記得
  2. 確認你瞭解問題,沒有漏掉什麼要求
  3. 確認你以後踫到類似問題,還會想到它
  4. 確認你連做夢都會想到它~悲慘的程式設計師宿命~

 
第二招:程式不會寫,先開始寫註解
  1. 利用註解將問題描述,將問題做分析
  2. 把分析方法與解法都 document 起來~對你自己最有益處
  3. 直接註解而省略白紙,由註解行數的改變,讓你老闆知道你有在努力做~
  4. 人家是用照片寫記憶~程式設計師是用文件寫記憶~

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

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

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

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

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

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

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

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

 
大約解釋一下,聽得懂的請消化吸收、聽不懂的當偶是說笑話也可以~希望大家能把軟體產業走得更進步~

 
共勉之~

 
引用自程式設計俱樂部 bensontan(Benson)一文

留言

這個網誌中的熱門文章

以管理者權限執行批次檔

最近有個專案需要執行批次檔,來進行某些設定或者城市的安裝,在XP上這個Script可以運行沒問題,可是一到Vista以後的Windows版本就無法運行了,最主要的原因是,UAC的管制的問題,幾經尋找,總算找到一個可行的解決辦法。

DataGridView欄位統一格式化

最近的工作內有一個需求,就是由於專案中有許多呈現資料的DataGridView,而其中的欄位需要呈現的包含金額、數字或者日期等格式,若要一個個的設定格式,如果有一天格式突然變更,可能就要苦工做到死,如何讓專案中的這些格式都統一就成了一個問題,經過了一番查找,發現可以透過DataGridView.CellFormatting Event來解決這個問題。

輕話要重聽,重話要輕聽 [IT邦幫忙鐵人賽 Day1]

在職場上總是會有被指導的時候,而這些被指導的過程中,就是你成長的時候,其實指導者願意告訴你,就是覺得你會有機會成長,所以才會提點,但提點的過程就會隨著指導者的EQ而有所不同,EQ高者會用比較婉轉的話語來告訴你,EQ低者會用比較強烈甚至傷其自尊的怒罵來指責你,此時此刻你所要學習的就是【輕話要重聽,重話要輕聽】。 由於明天(星期五)要繳交網頁的版面設計稿件給客戶,加上客戶直至星期二才交付相關素材,因此設計部門並沒有太多時間可以進行設計,這個案子大概是因為工作分配的關係就落在了一個半熟手的設計師手上,直至今天(星期四)早上,基於我是這個案子的PM,所以我找了負責這個專案的設計師開了一個小會討論,會中設計師也大概說明了設計理念與想法,而這些圖稿我也覺得應該還符合客戶期待,所以也就沒再多所著墨,會後我的主管突然提到想要看這些設計稿,當我把圖稿給主管看完後,只見主管的表情變得嚴肅,就像"突然李組長的眉頭一皺,發現結果並不單純",當下請了設計部的資深同仁來討論,頓時我也陷入了一陣糾結。結果當然是稿件還沒到客戶手上,主管當場就打槍了。不過這件事倒讓我發現了兩個現象: 現象1:就我的立場而言,要交給客戶的稿件是我同意的,所以當主管不滿意時,我應該要深刻的反省,包含稿件深度與質量的要求,但主管從頭到尾並沒有提到,也沒有多所責難,而是立即希望設計部進行調整,但當下的我卻選擇了【輕話要重聽】。也就是說,主管沒有責難,但我卻連主管要求的水準都達不到,是該自我反省,而非當作沒事一般。因此我將他列入工作紀錄中自省。 現象2:我們的主管EQ是個不錯的人,因此當他在討論稿件品質時,並沒有多所責難,僅是希望設計部門能趕緊補強調整,但是對於半熟手的設計師來說,等於否定了他的設計,因此設計師的失落感可想而知,這個時候其實他該選擇【重話要輕聽】,這些否定的話其實只是推動進步的一個挑戰,把話輕聽,別想太多,只要記得提點的重點,其他的否定就不該執著於上,因為如果只是執著別人的否定,那你就會忽略提點的重點。誰不是從被否定中成長的呢。 所以學習如何【輕話要重聽,重話要輕聽】這是職場生存的一個訣竅,前者是希望即便與你無關的事情,如果你重視他,將他學習下來,就會讓自己進步。後者是希望別著墨在否定的態度上,應該專心在如何讓否定成為肯定,了解為何否定,自然也會成為成長的動力。 第五屆IT邦幫忙鐵...