程序員加班的意義
在互聯(lián)網(wǎng)行業(yè)工作過的,肯定都聽過“加班汪”這個詞。而對于一個開發(fā)人員來說,加班的概率比普通工作要更多,加班是互聯(lián)網(wǎng)行業(yè)永遠(yuǎn)的痛,項(xiàng)目節(jié)點(diǎn)定下來后,為保證項(xiàng)目節(jié)奏,程序員們基本上陷入天昏地暗永無止境地加班中。首先,假設(shè)這個程序員是一位職場新手甲。他剛大學(xué)畢業(yè),沒有工作經(jīng)驗(yàn)。來自產(chǎn)品的需求,他要理解很久才能做。然后開發(fā)的過程中會遇到各種問題,如果經(jīng)驗(yàn)不足以支撐他快速完成任務(wù),那么只能求助于網(wǎng)絡(luò),書籍,熟人。如果這些都幫助不了他。他需要求助于同事。但是次數(shù)頻繁,同事會厭倦于幫他解答;他也會羞于咨詢。這時(shí),他一天下來,基本都會卡在一個很簡單的問題上。下班了,他還沒有完成任務(wù)。沒錯,他需要加班了,因?yàn)樗木幊棠芰Ψ浅2睢?/p>大概沒有人會知道他是因?yàn)樾枰幚硪粋€并非高科技的問題。不懂技術(shù)的上司以為他是個勤奮的員工,非常看重他。可是,這什么進(jìn)度還是會這么慢呢?創(chuàng)業(yè)的公司可等不起。這一切,如果招到一個有經(jīng)驗(yàn)的開發(fā)人員,這一切的加班似乎都不需要。好吧,公司開除了這名程序員或者他因“個人原因”辭職了或者公司再招到一個相對有經(jīng)驗(yàn)的程序員乙。當(dāng)然,有經(jīng)驗(yàn)的代價(jià)就是公司要付雙倍的薪水。所有之前的需求在他這邊都沒有遇到過加班的情況。他是一名非常有經(jīng)驗(yàn)的程序員,他在過去的二年時(shí)間一直在處理相關(guān)的開發(fā)工作。到這邊來,所有的問題都是小意思。他的優(yōu)秀表現(xiàn)讓公司驚喜和意外,公司覺得即使再招十個之前的員工也比不過他一個人。所以,雙倍的薪水又有什么呢?一段時(shí)間后,公司開始提各種各樣的需求,他終于開始加班了。加班不是因?yàn)槟扯螘r(shí)間需求的總量多了。而是因?yàn)殡S著公司的快速發(fā)展,需求也越來越多樣化。他的知識儲備不足以令他總能輕松應(yīng)付。他變得和第一個程序員一樣,也加班了。只不過加班的原因不一樣,第一個程序員是因?yàn)橐恍┐a的調(diào)試的原因,而這位有經(jīng)驗(yàn)的程序員是因?yàn)橐恍臎]聽說過的技術(shù)。他的加班讓公司同樣對他很重視,甚至認(rèn)為是一位好伙伴。與此同時(shí),公司在招他的時(shí)候也招進(jìn)來了一名優(yōu)秀的畢業(yè)生。他同樣是一名沒有經(jīng)驗(yàn)的程序員,但是他有很好的學(xué)習(xí)能力。開發(fā)進(jìn)度緩慢讓產(chǎn)品人員和運(yùn)營人員都難以接受。但是他總能在最后關(guān)頭交付代碼,盡管上線后需要修修補(bǔ)補(bǔ)。他經(jīng)常加班來學(xué)習(xí)以便攻克技術(shù)難點(diǎn),公司對加班的員工表示歡迎,因?yàn)闆]有人讓他們加班,也不需要給他們加班費(fèi)或者調(diào)休。公司為所有加班的人員提供良好的晚餐。他可以接大大小小的各種需求,只是,開發(fā)時(shí)間要比較長。但是他不會遇到那種代碼調(diào)試不通過的簡單的問題。相比程序員乙,程序員丙由于經(jīng)常拖慢進(jìn)度經(jīng)常被產(chǎn)品和運(yùn)營建議開除或者調(diào)崗。可是后來,公司對他欣賞有加。原因有二:一是他終于可以用和程序員乙接近的時(shí)間來做任務(wù);二是在程序員乙那里看似不可能的任務(wù),程序員丙總能在最近關(guān)頭給出解決方案和代碼,只是時(shí)間比較長。產(chǎn)品和運(yùn)營的觀點(diǎn)發(fā)生了改變,向公司建議開除程序員乙。程序員丙是一個學(xué)習(xí)型的員工,時(shí)間讓他有經(jīng)驗(yàn)后,他成長成為一名更優(yōu)秀的員工。公司有過教訓(xùn)后,終于不惜花重金去請各種優(yōu)秀的程序員。因?yàn)橹灰幸幻@樣的程序員,就可以少請?jiān)S多敗壞項(xiàng)目的程序員。于是,公司有了程序員丁。他在過去的一段時(shí)間里有著不錯的工作經(jīng)歷,幫助過所在的公司完成了各種重大的項(xiàng)目解決了相當(dāng)多的行業(yè)技術(shù)難點(diǎn)。他的到來為公司帶來了很好的活力,所有之前遇到的問題都不復(fù)存在。他成為了所有程序員的主管。后來,他還是加班了。因?yàn)楣镜牧己冒l(fā)展,于是聘請了更多的產(chǎn)品和運(yùn)營。開發(fā)團(tuán)隊(duì)忙不過來了,他作為主管要求大家一起加班。為了緩解這種局面,他向公司申請?jiān)黾映绦騿T。公司答應(yīng)了并再招了二各分別類似乙和丙的程序員,沒錯,公司不會再招聘類似甲的程序員。團(tuán)隊(duì)不需要加班了。好景持續(xù)不長久,一段時(shí)間后,加班的情況再次出現(xiàn)了,因?yàn)楦偁帉κ值呐?,讓產(chǎn)品和運(yùn)營提出更多的需求。他發(fā)現(xiàn)產(chǎn)品和運(yùn)營的需求源源不斷地輸入??墒怯行┬枨罂赡苡脩粲肋h(yuǎn)用不到或者三天后就變化了。為了解決這種局面,他找來領(lǐng)導(dǎo)和各部門的負(fù)責(zé)人來商討解決的辦法。有人提出走敏捷開發(fā)。公司決定新成立一個小團(tuán)隊(duì)來做測試。于是公司每一個敏捷開發(fā)團(tuán)隊(duì)成立了。時(shí)間證明了,這個新團(tuán)隊(duì)終于可以不加班了。而對需求的完成總體讓產(chǎn)品和運(yùn)營滿意。樂觀的局面總不能持續(xù)很久,因?yàn)榫€上出了一個令用戶急劇下降的bug。他們需要加班通宵,或者回退代碼,或者修復(fù)這個bug。沒有使用很好的版本回退辦法,只能是一場惡夢。持續(xù)集成和自動發(fā)布加入到他們的團(tuán)隊(duì)。沒錯,程序員丁開始在團(tuán)隊(duì)里實(shí)施非常好的項(xiàng)目管理的方案。起碼發(fā)新版后,非工作時(shí)間在線上出bug,任何有權(quán)限的人員都可以輕松地一鍵回退。剩下的,上班再說。這就是我要講的程序員為什么要加班的幾個故事,歡迎各位補(bǔ)充。以后我也會補(bǔ)充更多的故事。其實(shí)所有的后面都不重要,我只希望各位創(chuàng)業(yè)者,在招聘程序員時(shí),避免遇到程序員甲,爭取找到程序員丁。作為開發(fā)人員的我們,也要努力成為程序員丁,保證自己的職場競爭力。還是那句話,軟件開發(fā)不是高科技的東西,這世上并沒有軟件科學(xué)家一說。我們能做的是讓開發(fā)更像一門藝術(shù)。程序員在整個行業(yè)里面,加班是出了名的多。網(wǎng)上很多人都在傳,互聯(lián)網(wǎng)公司程序員的上班時(shí)間是996工作方式,也就是一天的上班時(shí)間是早上的9點(diǎn),下班時(shí)間是晚上的9點(diǎn),每周至少工作六天。所以聽說很多的一些互聯(lián)網(wǎng)公司都爆出了很多加班的文化。經(jīng)常在趕項(xiàng)目的時(shí)候,干到晚上十一二點(diǎn)也不在話下??墒俏覐男袠I(yè)里面了解到。一般公司的程序員加班,都沒有額外的加班費(fèi),即使在沒有加班費(fèi)的前提下,還有這么多公司的程序員,在加班趕項(xiàng)目,奮斗在自己的工作崗位上,這也許很多人就比較奇怪了。但是在我們程序員行業(yè)內(nèi),感覺這是比較正常的事情。大致的原因有以下幾點(diǎn),看看大家是不是也是這樣的情況。這就說到很多人說的一種加班文化,以前在自己剛工作的時(shí)候,可能自己負(fù)責(zé)的工作比較少,做的工作也不是很深入。所以下班的時(shí)候。就不太想加班,并且不知道加班的時(shí)候干什么事情??墒钱?dāng)時(shí)項(xiàng)目組里面的情況是。下班以后基本都沒有人,動起來,準(zhǔn)備下班。每個人還在埋頭苦干。都沒有要下班的意思。自己剛開始的時(shí)候還不是很理解。所以當(dāng)時(shí)自己手上確實(shí)沒有什么緊急的事情。但是還是留下來加班了。為什么呢?只是心里是這樣想的,別人都在這里辛苦的加班。我一個人一下班就走,是不是影響不太好呢?所以糾結(jié)了一下,還是選擇留下來加班。雖然工作上的事情比較少。但我可以用來學(xué)習(xí)技術(shù)知識,提高自己的技術(shù)水平。那一段時(shí)間里面,都一直跟著項(xiàng)目組里面的同事一起加班。當(dāng)然,我們的加班是沒有加班費(fèi)的。從公司的角度來說,我們都是自愿加班的。大家有沒有試過在下班的時(shí)候,到大家都在加班然后自己就不好意思一下班就走了呢?程序員加班很多,確實(shí)是因?yàn)?,?xiàng)目比較多,項(xiàng)目計(jì)劃非常緊,這跟整個互聯(lián)網(wǎng)行業(yè)的節(jié)奏有關(guān)系的?;旧闲示褪墙疱X。很多項(xiàng)目需求比較多,而人手卻比較少。為了趕上我們項(xiàng)目的進(jìn)度。所以就需要經(jīng)常加班加點(diǎn)在加快工作的進(jìn)度。也有一個現(xiàn)象就是,白天上班的時(shí)候,經(jīng)常有各種各樣的會議,需求的溝通。這些會議的溝通是很占時(shí)間的。當(dāng)我們花了時(shí)間去開會議,或者是把一些需求溝通清楚以后。我們的活還沒干完,所以就晚上加班咯。你不加班把這些活干完,那些,我還會一直留在這里。也許明天還會有各種的會議和溝通。那這個活怎么完成呢。這個時(shí)候感覺加班就變得理所當(dāng)然了。所以,這也是程序員苦的一個原因。很多程序員,因?yàn)槠綍r(shí)大多數(shù)時(shí)間都在跟電腦和機(jī)器打交道。并且需要花大量的時(shí)間來,學(xué)習(xí)新的技術(shù),和提升自己。占用了自己的大量時(shí)間。所以有些程序員的社交圈子就比較小了。這樣的人雖然不多,但肯定是有的。如果為什么工作上的事情?讓他們一大早下班,他們都不知道去干嘛。還不如加加班,在公司完善一下項(xiàng)目。特別是一些單身的年輕程序員。以前就聽一個同事說。自己下班以后都沒什么事情可以干。加加班學(xué)習(xí)一下,還感覺到比較踏實(shí)。這樣的人在很多項(xiàng)目比較忙的公司里面是非常受歡迎的。許多公司還需要一些激勵措施才能讓員工自愿的加班。像這樣的員工,他們就會主動的加班。很多公司項(xiàng)目特別忙。雖然不會提倡加班。但是不少公司都會把加班列為一項(xiàng)考核參考。如果加班比較多的話,績效也就相對比較高一些。加班比較少的話,那么績效也會相對少一些。在很多公司里面,這個績效直接影響到我們程序員的項(xiàng)目獎金,或者是年終獎。這個年終獎相信大家都喜歡吧。多加班,多干活就有更多的更多的獎金。那么大家的加班就有了動力。即使平時(shí)加班的時(shí)候沒有加班費(fèi)。但最終會在獎金上體現(xiàn)出來。所以這一部分人為了獎金在加班,就解釋得清楚了。很多程序員都會計(jì)劃好每天的工作內(nèi)容。并且你的每一個工作計(jì)劃都會影響到項(xiàng)目的進(jìn)度。因?yàn)橐粋€項(xiàng)目組可能是很多人在工作,做程序項(xiàng)目是多個人的協(xié)作過程。往往因?yàn)橐粋€人的進(jìn)度延遲,有可能就會影響到整個項(xiàng)目的進(jìn)度。所以很多人如果在今天的工作計(jì)劃沒有完成,是會有壓力的。因?yàn)橛锌赡芘伦约旱倪M(jìn)度拖了整個項(xiàng)目組的后腿,你內(nèi)心是會不舒服的。所以,如果自己的計(jì)劃沒有完成,就會主動的加加班把他完成了,盡量做到今日事,今日畢。我相信上面這些原因或多或少是我們程序員的一些對加班的看法。雖然沒有加班費(fèi),我們也會經(jīng)常加班。但是對于加班這件事情,我認(rèn)為不應(yīng)該一味地加班來解決,而是要讓加班更合理,并且要加強(qiáng)注重工作的效率。如果工作效率不高,加班又有什么用呢?我們應(yīng)當(dāng)盡量避免一些效率地下的工作方式,在工作之余,多注意自己的身體健康,多鍛煉身體。好的身體素質(zhì)對于我們工作效率的提升也是很有作用的。