IT 行業(yè)的工資是否虛高?
外界對(duì)程序員的印象就是坐在電腦前面寫(xiě)程序。甚至有人問(wèn)過(guò)我“真的有那么多程序要寫(xiě)嗎”這樣的話??傮w來(lái)說(shuō),大多數(shù)做程序員的都是幫著公司開(kāi)發(fā)一個(gè)產(chǎn)品。這個(gè)產(chǎn)品按平臺(tái)分的話可以是一個(gè)網(wǎng)站,可以是一個(gè)手機(jī)APP,可以是傳統(tǒng)的桌面程序,也可以是嵌入式系統(tǒng)的軟件部分等等等等。但不管是什么,所有產(chǎn)品開(kāi)發(fā)都要經(jīng)過(guò)以下主要流程:
產(chǎn)品設(shè)計(jì) -> 技術(shù)構(gòu)架 -> 進(jìn)度計(jì)劃 -> 產(chǎn)品開(kāi)發(fā) -> 產(chǎn)品測(cè)試 -> 運(yùn)行與維護(hù)
而程序員,特別是經(jīng)驗(yàn)豐富的程序員幾乎會(huì)參與到每一個(gè)步驟中。所以很多程序員既要會(huì)寫(xiě)文檔會(huì)畫(huà)流程圖,還要會(huì)和客戶打交道。
1、產(chǎn)品設(shè)計(jì)
根據(jù)市場(chǎng)或者特定客戶確定這個(gè)產(chǎn)品應(yīng)該滿足哪些需求,然后轉(zhuǎn)化為一個(gè)明確的需求文檔。有了這個(gè)文檔,程序員才知道要開(kāi)發(fā)什么,怎么樣才算開(kāi)發(fā)完成,交付檢測(cè)的時(shí)候也才有依據(jù)。
雖然編寫(xiě)需求文檔不是程序員的工作,但是資深的程序員在這個(gè)過(guò)程中要給出很多建議,特別是在開(kāi)發(fā)復(fù)雜度上。有些開(kāi)發(fā)難度太大、用時(shí)需要很久的功能和需求會(huì)被去掉。毫無(wú)疑問(wèn),開(kāi)發(fā)復(fù)雜度精確的估算對(duì)于在最短時(shí)間內(nèi)交付一個(gè)擁有***用戶體驗(yàn)的產(chǎn)品至關(guān)重要,而這些是需要豐富經(jīng)驗(yàn)積累的。
所以程序員收入包括了這部分經(jīng)驗(yàn)值的錢。
2、技術(shù)架構(gòu)
接下來(lái)就要根據(jù)需求文檔設(shè)計(jì)整個(gè)系統(tǒng)。簡(jiǎn)單來(lái)說(shuō)就是根據(jù)產(chǎn)品特性,選擇合適的技術(shù)解決方案。這又是一個(gè)需要豐富開(kāi)發(fā)經(jīng)驗(yàn)才能完成的活兒。
往往即使一個(gè)簡(jiǎn)單的前端加后端的應(yīng)用,也是由十幾個(gè)子系統(tǒng)構(gòu)成的。而每個(gè)子系統(tǒng)都有幾種甚至十幾種技術(shù)可以選擇,系統(tǒng)之間的數(shù)據(jù)傳遞模式又有很多選擇,還有開(kāi)發(fā)工具又有很多選擇。
比如前端框架選什么,load balancer選什么,服務(wù)器選什么,數(shù)據(jù)庫(kù)選什么,開(kāi)發(fā)語(yǔ)言用什么,repository選什么,API的訪問(wèn)流程是什么等等等等。這些隨便舉的其實(shí)都是很基本的東西了,其實(shí)很多更實(shí)際也更復(fù)雜的問(wèn)題也需要考慮,比如安全性上的,比如系統(tǒng)升級(jí)會(huì)造成的影響等等。
這個(gè)過(guò)程中需要寫(xiě)很多文檔,記錄每種技術(shù)stack的優(yōu)劣,畫(huà)很多的系統(tǒng)示意圖和流程圖,要和不懂技術(shù)的管理和設(shè)計(jì)人員溝通。
所以程序員收入包括了這部分知識(shí)值的錢。
3、進(jìn)度計(jì)劃
這部分一般也有專門的項(xiàng)目經(jīng)理負(fù)責(zé),但和產(chǎn)品設(shè)計(jì)類似,程序員一樣要給出很多的建議。這個(gè)時(shí)候一般技術(shù)構(gòu)架已經(jīng)完成,可以給出更為精確的開(kāi)發(fā)周期的預(yù)估。但畢竟是預(yù)估,還是需要豐富的經(jīng)驗(yàn)才能做到盡量準(zhǔn)確。這個(gè)進(jìn)度計(jì)劃是否靠譜、有多重要就不用贅述。
4、產(chǎn)品開(kāi)發(fā)
這個(gè)步驟才是大多數(shù)人對(duì)程序員的印象。但即使是開(kāi)發(fā),也不是簡(jiǎn)單的坐在屏幕前敲敲代碼。現(xiàn)在主流的Agile開(kāi)發(fā),每天要開(kāi)早會(huì)匯報(bào)進(jìn)度,每個(gè)兩個(gè)星期(或者別的周期)都要開(kāi)會(huì)確定下個(gè)周期的具體開(kāi)發(fā)任務(wù),評(píng)估開(kāi)發(fā)任務(wù)的工作量,并分配開(kāi)發(fā)任務(wù)。
開(kāi)發(fā)的時(shí)候也是經(jīng)常碰到技術(shù)問(wèn)題需要和別的開(kāi)發(fā)人員討論,需要和設(shè)計(jì)人員、管理人員、項(xiàng)目進(jìn)度人員保持溝通。每個(gè)月一般還需要做個(gè)成果演示讓管理層清楚進(jìn)度。然后在開(kāi)發(fā)過(guò)程中經(jīng)常會(huì)要用到新的技術(shù),所以也經(jīng)常需要花時(shí)間去學(xué)習(xí)補(bǔ)充。
所以程序員收入包括這部分基本技能值的錢。
5、產(chǎn)品測(cè)試
傳統(tǒng)的軟件開(kāi)發(fā)經(jīng)常有專門的測(cè)試人員,但現(xiàn)在互聯(lián)網(wǎng)企業(yè)越來(lái)越多的DevOps,就是一個(gè)人做了以前的開(kāi)發(fā),測(cè)試和運(yùn)維三個(gè)人的活(好吧,其實(shí)是一種變相剝削,因?yàn)殡m然工資高了但也沒(méi)有三個(gè)人加起來(lái)的工資高)。
測(cè)試也是要寫(xiě)很多代碼的,因?yàn)楝F(xiàn)在都是自動(dòng)化測(cè)試。然后測(cè)試也是要寫(xiě)很多文檔的,所謂test cases,基本上和需求文檔是對(duì)應(yīng)的,就是一個(gè)checklist,看看是不是需求都開(kāi)發(fā)出來(lái)了且達(dá)到標(biāo)準(zhǔn)了。所以你看,程序員除了會(huì)寫(xiě)電腦語(yǔ)言也還是經(jīng)常要寫(xiě)人話的。
所以程序員收入包括這部分額外任務(wù)的錢。
6、運(yùn)行與維護(hù)
Again, 本來(lái)有專職人員做的事,很多程序員現(xiàn)在也得做。這部分包括寫(xiě)一些腳本或者用軟件收集系統(tǒng)數(shù)據(jù),各種系統(tǒng)日志,然后生成一個(gè)有各種圖表的控制面板,方便查看系統(tǒng)運(yùn)行狀態(tài),還要設(shè)置各種超出合理范圍值就會(huì)觸發(fā)的警報(bào),這種警報(bào)往往和手機(jī)甚至BP機(jī)相連,就算是夜里也會(huì)把人給鬧醒,然后就得爬起來(lái)解決問(wèn)題。
所以程序員收入也包括這部分辛苦錢。
如此幾何式高速發(fā)展的IT產(chǎn)業(yè),人才根本就跟不上,供需關(guān)系決定了IT行業(yè)的工資只會(huì)越來(lái)越高。當(dāng)然,這是對(duì)于跟得上IT發(fā)展腳步的人才來(lái)說(shuō)的。
IT是一個(gè)必須不停地學(xué)新技術(shù)的行業(yè),因?yàn)榘l(fā)展地太快。現(xiàn)在最主流開(kāi)發(fā)框架,各種云端的技術(shù),新的編程語(yǔ)言,老的編程語(yǔ)言的新特性,各種輔助開(kāi)發(fā)和部署的工具,各種運(yùn)維的工具等等等等沒(méi)有一個(gè)是10年前就出現(xiàn)的,很多都才出現(xiàn)了五年,但已經(jīng)取代了更老的技術(shù)。
所以能在IT行業(yè)干了八年十年還沒(méi)被淘汰的,至少都是很努力的人,和很多在傳統(tǒng)行業(yè)里幾十年都吃著大學(xué)里學(xué)的那一點(diǎn)東西的老本的人相比,他們配得上這份工資。