糟糕程序員和優秀程序員的區別?

程序員 軟件 Stack Overflow 0verflow 程序員精選俱樂部 2017-06-02

軟件蠶食一切,未來屬於程序員。所以人人都想當程序員。但是並不是每個人都能當好程序員。在你做出決定前還是先看看自己能不能當好程序員吧。

要記住的是,編程不是什麼精英才能幹的事情。

這個行業永遠都缺人。所以除非你一點都不喜歡編程,或者也沒有準備好看在錢的份上忍住這種不喜歡,否則都可以來編程。

糟糕程序員和優秀程序員的區別?

如果純以編碼能力來看,可分為五類:

1. 拷貝型

拷貝型選手就是傳說中的“代碼拷貝員”了,他們對實現功能幾乎沒有思路,所作的事情就是從網上或是之前其他團隊成員寫的代碼中拷貝出片段,然後放到項目中,如果運行項目出現了期望結果,則表示任務完成。這類人只會改代碼,卻不會寫代碼。他們大多對編程毫無興趣,只是希望以此餬口而已。

2. 新手型

當產品有功能需求時,由於經驗有限,程序員並不完全知道要如何實現這個功能,需要通過學習、尋找資料等方式來解決問題。這種情況下的編碼過程,程序員的主要目標是“完成功能”,那麼很難有多餘的心思去考慮邊界條件、性能、可讀性、可擴展性、編碼規範等問題,因此代碼bug可能較多,穩定性不高,常常會發生開發花費1個月,改bug卻要改上好幾個月的事情。

3. 學習型

這類程序員對所在領域的語言已經比較瞭解,對於一般功能可以有較為清晰的實現思路,給出需求時可以通過自己的思路來實現,並且會一定程度上考慮邊界條件和性能問題。但僅此而已,他們對可讀性和可擴展性考慮很少,也沒有項目級別的考慮,主要是希望通過實現代碼來練手或是學習。

4. 實現型

這類程序員一般有較為豐富的經驗,由於寫得太多,因此不再追求“創造代碼”來進行學習,同時對所在領域可能涉及的很多第三方框架或是工具都比較熟悉,當接受到產品需求時,對功能實現方案已經瞭然於胸,因此他們可以快速的實現需求,並且對邊界、性能都有一定程度的考慮。

糟糕程序員和優秀程序員的區別?

優秀程序員的幾個表現:

1、先進行實驗是他們的本能反應

編譯器和運行環境通常能比人更快地解釋一個問題。一個優秀的程序猿在拿著問題去向別人尋求幫助之前,會自己試試看並判斷方法是否有用,而不是直接找一個高級程序員問“我這麼做有用嗎?”。

2、對待代碼和設計不要情緒化

代碼就像紙巾:它有用你就用,沒用了就扔掉。幾乎我們所有人都認為代碼複用( code-reuse )很重要,儘管確實如此,但是這也不意味著要像養孩子那樣去對待代碼。代碼沒有感覺也不會在乎,它們會像法蘭克斯坦( Frankenstein )怪物那樣攻擊你。代碼只是一堆字節,是一種責任( liability )。

3、對編程有激情

很多程序員幹這一行只是為了掙錢,如果有更好的職業,他們會毫不猶豫的辭掉程序員的工作。而優秀的程序員熱愛編程,喜歡鑽研代碼中的問題,他們感到能指揮電腦來幫助人們和自己解決現實生活中的問題是一種神奇的能力。當遇到問題無法解決時,他們會茶不思、飯不想,無法入睡。

4、君子善假於物

優秀的程序員知道如何能更高效的完成任務,如何更能有效的解決問題。當遇到問題時,不鑽牛角尖,善於利用外部工具解決自己的問題,特別是能熟練應用搜索引擎。初級的程序員只會使用百度和百度知道搜索問題,而高級的程序員/優秀程序員使用谷歌和Stack Overflow或者MSDN forums這類網站尋找更優秀的答案。

糟糕程序員和優秀程序員的區別?

5、不斷學習

我們生活在一個有趣的時代。隨著軟件開發逐漸遍佈全球各地,你會發現有很多人都可以幹你的工作。所以你需要不斷學習以保持競爭力。否則,你就會落伍,停滯不前,直到有一天,這份工作不再需要你,或外包給一些更廉價的勞動力。

那麼我們能做些什麼?有些僱主很慷慨,會提供培訓以拓寬你的技能。也有的人會說我沒時間或者沒這個資金去接受任何培訓。所以,關鍵是要擺正心態,學習是對自己的負責。

6、不要害怕破壞東西

每個具備行業經驗的程序員肯定參與過代碼庫岌岌可危的項目。系統很糟糕,並且改變這邊總是會破壞另一邊不相關的功能。每次添加模塊,程序員只能想著儘可能少地改變代碼,每次發佈都膽戰心驚。這座軟件的摩天大樓隨時有坍塌的可能。之所以改動代碼會如此傷腦筋是因為系統太糟糕了。但是即使你知道系統出了問題,卻又因為投鼠忌器,而不得不聽之任之。

要成為優秀的程序員(geek),都是自己一步一步努力的結果,從不吹噓自己多麼多麼能幹,多麼多麼 NB,他們很低調,甚至有時候有點悶。請謹記:

素質高:他們都有較高的的思想道德素質,說話談吐都很舒服,不帶髒話,雖然有點屌絲;

邏輯思維:理工科的男生思維都比較活躍,清晰;寫代碼之前都理清實現的原理再下筆;話說我們這還有個清華的女程序員,做事超級認真,職業素養非常高,程序都是一次性通過很佩服;

注重細節:代碼縮進,變量命名,標點符號都需要做到規範,便於後期維護以及改版等等;

注重安全開發:程序員開發的代碼不出現 bug 肯定是不可能的,除了修復 bug,一定要注意安全技術;

效率:不做無用功,碰到不能解決的問題,自己解決,不能解決就主動問,汲取教訓,收穫經驗;

耐心:需求改變或者程序錯誤都需要靜下心來不停的調試錯誤以及修改;就算有時候做自己不喜歡的事情,你也要堅持,也許會的達到意想不到的收穫

另外還有一點可以通過自身的學習來獲取一大進步。

分享給超過5萬的程序員朋友下載,這次我把所有乾貨重新梳理精簡,免費給大家 。

糟糕程序員和優秀程序員的區別?

究竟有哪些乾貨呢?先給你們一個目錄:

糟糕程序員和優秀程序員的區別?

獲取方式:

免費獲取資料途徑:共眾平臺 “程序員編程”。(你懂的)

相關推薦

推薦中...