程序員高手和菜鳥的區別是什麼?

程序員 OmniFocus 離散數學 軟件 程序員精選俱樂部 2017-06-07

程序員的價值絕對不在於技術本身,而在於做出好用且好看程序的能力,這是一個開放性的話題,每一個人都是菜鳥過來的,希望每一個做技術的小夥伴都能儘快成為高手。

程序員高手和菜鳥的區別是什麼?

什麼是菜鳥程序員、什麼是程序高手,我想他們之間區別體現的最直接的一點那就是工資。可能從事同一個崗位、花了同樣的時間,但是最後得到的薪酬卻天壤之別。

程序員高手和菜鳥的區別是什麼?

1、代碼的展現,網絡的應用

展現題目:一個很小的功能,比如說一個當鼠標移動到一個標題下,在下面顯示其可選菜單。

“菜鳥”程序員的代碼是什麼樣子,自己想一下。“菜鳥”程序員的代碼往往會會寫的比較冗餘,而且這些代碼不是從書上找來的就是從網上找來的還有可能就是自己會這一部分代碼(僅存記憶的提取,真正的原理似懂非懂,好像霧裡看花)。

“大神”的代碼會寫成什麼哪?“大神”程序員的代碼,當你看的第一眼:簡潔;第二眼:真“N”。用最少的代碼,把這個程序寫的非常精闢了,體現的自己的思維思路。

為什麼會出現這樣的現象?

同樣一個小的功能,放在不同的手裡就產生不同的結果。這個難道不值得我們去探究原因嗎?

真正的原因是:“菜鳥”程序員沒有將自己的思維融入代碼,代碼是程序員思維智慧的結晶。當我們拿到這一個小功能的時候,我們首先一看,這方面的知識自己準備不足,於是就上網找去了。

2、基礎紮實

技術知識決定一個人能做的技術的層次。基礎的知識有計算機組成原理、計算機操作系統、網絡原理、數據庫原理、計算機圖形學、編譯原理、數據結構、離散數學、人工智能等等很高深的理論知識。

在這些基礎知識之上,就是軟件開發語言、類庫、框架,面向過程、面向對象、面向服務等編程思想,架構思想等等。

這些知識不一定會影響你現在的工作,但一定會影響到你的格局,那格局肯定也會影響到你自身的發展。我碰到過有些理論很差的人,但技術在公司內也是有些影響力的,因此,他們對技術原理就很不屑,甚至為自己不懂太多理論而擅長實戰而沾沾自喜。

3、善用工具

工具能解決的事情就用工具去解決,好的工具能節約大把的時間用在更有意義的事情上。

工具的範疇很廣,比如linux的各種命令、比如團隊內部的各種系統、比如順手的應用、甚至包括上下班騎的自行車。只要能節約時間、提高效率,那就值得一試。

在這裡我列舉幾個大幅度提升了我的效率的東西:

  • 雙屏顯示器

  • 順手的鍵盤

  • google(不是baidu!不是bing!)

  • mac

  • mac上的應用:idea、alfread、omnifocus、甚至synergy和istats menus之類跟開發本身關係不大的應用。

我更傾向於把“使用工具”作為一種生活態度:是否希望讓自己的生活專注於有意義的事情。如果你認同這個觀點,那麼想一想投入和回報比例,還是很可觀的。

4、社交併建立聯繫

無所事事的時候不要將你寶貴的時間浪費在辦公隔間裡,也不要裝古代小姐自以為矜持不和團隊以外的人說話。如果還有其他實習生,也可以去找他們聊聊。在工作之餘也應該建立自己的社會關係,建立自己的關係網。瞭解他們喜歡做什麼,在哪裡畢的業,以及正在搞什麼項目。其中也會有一些剛從學校出來的開發菜鳥,他們非常願意和你在吃飯的時候談天說地,回答你提出的問題。你永遠也不會知道,這些關係的價值有多大,將來能派上什麼用場。總之,現在你要做的就是,交些朋友,特別是如果你到了一個新的地方。

5、豐富的想像力

不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重要。

程序員高手和菜鳥的區別是什麼?

6、只看技術水平並不夠

對於技術水平高但在領導力和交際能力方面都缺乏經驗的人,不能直說“在我們這裡你達不到高級程序員的標準”,這話太刺耳了。但對於他在團隊中能承擔的責任來說,我們可以暫時評訂為中級,等他把另一方面或者兩方面都提高了之後,我們再把他提升為高級。

很多公司只根據技術水平來做判斷,但這樣對於我們這種小型的而且非常依賴合作模式工作的公司來說行不通。其實我非常擔心那些只衡量技術能力的公司是認可“孤獨的天才開發者”這樣的危險想法的,覺得一個人技術水平高,就想當然的認為領導力和交際能力也很好。

在大公司中每個人都只負責一小部分工作,我非常樂於見到他們分享對於“高級程序員”的定義,那應該會在技術和非技術的方面都更加全面,讓我們工作得效率更高,尤其是在需要與客戶打交道的團隊裡。

7、成為高級需要多久?

“高級程序員”是不是就意味著“若干年的經驗”?事實上我並沒有看到過哪個人不用五年就可以成為高級程序員的。要在很短的時間內就把一些特質發展得非常好來在某一方面達到高級水平其實是非常困難、甚至不可能的,更別說在多個方面全部成為高級了。

而且“五年經驗”並不一定要意味著“五年的軟件開發經驗”。如果一個人已經在領導力和(或)交際能力上滿足了條件,那他只需要提升技術能力,就已經可以發揮高級程序員的作用了。

我們招聘的“祕密武器”很大程度上源於我們觀察到的事實:對於具有領導力和交際能力的人來說,要再提升技術能力並不需要很多時間,反之則不然。我見過很多這樣的人,從代碼集訓營中出來兩三年後就已經成了非常好的高級程序員。

8、實踐、實踐、再實踐

有很多原則和道理我們聽過無數遍,但是從來沒有去實踐。如果不經過幾十萬行代碼的錘鍊。很難達到一個高度。外部環境的支撐很重要。但是,如果沒有這樣的機遇,就需要我們創造條件去尋找。高級程序員會不停的實踐,總結,再實踐。如果覺得有用,請看這本書。

程序員高手和菜鳥的區別是什麼?

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

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

程序員高手和菜鳥的區別是什麼?

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

程序員高手和菜鳥的區別是什麼?

獲取方式:

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

相關推薦

推薦中...