【伯乐在线】程序员常有,优秀程序员不常有
本文由 伯樂在線 - 青勁草 翻譯自 www.quora.com。未經(jīng)許可,禁止轉(zhuǎn)載!
歡迎加入:翻譯小組,通過 翻譯頻道 貢獻(xiàn)一份力量。
【伯樂在線導(dǎo)讀】:本文源自 Quora 問答貼《為何沒有更多人從事程序員的工作?》。問題描述:
如今的經(jīng)濟(jì)狀況太槽糕了,很多人都在找工作。與此同時(shí),許多科技公司非??释械匠绦騿T,這活兒報(bào)酬極高還有很多福利。我相信(沒啥證據(jù))有目的地學(xué)習(xí)一年也許能讓你學(xué)會(huì)勝任這些工作的技能。為什么沒有更多的人這樣做呢?供需關(guān)系不應(yīng)該自動(dòng)調(diào)整這種不平衡嗎?
作為我并沒有完全胡說的證據(jù),有人最近做了一項(xiàng)調(diào)查,并且發(fā)現(xiàn)在紐約州對于每個(gè)失業(yè)人員都可以有1.7份 STEM 類*工作。鏈接看這里:http://www.news.cornell.edu/stories/2012/10/support-stem-education-training-teachers
*譯者注:STEM為Science、Technology、Engineering 和 Math 的縮寫,STEM Jobs意為在科學(xué)、技術(shù)、工程、數(shù)學(xué)這些方面的工作崗位。
Brian Feldman的回答:
成為優(yōu)秀的程序員是極其困難的,并且這個(gè)過程不可能一蹴而就。
我們不可能期待去種一些樹,然后一夜間收獲有著2000年樹齡的紅杉樹,無論其需求有多大。
人格特點(diǎn)
一個(gè)人首先得是自學(xué)者來學(xué)習(xí)編程。僅僅是超過你能寫出可用的小程序這個(gè)基本水平,你也需要很多年在實(shí)踐中學(xué)習(xí)一切必要的技能。從沒有人僅通過上課和讀書就成為了一個(gè)卓越的程序員。這通常需要無數(shù)小時(shí)的編程實(shí)踐。并且和普遍流行的觀點(diǎn)相反,計(jì)算機(jī)專業(yè)不是教你編程的,而是傳授理論的。
作為程序員,你必須得有幾乎無盡的毅力來不斷繼續(xù)嘗試調(diào)錯(cuò)、修復(fù)和開發(fā)。堅(jiān)持做到這些的人是需要具備特殊本領(lǐng)的,尤其是當(dāng)你看起來沒有取得任何進(jìn)步的時(shí)候。這是非常需要具備的一項(xiàng)人格特點(diǎn),而沒有這種層次的毅力,足以使大多數(shù)沒有毅力的人遠(yuǎn)離程序員這一職業(yè)。
- 你需要精通數(shù)學(xué)和善于解決問題。編程是解決各種各樣的問題的。
- 你需要有出色的短時(shí)記憶(和長時(shí)記憶)能力,這樣你才能在大腦中像變戲法一樣同時(shí)處理它們,而且你還要記得一個(gè)月前你寫了什么。
- 你需要對事物間如何相互關(guān)聯(lián)的以及如何設(shè)計(jì)優(yōu)良的架構(gòu)有著深刻的了解。如果我在這個(gè)地方改動(dòng)了一點(diǎn),在其他地方可能會(huì)產(chǎn)生什么樣的破壞呢?
- 你需要對細(xì)節(jié)進(jìn)行高度關(guān)注?!敖咏边@一詞在編程中并不適用。在哪兒忘了一個(gè)分號?程序無法通過編譯!錯(cuò)拼了一個(gè)函數(shù)名?你的程序可能在做和你期望中完全不同的事。
不具備以上這些特點(diǎn),足以淘汰多數(shù)人。
Subject Matter 學(xué)科特點(diǎn)
- 你需要對數(shù)據(jù)結(jié)構(gòu)和類的概念有很深入的理解,并且知道何時(shí)以及如何使用它們。
- 你需要熟知一些已經(jīng)開發(fā)出來的函數(shù)庫,這樣才不至于去重復(fù)造輪子。
- 你需要知道大量的基礎(chǔ)(和高級)的算法,同樣才不會(huì)去重復(fù)造輪子。
- 通常你需要知道工作中的硬件的極限,這樣你才可以做類似于恰當(dāng)管理內(nèi)存并且避免耗盡內(nèi)存的事情,又或者合理利用內(nèi)存來消除處理器內(nèi)浪費(fèi)的數(shù)據(jù)傳輸耗時(shí)從而加快處理過程。
到這里你可以寫程序了。好極了!但是你知道什么是包的結(jié)構(gòu),TCP/IP、HTML、CSS、用戶接口設(shè)計(jì),或者數(shù)據(jù)庫嗎?程序不是孤立地運(yùn)行的。
有大量的知識你需要知道,而且它們還在不斷變化!除非是你的主要關(guān)注領(lǐng)域,否則你不可能真正精通它。你不可能是一個(gè)“周末程序員*”。
*譯者注:意為程序員在周末也需要學(xué)習(xí)。
工作/生活環(huán)境
你需要有大塊不被打斷的時(shí)間,這樣你才不至于在編程(和學(xué)習(xí)編程)時(shí)注意力分散。很多人的工作(和家庭)環(huán)境很難提供這一點(diǎn)。電話又響了?好的,你又得花15分鐘來重拾你的思路了。
你經(jīng)常不得不在忙忙碌碌中對一些權(quán)衡利弊做出決定。當(dāng)然,你可以寫個(gè)程序來處理每件事情,但是一個(gè)人又會(huì)有多久才將“0”作為輸入呢*?除此之外,我們跟不上計(jì)劃,更重要的是立馬使得程序啟動(dòng)并且正確運(yùn)行。
*譯者注:這個(gè)問題旨在說明為每件事寫程序意義不大,因?yàn)槭虑橹貜?fù)出現(xiàn)的概率很小。
基于這些,你認(rèn)為是下一種熱門的編程語言也會(huì)過時(shí)并且5年之后沒人會(huì)用它。現(xiàn)在你正在使用下一門很酷的語言,而它很有可能5年之后并不會(huì)被用到。你不得不時(shí)常關(guān)注這些事。
還有管理層面的考慮
程序員經(jīng)常被當(dāng)做工廠工人一樣對待。沒有編程才能(而且很少有商業(yè)頭腦)的人經(jīng)常去負(fù)責(zé)一些項(xiàng)目。他們認(rèn)為程序員就是機(jī)器中的零件。而真相是:程序員是工匠,要從項(xiàng)目中得到最好的結(jié)果,最明智的做法就是去問精通編程的人事情該如何去做!對于每個(gè)最終超出預(yù)算和落后于進(jìn)度的項(xiàng)目,往往是逼迫程序員去花大量沒有補(bǔ)償而且不被欣賞的時(shí)間去發(fā)布一款設(shè)計(jì)和測試都很槽糕的產(chǎn)品。
優(yōu)秀的程序員意識到他們不會(huì)比蹩腳的程序員得到更多報(bào)酬,因?yàn)楣芾砩峡床怀鰠^(qū)別,在此之上還要做出額外工作來彌補(bǔ)低劣程序員的不足。而且優(yōu)秀程序員會(huì)說出事情并且試著去優(yōu)化,這經(jīng)常會(huì)令想要擺脫他們的經(jīng)理生畏(這種常見的就業(yè)趨勢在其他文章中也被討論到)。
夠了,這些就容易明白為什么很多人對程序員這個(gè)職業(yè)感到厭倦,尤其是有大量的其他機(jī)會(huì)時(shí)。而一些甚至是一般般的程序員,只要他們擅長和人交往,就有足夠的本事在其他各種各樣的工作中取得成功。程序員這個(gè)行業(yè)可以很容易換行,而轉(zhuǎn)進(jìn)來卻不同。
優(yōu)秀程序員貌似不太可能隨隨便便去找工作
找程序員容易,找優(yōu)秀程序員不容易。蹩腳的程序員可能一直在找工作。而優(yōu)秀的程序員,如果公司意識到他們是優(yōu)秀的,就該做所有能做的去留著他們,所以他們可能找工作的情況就少多了。而且一旦他們出來找工作,他們就會(huì)很挑剔他們想要工作的地方,而這點(diǎn)也可以解釋為何一些公司聲稱“沒有什么好程序員了-我們能招到的都是蹩足的?!?/p>
記得有個(gè)地方說過,一個(gè)優(yōu)秀的程序員的價(jià)值是一般程序員的好幾倍(見《一些鮮為人知的編程真相》),而蹩足的程序員實(shí)際上還有副作用。對于一般的和蹩足的程序員來說要成為優(yōu)秀程序員真的很難(就算不是不可能)——而且對于一般的初創(chuàng)企業(yè)來說,作為本該專注于快速開發(fā)推出產(chǎn)品的他們顯然不值得這份投資。
轉(zhuǎn)載于:https://www.cnblogs.com/duadu/p/6167299.html
總結(jié)
以上是生活随笔為你收集整理的【伯乐在线】程序员常有,优秀程序员不常有的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hdu 1150 Machine Sch
- 下一篇: C++中的运算符优先级