為什么程序員普遍是男生?
要想成長為一名優秀的
程序員
,其過程是艱巨的,其道路是漫長的。不經過悉心栽培,
花兒開
不出鮮艷的花朵;不經過時間的歷練,幼苗長不成參天大樹。在軟件行業更是如此。程序員必須具備的性格特點
最基本的要求是能自主地編程。只有在經過多年的學習實踐之后,我們才能超越寫一些簡短程序的基礎水平。而僅靠上課或者看書是做不成能力卓
群的程序員的,不斷的練習和實踐才是唯一的正途。學校中那些所謂的CS程序課其實并不涉及如何編程,它主要教授的是理論,這和很多外行人的想法相悖。作為一個程序員,還得有執著鉆研的精神,能做到不懈地排除故障、開發軟件和修復bug。特別是某個階段經常會有毫無進展的感覺,而這個時候唯有堅忍不拔的品質才能支持我們排除萬難
再接再厲。這也是一道門檻,將很多不具備這一品格的程序員攔之門外。擅長數學,善于解決問題。編程就是解決問題的過程。有很棒的短期(和長期)記憶能力。這樣就能在大腦
中同時處理多個事情,并且記得月前自己寫過什么代碼。超強的理解能力。理解事物是如何相互作用
的,理解為什么這么設計和架構的原因。關注細節。在編程中真正演繹了什么叫做細節決定成敗
的真理。在某處忘寫了一個分號?程序就不會編譯!拼錯了某個函數名?那你的程序的運行結果可能就會與你原先設想的大相徑庭。上述性格特點方面的要求就像
大浪淘沙
一樣會淘汰掉很多人。程序員必備的主要技能
深刻理解數據結構
和類,知道什么情況下以及怎么運用它們。熟悉已經開發完成的庫,這樣就可以站在巨人的肩膀上,不必重新浪
費時間了。熟悉各種基礎和高級的算法,理由同上條。了解硬件的原理,這樣就能正確管理內存避免內存溢出,或者正確消除無關數據以加快處理進程。當然還得會編程。最好知道數據包
格式、TCP/ IP、HTML、CSS、用戶界面設計和數據庫等,因為程序不能孤立運行。我們需要學習很多東西,但是還有一點,你必須謹記在心,事物是在不斷變化發展的。我們只有專心致志竭盡全力地學習,才有可能在這一行出人頭地大放光彩。三天打魚兩天曬網
,是行不通的。程序員的工作和生活環境
安靜,不被打攪的環境。當我們在編程或者學習編程的時候,一旦中斷,想要重拾思路并不是那么容易的。比方說,手機響了,然后你可能要花上15分鐘才能繼續沿著原先的思路走。但是很多工作和家庭環境
都很難提供這樣的條件。能在忙碌中權衡輕重
然后做決策。當然你也可以為每一種情況單獨寫一個程序,不過這不大現實,所以要有側重點。再則,當落后于進度時,最好能快速實現程序并運行起來。最最重要的一點,編程語言
的流行時間是5年,5年之后,你看好的語言可能就沒人用了。我們得與時俱進。管理問題也是重中之重
很多管理人員將程序員當做工廠工人一樣對待,很多并沒有編程天賦和商業能力的人站在了項目責任人的位置上,在他們眼中,程序員就像機器上面的齒輪一樣,干的事情毫無
技術含量
。一旦發現項目超出預算或者落后于計劃進度,就要求程序員無償加班,結果往往只能是出來設計拙劣測試不完全的產品。事實上,程序員是技術人員,要是你想得到關于項目的明智建議,那么請教專家級程序員才能得到最棒的結果。由于某些管理層辨別不了程序員之間的優劣,所以有能力的人就會發現他們做的貢獻更大但是得到的薪酬卻沒有更多——最重要的是,他們總是要做更多的工作以彌補拖后腿的那些家伙。而當偉大的程序員提出建議以望改進的時候,那些管理層則會覺得這是在對自己權威的挑戰,而會選擇“
除之而后快
”。這種情況舉不勝舉。這也是為什么很多優秀人才不愿意待在這一行業的原因——特別是在有其他就業機會的情況下。而且做程序員很能鍛煉人,哪怕是最普通的,轉行之后也能干的
風生水起
。真正優秀的程序員不喜歡隨便跳槽
找程序員很容易,但要想發現優秀人才就很難了。劣質的程序員似乎總是在找工作,而優秀者,只要這家公司能發現他們,肯定會不惜一切代價留住他們,所以他們不會去頻繁找工作。而當他們去
找工作
的時候,大多規劃長遠,所以會顯得很挑剔——這就是為什么很多公司都會不約而同地表示“沒有優秀程序員可用
”的原因——因為找到的盡是些“普通貨色”。正如有句話說得好,優秀程序員的價值是
普通程序
員的幾倍,而劣質程序員則是負值。要想將普通和劣質的程序員改造成優秀人才,其道路不可謂不艱辛,不可謂不險阻,甚至幾乎是不可能的——自然也不值得任何初創公司在他們上面進行投資
了。