程序員常有,優秀程序員不常有

jopen 10年前發布 | 7K 次閱讀 程序員

原文  http://www.techug.com/good-programmer-lack

成為優秀的程序員是極其困難的,并且這個過程不可能一蹴而就。

我們不可能期待去種一些樹,然后一夜間收獲有著2000年樹齡的紅杉樹,無論其需求有多大。

人格特點

一個人首先得是自學者來學習編程。僅僅是超過你能寫出可用的小程序這個基本水平,你也需要很多年在實踐中學習一切必要的技能。從沒有人僅通過上 課和讀書就成為了一個卓越的程序員。這通常需要無數小時的編程實踐。并且和普遍流行的觀點相反,計算機專業不是教你編程的,而是傳授理論的。

作為程序員,你必須得有幾乎無盡的毅力來不斷繼續嘗試調錯、修復和開發。堅持做到這些的人是需要具備特殊本領的,尤其是當你看起來沒有取得任何進步的時候。這是非常需要具備的一項人格特點,而沒有這種層次的毅力,足以使大多數沒有毅力的人遠離程序員這一職業。

  • 你需要精通數學和善于解決問題。編程是解決各種各樣的問題的。
  • 你需要有出色的短時記憶(和長時記憶)能力,這樣你才能在大腦中像變戲法一樣同時處理它們,而且你還要記得一個月前你寫了什么。
  • 你需要對事物間如何相互關聯的以及如何設計優良的架構有著深刻的了解。如果我在這個地方改動了一點,在其他地方可能會產生什么樣的破壞呢?
  • 你需要對細節進行高度關注。“接近”這一詞在編程中并不適用。在哪兒忘了一個分號?程序無法通過編譯!錯拼了一個函數名?你的程序可能在做和你期望中完全不同的事。

不具備以上這些特點,足以淘汰多數人。

Subject Matter 學科特點

  • 你需要對數據結構和類的概念有很深入的理解,并且知道何時以及如何使用它們。
  • 你需要熟知一些已經開發出來的函數庫,這樣才不至于去重復造輪子。
  • 你需要知道大量的基礎(和高級)的算法,同樣才不會去重復造輪子。
  • 通常你需要知道工作中的硬件的極限,這樣你才可以做類似于恰當管理內存并且避免耗盡內存的事情,又或者合理利用內存來消除處理器內浪費的數據傳輸耗時從而加快處理過程。

到這里你可以寫程序了。好極了!但是你知道什么是包的結構,TCP/IP、HTML、CSS、用戶接口設計,或者數據庫嗎?程序不是孤立地運行的。

有大量的知識你需要知道,而且它們還在不斷變化!除非是你的主要關注領域,否則你不可能真正精通它。你不可能是一個“周末程序員*”。

*譯者注:意為程序員在周末也需要學習。

工作/生活環境

你需要有大塊不被打斷的時間,這樣你才不至于在編程(和學習編程)時注意力分散。很多人的工作(和家庭)環境很難提供這一點。電話又響了?好的,你又得花15分鐘來重拾你的思路了。

你經常不得不在忙忙碌碌中對一些權衡利弊做出決定。當然,你可以寫個程序來處理每件事情,但是一個人又會有多久才將“0”作為輸入呢*?除此之外,我們跟不上計劃,更重要的是立馬使得程序啟動并且正確運行。

*譯者注:這個問題旨在說明為每件事寫程序意義不大,因為事情重復出現的概率很小。

基于這些,你認為是下一種熱門的編程語言也會過時并且5年之后沒人會用它。現在你正在使用下一門很酷的語言,而它很有可能5年之后并不會被用到。你不得不時常關注這些事。

還有管理層面的考慮

程序員經常被當做工廠工人一樣對待。沒有編程才能(而且很少有商業頭腦)的人經常去負責一些項目。他們認為程序員就是機器中的零件。而真相是: 程序員是工匠,要從項目中得到最好的結果,最明智的做法就是去問精通編程的人事情該如何去做!對于每個最終超出預算和落后于進度的項目,往往是逼迫程序員 去花大量沒有補償而且不被欣賞的時間去發布一款設計和測試都很槽糕的產品。

優秀的程序員意識到他們不會比蹩腳的程序員得到更多報酬,因為管理上看不出區別,在此之上還要做出額外工作來彌補低劣程序員的不足。而且優秀程序員會說出事情并且試著去優化,這經常會令想要擺脫他們的經理生畏(這種常見的就業趨勢在其他文章中也被討論到)。

夠了,這些就容易明白為什么很多人對程序員這個職業感到厭倦,尤其是有大量的其他機會時。而一些甚至是一般般的程序員,只要他們擅長和人交往,就有足夠的本事在其他各種各樣的工作中取得成功。程序員這個行業可以很容易換行,而轉進來卻不同。

優秀程序員貌似不太可能隨隨便便去找工作

找程序員容易,找優秀程序員不容易。蹩腳的程序員可能一直在找工作。而優秀的程序員,如果公司意識到他們是優秀的,就該做所有能做的去留著他 們,所以他們可能找工作的情況就少多了。而且一旦他們出來找工作,他們就會很挑剔他們想要工作的地方,而這點也可以解釋為何一些公司聲稱“沒有什么好程序 員了-我們能招到的都是蹩足的。”

記得有個地方說過,一個優秀的程序員的價值是一般程序員的好幾倍(見《 一些鮮為人知的編程真相 》),而蹩足的程序員實際上還有副作用。對于一般的和蹩足的程序員來說要成為優秀程序員真的很難(就算不是不可能)——而且對于一般的初創企業來說,作為本該專注于快速開發推出產品的他們顯然不值得這份投資。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!