渣翻:做爲終生程序員的一些教訓

這是我參與更文挑戰的第5天,活動詳情查看:更文挑戰程序員

原文地址:thecodist.com/article/les…數據庫

作了30多年的程序員,我學到了一些東西。這有一些好的建議,我打賭我還能夠提出更多。編程

  • 客戶只有看見才能知道他們想要什麼

我從個人第一份工做中學到的。直到你能夠給顧客展現你的產品,不然,他們是不會意識到本身的實際需求的。功能原型老是賽過冗長的話語介紹。安全

譯者注:雖然我不知道我想要什麼,可是你作出來,我就知道我不想要什麼了。服務器

  • 只要有足夠的時間,全部的安全性都會失敗。

當今世界,安全性對於正確性有着極大的挑戰。你必須時刻保持完美,然而黑客只需成功一次即可擊潰你。markdown

  • 考慮到您的安全性終將失敗,後果則取決於你是否提早計劃了這種狀況。

若是你設攻擊者最終會破壞防護,那麼就須要計劃要發生的狀況。若是他們進入系統,單因爲你正確地使用了一些安全手段,致使他們沒法使用所竊取的東西,例如數據庫內通難以辨認,或將服務器彼此隔離,則使這一安全事故上全國新聞的可能性下降。深層防護總會擊敗一些淺層的攻擊。less

  • 良好的安全性不是一項支出,而是一項戰略資產;差的安全性是資產的昂貴代價。

在個人整個職業生涯中,都會聽到人們抱怨正確維護系統安全性是多麼複雜或昂貴,可是一旦失敗,您可能會損失數十億美圓。 爲了節省幾美圓卻輸掉你的公司是真的愚蠢。oop

  • 很難使看起來簡單的事物變得複雜,使看起來複雜的事物變得更復雜倒是垂手可得的。

在編程,設計和幾乎任何創造行爲中都是如此。我一直試圖編寫對我(或其餘人)來講儘量簡單的代碼。若是你嘗試是代碼過於複雜或者太聰明,則其正常工做的可能性就很小。固然,我也看到過一些永久代碼,程序員爲此付出了巨大努力使其變得難以理解。post

  • 成功來源於從錯誤中學習;失敗則是認爲錯誤是正常且能夠容忍的。

我聽到許多人聲稱,因爲編程工做難以持續進行,所以犯錯是正常現象,糟糕的軟件也是不可避免的。人們還學會了忍受爭議,由於他們已經聽過不少次了。可是,做爲程序員,你不該該接受這一點,而且嘗試只犯一次錯誤。最終你只將它們所有作了一次,如今你也可能只製做沒有爭議的軟件,這是一種指望。沒有人是完美的,單至少您須要走在那條路上。性能

  • 惟一不會變化的便是變化自己,並且你不管如何都改變不了。

爲明天的世界作計劃,且認爲它會像今天同樣是很是愚蠢的。尤爲是在編程世界中,沒有什麼是永恆的。勒德派的態度,認爲你能夠阻止變化,但這一觀點是行不通的。

  • 永遠不要中止學習,技術的壓路機就在你身後,隨時等着你停下來。

我最喜歡的比喻是你屁股後面的大滾輪試圖壓倒你。 這是做爲一名程序員維持長久職業生涯的惟一方法,你必須繼續前進。 一旦你休息並以爲你知道了一切,你就會在路上被壓扁。

  • 整個軟件行業都創建在瘋狂的猜想之上。

在個人職業生涯中,全部的人都堅持預估一件事情須要耗費多長時間,不管事件大小,然而每一個人都老是錯誤的。 好久之前,錯誤預言將來的先知被石頭打死;現在他們只是進入下一個 sprint

  • 對你有用,但不必定對我或者樹後的其餘程序員有用。

你在任何軟件項目中均可以作出無數技術選擇。 它們中的一些更優,一些接受程度高,還有一些最糟糕的。 可是適用於你,你的狀況以及你的一系列選擇,可能根本不適用於其餘人。 聽到別人在作什麼老是好的,但我一直不喜歡人們堅持認爲他們所作的選擇是作好某事的惟一方法。

  • 在不斷變化的世界中,最重要的事情是評估。

這並不是對每一個人來講都是顯而易見的,可是可以看到新事物,或看到其餘人在作什麼,或比較多種作事方式,而後爲你、你的團隊、你的項目甚至你的公司作出最佳選擇的能力是很是有價值。 我見過的大多數人都不太擅長這個。 大多數領導人在這方面真的很糟糕。 作別人告訴你應該作的事情,或者你在博客中讀到的東西,或者只是作其餘人正在作的事情,這很容易。 從各個方面考慮而且結合你的需,而後作出當時彷佛最好的選擇,這就困可貴多。 固然,你必須作出一些決定,人們經常由於不得不評估這每每會致使隨機選擇或跟隨羊羣而陷入癱瘓。

  • **給貓剝皮的方法不止一種; 但從貓的角度來看,這可有可無。 **

客戶不在意你的問題是什麼,他們只但願你的軟件完成他們須要完成的工做。 若是你的系統出現故障,發生異常,硬件損壞,程序員很糟糕,黑客在進行黑客攻擊:用戶實際上對它沒有任何興趣。 當事情變得不穩定時誠實是很好的,由於有時的確會發生,但最好在客戶看到你的做品以前,確保缺陷不會長期存在。

  • **質量最好由客戶衡量。 **

不管你擁有多少指標,檢查了多少清單,經歷了多少代碼審查,編寫了多少測試; 除非客戶看到你的軟件作了它應該作的全部事情而且從不作任何不該該作的事情,不然這一切都不重要。 客戶對代碼質量、性能、設計和可用性的見解最終是決定質量的惟一因素。

  • **你不知道的東西會害死你,由於你沒有打印任何日誌。 **

即便在今天,人們仍然沒有收集足夠的日誌、崩潰報告和使用信息來了解他們的軟件正在作什麼,這讓我一直感到驚訝。 不收集此類信息的人老是高估質量。 若是你不測量和記錄,你就不會知道。 客戶固然會知道。 我一直堅持詳細而有用的日誌記錄、跟蹤崩潰、閱讀註釋和註釋以及其餘任何我能夠在問題發生時當即瞭解的信息。 然而我知道有人認爲這些事情與成爲一名程序員無關。

  • 任何事情都會有更好的方法,可是時間在流逝。

評估作什麼最困難的平衡點是什麼時候中止尋找。 可能你會錯過更好的方法,可是若是花費的時間太長,可能沒有其餘理由要作全部事情。 這很難作到正確,但有時今天作出較小的選擇會賽過明年作出更好的選擇。

最後兩個是好久之前和我一塊兒工做的銷售人員的話。 我不徹底贊成,這些屬於教訓。

  • **老是尋找有錢的愚蠢客戶。 **

我在諮詢公司認識的一位銷售人員最喜歡的一句話。 在他看來,找到不懂技術但有不少錢能夠燒的人是母脈。 聰明人問太多問題; 窮人付不起你的錢。 我很高興我是一名程序員!

  • **個人工做是對客戶撒謊,你的工做是讓我看起來不錯。 **

來自同一銷售人員的第二個最喜歡的名言。 他喜歡承諾不可能的事情,而後在咱們真正作到的時候收穫回報。 作有挑戰性的事情很酷,但每次都作不可能的事情太痛苦了。 個人建議是找到一個更好的銷售員!

相關文章
相關標籤/搜索