一名資深程式設計師的自白!

TP_funny發表於2014-09-14
在程式設計師崗位上工作了三十多年,我學到了也明白了一些事情,希望在這裡跟大家一起分享:

  • 看不到實物,客戶不會知道自己想要什麼
一個功能性原型系統的展示,能夠省下無謂低效的贅述。

  • 只要給予足夠的時間,任何安全措施都不安全
安全是目前系統運維的重大挑戰,我們每時每刻都想方設法來保護系統和資料,但是黑客只要成功一次,我們所有努力就極有可能都付諸東流。

  • 系統被攻破後造成的影響,依賴於事前的準備功夫
如果能夠預先估計防護系統失效的後果,做足準備措施,例如:把關鍵資料單獨分離儲存,對資料進行加密等,那麼或許可以減少日後上頭條的機會。

  • 良好的安全部署不僅僅是開銷,而是戰略資產,如果吝嗇於此,代價將不菲
在工作中,我總會聽到人們常常抱怨安全運維是多麼的複雜和昂貴,因此,總不時看到某些企業為了蠅頭小利,以犧牲安全性來節省開支,最後不得不多吞下N倍的苦果。

  • 複雜問題簡單化,遠比普通問題複雜化困難得多
在任何創造性藝術領域,如:程式設計,設計,這都是個常見現象。我會盡力把程式碼寫得簡單易懂,不論是為了自己還是別人;如果你想展示自己的聰明才幹,而故意把程式碼變得複雜, 那麼維護會是件可怕的事情。當然從保護智慧財產權角度來看,這本無可厚非,但或許會失去開源軟體的活力與創造力。

  • 成功來自對失敗的總結學習,如果一再容忍失誤,失敗與成功註定是兩條平行線
當人們對自己的錯誤習以為常,那麼創造出來的可能是毫無價值的產品。我們需要訂下目標:只允許自己犯同型別的錯,一次。只有嚴控錯誤頻率,才能不斷提高軟體開發水平。

  • 永遠不變的是變化
僅根據今天的情況來制訂明天的計劃,是不明智的。特別是在程式設計的世界裡,沒有亙古不變的死路子。反對技術進步,閉關自守,不接受或嘗試新事物,註定是不會成功的。

  • 終身學習
我最喜歡的一個說法是:我們背後都跟著一個大滾筒,只要稍微停下,就有可能給絆得人仰馬翻,因此,我們必須比它跑得更快,不斷前進。當我們自認已掌握一切後,殊不知其實是倒退的開始。

  • 整個軟體業充斥著野驢猜想
古時候,先知者如果預言失敗,會給石頭活活砸死;而現在,即使預判失敗,專家們都可全身而退,不過去做另外一次預判罷了。因此,野驢猜想盛行,人人都喜歡去預判下論斷,一個浮躁的年代。

  • 條條大路通羅馬,羅馬並不在乎你用什麼方式到達
客戶不會關心你會遇到什麼問題,他們只想你的軟體能解決他們的問題。系統當機,硬體損壞,黑客攻擊,這些對客戶來說毫無趣味可言。如果不幸發生這些囧事,老實交代是較好的做法,特別是被客戶清晰知道你將如何解決這些問題前。

  • 客戶才是最好的質量標準
不論你有多少的測量指標,進行了多少回程式碼回顧,通過了多少個驗收清單,這些其實都是次要的;最關鍵是我們做到客戶所期望的,沒有做多餘的無用的。記住,客戶才是最後把關的 QA。

  • 無記錄,不成功
時至今日,我仍然覺得人們如果不去收集日誌,崩潰報告等有用資訊,是多麼的我夥呆。我一直堅持做的是進行儘可能詳細的記錄,追蹤崩潰情況,閱覽複核報告和備註,和其它任何能迅速定位錯誤的事情。

  • 儘管存在更好的辦法,但是時間不會停下來等你
在做評估時,最困難的是取得終止和繼續之間的平衡。如果終止,或許會失去找出更好辦法的機會,但如果這辦法需要耗費過長時間,其實沒多大價值。這是個艱難的抉擇,但有時候今天做出的快速選擇,會比明年才得出的好選擇更管用。

  • 尋找有錢的金主
曾合作過的一名銷售人員的觀點讓我印象深刻:找到一個不懂技術但有很多錢的人,如同找到了一個大金礦。聰明的人會問太多問題,貧窮的人不能給予你回報。我由衷地為自己成為程式設計師感到高興!

  • 我的工作是對客戶撒謊,你的工作是讓我看起來是一個好人
還是前述的那名銷售人員,他喜歡口頭允諾客戶完成不可能的任務,並在我們最終完成任務後,捷足先得我們的獎賞與讚譽。儘管挑戰難題會很有成就感,但每次的副作用是無盡的痛苦。我的建議是:儘快尋找另外一個更好的銷售!

英文原文:Lessons From A Lifetime Of Being A Programmer
來自:kimix.name
相關閱讀
評論(3)

相關文章