30多年程序員生涯經驗總結

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

  英文原文:Lessons From A Lifetime Of Being A Programmer

  在我 30 多年的程序員生涯里,我學到了不少有用的東西。下面是我這些年積累的經驗精華。我常常想,如果以前能有人在這些經驗上指點一二,我相信我現在會站得更高。

  1. 客戶在接觸到產品之后,才會真正明白自己的需求。

  這是我在我的第一份工作上面學來的。只有當我們給客戶展示產品的時候,他們才會意識到哪些是必須的。給出一個功能性原型設計遠遠比一張長長的文字表格要好。

  2. 只要有充足的時間,所有安全防御系統都將失敗。

  安全防御現如今是全世界都在關注的大課題、大挑戰。我們必須時時刻刻積極完善它,因為黑客只要有一次成功,就可以徹底打敗你。

  3. 安全防御是否失敗取決于及早規劃。

  假設有黑客會徹底破壞你的防御系統,那你就得提前做好準備。這樣即便真的讓他們侵入了系統,也盜取不了任何有價值的東西,因為你已經對服務器做了安全設置,比如對數據庫中的內容進行了加密,并且對每臺有可能遭受攻擊的服務器進行了隔離。

  記住,再強大的防御都會有它的薄弱之處,關鍵是要有備無患。

  4. 良好的安全防御系統不要在乎它的費用,因為這是戰略投資;不及格的安全防御才是被浪費的資源。

  在我的職業生涯中,經常聽到有人抱怨說安全防御是多么多么的復雜和昂貴,他們沒有意識到的是,如果防御失敗,公司將損失的可能不止幾十億美元。為了節約幾塊錢而導致企業破產,這種做法毋庸置疑是非常愚蠢的。

  5. 將復雜的東西整理成簡單的,是很難的,但是要是把復雜的搗鼓成更加復雜的,那就簡單了。

  這一條適用于編程、設計和幾乎所有的創造領域中。我一直以來都希望自己的代碼能越易于理解越好。如果你的代碼過于復雜和晦澀,那十之八九它正常工作的可能性很低。我曾非常有幸地見識到有些程序員費勁千辛萬苦,反而讓代碼更加難以捉摸了。

  6. 成功源自于失敗中的學習;失敗則是因為容忍錯誤的橫行。

  有很多程序員總是在辯解,說什么“程序這么難,犯錯誤很正常了,軟件變得糟糕也在所難免了”。這種理由聽得多了,于是,大家也逐漸接受了這些扯淡的借口。但是我們作為程序員真的不應該讓這些借口阻礙我們的進步,應該謹記,錯誤只能犯一次,要吸取教訓。話說是程序員都會希望自己下一次就能一次性搞定代碼。但是沒有人是完美的,不過至少我們是在朝著這個方向前進的路上。

  7. 唯一不變的是變化本身,這是誰都無法改變的法則。

  計劃永遠趕不上變化,以為明天的世界和今天一樣,這種想法本身就是愚不可及的。尤其是在編程世界里,沒什么是永恒的。人不能兩次踏進同一條河里。

  8. 永遠不要停止學習,一旦你停下來,技術的浪頭就會狠狠將你拍死在沙灘上。

  作為程序員立于不敗之地唯一方法就是,不斷學習、不斷進步。因為一旦你松懈下來,你的所有優勢都將隨風而逝。

  9. 整個軟件行業建立在“百家爭鳴”的思想上。

  在我的職業生涯中,我看到過很多程序員會對各種事情較真:預估完成時間上較真,規模大小上面較真等等。而且有的人還屢錯屢戰。有些以前被批判為“行不通”的技術,現在卻已經牢牢占據了人們生活的一席之地,并且現今正向著另一個高潮沖刺。

  10. 適合你的不一定適合他。

  在軟件項目中我們可做的選擇很多很多。有的英明,有的糟糕。但是適合你和你當前情況的選擇可能一點都不適用于其他人。我們經常能聽到別人說自己又在干什么偉大的創舉,但是如果他們說什么這是唯一的好方法時,我會對此嗤之以鼻。

  11. 在這個不斷變化的世界中,評估是最為重要的技能。

  這一點有些人可能并不知道。但是如果你愿意認識新事物,看得到他人的努力,比較做事方法之后再擇優使用,那么不但是你自己,還有你的團隊、你的項目、你的公司,都將受益無窮。但是很多人對此都不擅長,而很多負責人甚至在這方面表現得非常糟糕。照著別人說得做,以及看別人做什么自己也做什么,是非常容易的。但是如果要全方位地看問題然后再基于自己的需要選擇對應的最優方向,這就很難很難了。在軟件行業中做抉擇是必須的,但是如果當你在不得不評價分析的時候頭腦一片茫然,那最終的結果只能是隨機挑一個或者是盲從隨大流。

  12. 不管黑貓白貓,能抓到老鼠就是好貓。

  只要你的軟件能實現客戶指定的功能,他們才不會關心需要解決哪些問題。系統出問題了,異常情況發生了,硬件壞了,程序猿被女朋友甩了,黑客盜號了:用戶永遠不會對這些發生興趣。如果發生意外情況,最好能坦誠說出來,但是你最好要能確保這種情況不會持久,因為你總給將最終的產品交給客戶。

  13. 客戶的意見決定質量。

  無論你設置了多少指標,檢查過多少表單,審核了多少代碼,寫了多少測試:這都不是關鍵,除非客戶自己親眼目睹軟件運作正常。關于代碼質量、性能、設計和可用性,客戶的意見才是決定質量的唯一要素。

  14. 對某方面的無知可能會讓你一敗涂地,因為你在這方面毫無經驗。

  即使到了今天我依舊在不斷驚嘆,有的同行竟然仍然沒有收集足夠的日志、崩潰報告和使用信息來掌控自己的軟件。那些對這方面信息不屑一顧的家伙,大多會高估產品的質量。因為如果你不采取措施和記錄結果,渾渾噩噩地混日子,終將會導致你對當前情況一無所知,包括你的客戶。我一直反復強調,詳細而有用的日志記錄、程序崩潰跟蹤、評論和意見,反正各種只要能讓我盡快了解發生了什么問題的途徑和方法,都是可行的。不過,我也知道有很多人認為“這種事和程序員有一毛錢的關系嗎?”。

  14. 總有更好的辦法,但是時間不允許。

  評估中最難把握的節點是什么時候應該停止頭腦風暴開始開工。或許我們會錯過那個更好的方法,但是如果要耗費很長時間,那就不值得了。但是這是很難界定的,不過有時候今天的一個小小的選擇可能會打敗明年那個更佳的選項。Who knows?

  下面兩點引用自一名銷售人員,他是我很早以前的同事。有些東西我并不是完全同意,不過也能給予我們不同的角度看問題。

  15. 客戶要找愚蠢的。

  這是我最喜歡的一句話,這個銷售人員就職于一家咨詢公司。他認為,要找那種不懂技術但是有足夠資本揮霍的金主。聰明的人總是會問很多問題;沒錢的人無力購買我們的服務。我很慶幸我是一名程序員,哈哈!

  16. 我的工作是欺騙客戶,而你的工作則是支持我。

  第二句話來自于同一個銷售人員。他總是喜歡不斷地承諾一些不可能的任務,然后當我們終于嘔心瀝血加班加點趕出來了,他就來收獲我們成功的果實。挑戰的確讓人 exciting,但是每次都是這種不可能的任務未免太痛苦。我的建議是,換一個更好的銷售人員!【譯者注:這不是傳說中的 PM 和程序員之間的“和諧”關系么?】

  譯文鏈接:http://www.codeceo.com/article/a-lifetime-programmer.html
  翻譯作者:碼農網 – 小峰


www.codeceo.com 2015-05-19 00:19:15

[新一篇] 2014世界杯最強自拍!梅西被巨星圍繞

[舊一篇] .net程序的破解 - hanmos
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表