所有的程序員都會熬夜。
正常的軟件項目中,項目的資源需求會隨著項目的進行逐漸升高,然后在后期迅速的回落,對于程序員和測試來說,主要的工作內容在項目的執行階段,也就是中期到中后期。
我們在計劃項目的時候,自然是不會計劃到加班這樣的事情的,一般都會按照正常的8小時/天的任務來進行排期。但是,項目總是有他的特殊性,例如:客戶要求某個時間節點必須交付,那么工期縮短了,對于項目負責人來說只有三個選擇:要么降低質量標準,要么減少需求,要么加班。
但是,質量是底線,雖然可以降低,但是總有一根紅線不能觸碰,需求是客戶或者產品經理說了算,并不是說砍掉就能砍掉的。所以,大部分時候,經過各種拉鋸戰后,還是只有加班。
對于前端和后端程序員來說,研發的中后期是加班比較多的時候。因為在前期時,產品經理自以為用戶的需求已經挖掘得比較透徹了,研發基本就是按部就班的照著既定的計劃研發,即使出現需求的變化,由于研發才剛剛開始,所以需求變化的代價很少,所以加班時候不多。到了中期和中后期,需求變化的代價越來越大,研發過程中可能發現需求中的一些不合理之處,從而產生了大量的溝通成本和調整成本,這時加班就開始越來越多,這個過程會一直延續到測試階段。
而對于測試來說,只要研發開始大量加班了,就說明產品的質量可能有風險,那么測試階段就沒有好過的。如果情況良好,在測試階段的中期,這個加班情況會有所緩解,但是很多時候,這種加班情況會一直持續到上線前。
所以,沒有熬過夜的程序員一定不是一個好測試。
當然,加班對于程序員來說其實也是一種歷練。曾經我也是比較反對加班的那一類人,能早點溜就早點溜。也有很多人說,加班時候的質量是得不到保證的,加班時候的效率很差等等,我承認,加班做出來的項目質量一定不高,但是個人覺得不是因為加班本身導致的,而是項目緊張到必須趕工的時候,那么一定不可能像不加班時那么的周全,可能單元測試能省就省,設計文檔能省就省,自然就質量差了,這并不是加班的人的原因。
我還記得曾經我在做一個項目的時候,涉及到一個計費的模塊,非常的復雜。有什么基礎套餐,組合套餐,增值服務,還有優惠券、退費、取消套餐、換套餐等等,還需要計算銷售提成這些。財務的要求就是,一分錢都不能錯,而當時套餐有非常復雜的計費限制,就是一部分套餐在換套餐的時候可以把余額退出來抵扣新套餐的費用,一部分不行。而退出來的這個費用需要按天來計費,那么每個月的天數是不同的,如果這個用戶剛好是在1月31日定的套餐,2月27日退是一個價格,3月30日退又是另一個價格,算法十分復雜。(當時的項目經理甚至提出,穆斯林的客戶能否按照穆斯林的日歷來計費)
為了這個計費模塊,我和兩個小伙伴連續熬了幾個夜晚去畫圖、分解,最終是把這個模塊給做出來了,并且分毫不差。而其中工作效率最高的時候就是我們凌晨2-3點的時候,全公司就我們幾個人,在那里肆無忌憚的爭吵、反駁、說出自己的思路。當然,我們得到的也是很多的,至少未來我們再次面對計費的類似模塊時,我們并其他人更有經驗,我們能夠避免很多坑,這些都是我們的財富。
所以,對于那些不愿意熬夜的,想著按時下班,朝九晚六的程序員們,說真的,這個行業不適合你。