很多人在寫**的過程中,經常會有的乙個問題就是:為什麼我寫出來的**不能執行?為什麼執行的結果不是我想要的?幾乎所有的程式設計師寫**都不是一遍就能寫好的。但是頂尖的程式設計師非常快的就明白自己**的問題可能是什麼。這是乙個很重要的能力,但是偏偏學校裡不教,面試的時候考官也不經常提及。那麼怎麼去除錯**呢?其實核心就是以下幾個方法:不妨先猜測一下到底發生了什麼。假設你的猜測是對的,想想你的猜測會導致程式有什麼結果。試著觀察這些結果有沒有異常的地方。如果你沒有發現異樣,那麼說明你的猜測就是對的。如果你發現了異樣,那麼說明你的猜測是錯的,接下來換乙個猜測試試。對於頂尖程式設計師來說,這個過程在腦海中就是電光火石的一瞬間。只要你解決的問題足夠多,你做出來的猜測就會越準確。至於如何發現異樣?你就需要有一套自己的工具或者方**了。最簡單的就是在**裡輸出日誌來判斷。但是這是比較笨的辦法,你需要去接觸一些高階的工具或者直接帶有debug功能的編輯器。
最近打敗人類的alphago每天可以進行上百萬局的下棋訓練,我們人類一萬個小時的訓練卻需要10年之久。也就是說,電腦執行幾分鐘,可能就等於人類工作好幾年。曾經在facebook擔任技術總監的bobby johnson描述過,高效率的程式設計師都把時間花在製作工具上。很多人也認為工具是很重要的,但是他們並沒有花時間去製作、整合自己的工具。但是,jonson團隊最出色的員工耗費了他們1/3的時間在工具製作上,這些工具可以用來發布**,監控系統,以及能讓他們花更少的時間去做更多事情。總之,不要花時間去做機器可以代替你去做的事情。
當你在寫**的時候,你很容易就認為只要你按照需求實現了指定的功能,你的**就寫完了。但是這其實只是冰山一角。任何沒有發布到生產環境的**都不會產生任何價值。如果想寫出真正有影響力的**,你需要從整個系統去理解你的工作:你的**和其他人寫的**在功能上是什麼關係?你有沒有好好測試你的**?或者其他人是否很容易測試你的**?為了部署你的**,線上生產環境的**是不是需要改動?新的**會不會影響到已經執行的**?在新的功能下,你的目標使用者的行為是不是你期望的?你的**有沒有產生商業上的影響?這些問題都不是很容易就能回答的,但是在寫**的時候,你需要明白你的**最後會不會得到最好的結果。
頂尖程式設計師與普通程式設計師的區別
普通程式設計師認為自己與頂尖程式設計師的區別,主要是頂尖程式設計師任何功能都能編碼實現,編碼速度快,無 bug。正如一慣的那樣,普通程式設計師之所以普通,正是因為他們勉強能看到 或者根本看不到 事物的表象而看不到本質。頂尖程式設計師專業度 1 精通 除錯 debug 很多人在寫 的過程中,經常會有的...
程式設計師寫好簡歷的五大技巧
作為乙個仍在校的準程式設計師,你肯定幻想過有一天能進入世界級的it公司,發揮自己的技術實力,一步步實現自己的人生理想。想要有 高上大 的工作,首先必須自己要 苦幹練 這點毋庸置疑。但是如何將自己全面地展現給別人,尤其是能反映自己優秀的一面,這或許就需要你能寫乙份生動的簡歷,來告訴你的boss你將來會...
程式設計師考核的五大死因(下)
上次談到 程式設計師考核的五大死因 上 今天我們繼續。考核標準的一相情願 第二個導致考核死亡的原因是,相關方法的制定 標準的出台都只以公司角度為惟一視角,一切服從專案需要 服從公司需要,絕少考核其它因素。所有考核指標都由公司來定,不讓程式設計師參與意見。我就見過這樣的開發計畫 專案組成員工作12 小...