不知什么時候碼農成為了程序員的另一個代名詞,雖然略含貶義,被大多數程序員用來自嘲,但如果被別人稱為碼農,我想大多數程序員心里必然不爽。然而對大多數處境不太好的程序員,碼農卻是他們生活和工作狀態最真實的寫照,用來形容他們也是十分恰當的。我想之所以稱為碼農應該和農民或是民工有一定的聯系,兩者都是處于金字塔的最底層,一個是從事體力勞動,一個是從事腦力勞動,工作存在重復性,缺乏創造力,對工作缺乏激情,被金字塔上一層的人壓榨著。
碼農的養成主要有兩方面的因素:一是程序員的自我意識;另一個是公司的環境。
自我意識
容易成為碼農的人一般都是比較聽話的,缺乏主見和獨立思考的能力,不思進取。這些人一般都是逆來順受,對公司或領導安排的工作都是無條件去執行的,即便不合理也不會提出異議,不敢站出來反抗的。他們從來不會想著如何提高工作效率,如何提升自己的技術,甘愿在公司混著日子,做一個代碼的搬運工,任勞任怨。可能對他們來講這只是一個工作而已,并非真的喜歡計算機這個行業。他們之所以選擇這個工作,可能是因為聽別人說這個行業工資高。這樣的人用碼農稱呼他們最合適不過了。其實這樣的人無論在哪個行業都是在最底層,都會被叫做X農。
公司環境
相對而言我覺得公司環境更為重要。
一般程序員所在的公司可以簡單分為兩類:技術驅動型和營銷驅動型的。技術驅動型的公司都是非常重視技術和技術人員的,他們愿意花高薪聘請行業里面的牛人,牛人做事的效率和質量自然要比一般人高出一大截,公司做出來的產品自然也是一流的,公司的效益也會因此受益。并且牛人多了會形成一定的效應,會吸引其他牛人,吸引潛力優質的新人,如果管理和培養新人的方式沒有問題,新人會逐漸成長起來,形成一個良性的循環。這些公司一般是互聯網公司,無論是一線互聯網公司還是初創的公司都是對技術非常重視的,和公司差兒不差兒錢沒有多大關系。
而大部分營銷驅動型的公司則缺少對技術的足夠的尊重,大部分碼農存在于這些公司。這些公司的盈利方式大部分靠市場關系拿項目賺錢,這種方式下產品做得好或不好顯得不是特別重要,只要關系足夠硬,只要市場人員拿的到項目就能賺錢,公司就能盈利。這種情況下,公司要想盈利更多,無非是營銷上拿更多項目或是嚴格控制成本。控制成本可能就是縮短研發時間,削減用人成本。一旦縮短研發時間時,項目的計劃安排就不再是根據工作量和研發人員的能力制定的,而是根據這個項目成本要控制在什么范圍內或是營銷人員拍著胸脯給客戶承諾的時間節點。所以當項目經理告訴你這個項目要一個月要做完時,可能的原因就是一旦這個項目用了兩個月時間公司可能就賺不到什么錢了,或者就是營銷人員在客戶面前牛逼吹破了,所以就苦了這些程序員要加班加點的趕進度,為這些人吹的牛逼買單。
在這種性質的項目研發中,工作計劃安排不合理,時間過于緊張。并且一般情況公司都有類似項目的代碼,你不再是代碼的創造者而是代碼的搬運工,大部分是copy其他項目的代碼過來,做一些修改滿足現在的需求,“能用就行”是他們經常說的一句話。緊張的時間沒有給你進行設計和思考的余地,為了追趕進度你只能用最快的實現方式而不是最優的實現方式。長此以往會扼殺程序員的創新能力和思考能力,變成機器一樣的代碼工。最終在經歷無數個日日夜夜的奮戰項目按時實現完成了,大家皆大歡喜。你可以給項目經理一個交代,項目經理可以給公司一個交代,營銷人員可以給客戶一個交代。而你可能還在惦記著項目某個功能實現的方式不是特別好,當時由于時間關系沒有采用最好的方式,然后考慮要不做一次優化,但是對于公司而言做項目重構或是代碼優化不會直接產生任何價值,所以公司是不會給你時間做這些的。而這時候可能項目經理會告訴你有另一個項目,非常著急,要一個月完成.....。這樣雖然你做了很多項目,但其實只有一個項目的經驗,并且還是1.0的經驗。雖然你工作了很多年,實際的工作經驗只有一年。這樣的程序員就可以稱他為碼農了。
在這種公司里面,程序員就好像流水線上的工人一樣,只要成本低能干活就行。公司只要留住幾個核心員工,能夠帶領研發即可。鐵打營盤,流水的兵,你走了很快會有其他成本更低的人頂替你,只要公司的項目能按時交付即可。如果你初入這個行業,代碼量不夠可以考慮去這些公司積累一下代碼量,因為他們要求相對低一些。但如果你對技術有一定的追求,是一個不愿意的將近的人,這樣的公司就不適合長待,除非你甘愿做一個碼農。
牛逼的人可能用碼農自嘲,但大部分人更多是心里的無奈,有時候我們可能改變不了環境,但我們可以換個環境。如果你不愿意將就下去,是時候做出改變了,不要對自己的工作不滿,卻還不愿意去努力改善。多利用自己的業余時間提高自己的技術,早日脫離碼農這個階層。