爲什麼許多公司都對程序員不太好?

有人在 Quora 上提了這樣一個問題:Why does it seem that so many companies treat programmers so poorly? 爲什麼看起來許多公司對程序員都不太好?許多具有多年軟件研發經驗、團隊管理經驗的程序員、技術經理給出了各自的回答。InfoQ 也採訪了多位國內的技術高管,試圖對這一問題進行深入剖析。

程序員的價值很難被量化

Clayton Badeaux 是一位具有 20 多年經驗的軟件工程師和架構師。他有着管理和技術兩方面的背景,在他看來,這個原因更多與程序員的價值很難被量化有關。

如果我跑去市場部,並對他們說:“給這個功能一個銷售增長預測”,他們會給出固定的時間和收入,比如 15 萬 / 年。然後我拿着同一個功能跑去問程序員:“開發這個功能需要多少時間?”在好的情況下,他們可以在幾周或幾個月內做出來。但即使在給定的時間和預算內把功能做出來,也未必能夠滿足市場部給出的預期。但市場部不會因此受到責備,在企業主看來,功能是程序員交付的,如果銷售不如預期,多半是程序員的錯。

這個觀點非常形象地解答了現階段軟件工程師在企業內的困境。

另一個關鍵問題是,程序員的薪資很高。在企業主眼裏,他們通常並不關心公司的業務發展,而是把一半時間花在了軟件運營上,還有另一半時間用來添加新功能。在他們看來,程序員只不過是 IT 的延伸,但 IT 卻是企業主最不喜歡的燒錢“無底洞”,因爲 IT 預算會一直增加。他們並不知道只有通過擴展 IT 才能帶來業務的增長,他們只知道花在 IT 上的錢一天比一天多。

另外在他看來,企業主們最不喜歡或者說最提防程序員的一點是:假如你讓程序員過得不開心了,他們分分鐘走人都算好的了,甚至可以把你的業務給攪黃了(刪庫跑路警告)。

他指出,企業主對研發工程師們的看法,跟汽車製造商對機械工程師的看法是一樣的。任何行業內拿着高薪資、坐在辦公室裏的人員都不那麼被老闆們所喜歡。如果你問企業高層,他們是否在軟件開發和 IT 上花了很多錢,他們更可能會跟你吐苦水而不是炫耀自己的研發投入。

他認爲,企業主之所以不喜歡程序員,通常是因爲難以在企業和程序員之間建立價值聯繫。事實上,程序員是一種有價值但難以量化的資源,也很難使用類似的產品來替代。如果公司對程序員不好,他們就不會對公司忠誠。對於公司來說,程序員是巨大的風險,但也是公司的重要資產。

對於企業主來說,程序員是最讓他們頭疼的人,也難怪他們會不喜歡程序員。但企業主卻別無選擇,他們不得不去招聘程序員,對他們好,這樣他們才能知道你想要什麼,把你的需求轉化成軟件,避免讓你更頭疼。

不過反過來也是一樣的。對於程序員來說,企業主也是讓他們最頭疼的人。因爲他們覺得企業主無法理解程序員的工作,不知道如何最大化他們的價值。

企業管理層的偏見

James English 是一位從業多年的軟件研發人員,做過多年的經理和程序員。他是這樣看待這個問題的:

很多管理者——特別是公司的高管,認爲 IT 部門是公司燒錢的無底洞。但這與事實有很大的偏差,這也反應了很多管理者的執念和偏見。公司高管認爲自己比公司的其他員工更有價值,能夠給公司帶來更多的收入。但說實話,管理層本身才是公司燒錢的地方。

編程和軟件工程是需要高技能和注意力高度集中的職業。要想精通這些技能需要多年的學習和實踐,通常需要犧牲大量的個人時間來更新技能和學習最新的技術。如今,對於大多數公司來說,即使它們不銷售軟件產品或者服務,如果沒有 IT 部門,也很難發展得很好。在某些方面,IT 是現代企業的支柱,它爲每一個部門提供服務和支持。這個觀點也與目前的中臺概念頗爲吻合。

有些管理工作也需要高度集中的注意力,有些還需要很多技能才能做好。與軟件研發技能所不同的是,很多管理技能都是可以在工作中學到的,是每天例行公事並從導師那裏獲得建議的自然結果。有些人會閱讀管理類書籍,有些人則不會。然而,管理工作並不像大多數 IT 工作那樣需要持續不斷的高強度技能和知識積累,(在很多情況下) 也不需要犧牲大量的個人時間。

他表示並不是要詆譭管理這一職業。他曾經也是一名經理,管理工作給他帶來了很多挑戰 (和壓力)。他指出,管理層將 IT 看作是燒錢無底洞,並對程序員的薪水虎視眈眈恨不得攔腰砍半,這很不公平。

他舉了一個例子,相信這個例子很多程序員也都有過類似經歷:

當我還是一名程序員的時候,我記得有一位客戶 (另一家公司的經理) 表示,他不相信完成一項特定的軟件開發任務需要超過一天的時間。他的原話是:“不就是敲幾下鍵盤的事嗎?”不幸的是,抱持這種態度的人比你想象得要多得多。現在仍然有很多管理人員認爲軟件開發是一種流水線式的工作。他們沒有意識到這些工作需要多少技能、創造力和學習 (官方的或非官方的)。雖然這種情況正在好轉,但在很多公司裏這仍然是個問題。

同樣的工作也分三六九等

Richard Leddy 是一位具有超過 35 年編程經驗的軟件工程師和顧問。他認爲同樣的軟件研發工作也是有等級之分的,當你作爲合同工、正式員工和顧問時,遇到的是截然不同的對待。

舉一個例子,在很久以前 (大概在 80 年代) 我認識一個人,他在舊金山的一家銀行做軟件開發,工作上受到了非常嚴格的控制。與此同時,該銀行聘請了一名顧問與他做同樣的工作。顧問賺了更多的錢,想什麼時候來就什麼時候來,並且對事情的進展有一些發言權。這名顧問還獲得了更多的尊重,但他卻一無所有。

另一個例子:我曾經在舊金山一家著名的遊戲公司做合同工。這家公司將合同工視爲二等人。如果公司有聚會,你必須佩戴工牌才能參加。漂亮的姑娘們高昂着頭,在派對上與帥氣的小夥子們親切交談,她們惡狠狠地看着那些被拒之門外的合同工。這家公司創造了一種勢利文化。可想而知,後來這家公司的規模縮小了不少。

他表示,很多人對於技術工種天然就抱着這樣的態度。在他曾供職的公司裏,漂亮的女接線員根本瞧不起他,認爲他只是一個給她們開發系統的程序員。她們打扮得花枝招展,鶯鶯燕燕,在休息的時候抽着煙,當作爲程序員的他經過時還會說一些嘲諷的話。企業的文化都是上行下效的,當企業的高層們不重視程序員時,你也就沒法指望其他部門對於程序員有多少尊重。

在他成爲一名顧問以後,他發現企業主們關於薪酬的諮詢更加“誠實”。許多企業高管具備非常強烈的自我意識,並認爲程序員不需要得到多高的報酬。他們認爲自己光靠四處走動、自我感覺良好就能獲取自己所需、高出別人一等的能力與價值。他的建議是,程序員們在籤合同的時候找一個律師,以避免自己的利益受到損害。

警惕被更廉價的外包所取代

Charles Luck 的整個職業生涯都貢獻給了華爾街的投行,他是一位有着 30 年大型機開發經驗的 57 歲大齡程序員。

起初,他所在的團隊有超過 500 名程序員,平均年薪超過 10 萬美元,再加上健康福利、帶薪假期、人壽保險等等,薪資成本支出之巨可以想象。

後來,公司內部有人表示要擺脫大型機。這個人讓麥肯錫做了一項調研,然後“退休”或解僱了 400 名程序員,成功把部門、成本縮減到了一定規模,最終這個人成了公司的 CIO。

剩下的 100 名程序員需要做原先 500 名程序員做的工作,爲此他們度過了 10 年的不眠夜(加班)。到最後,部門裏留下的全是廉價且能力一般的印度程序員。他們負責運行的系統處理着數十億美元的交易。

他拿親身經歷舉了個例子:

在公司高層的眼裏,我是一名 57 歲的老程序員(年齡大、薪酬高、性價比低)。最近公司在印度的班加羅爾招聘了 40 名新程序員,幾天之後,他們把我叫到辦公室,說我的職位被取消了。新招的程序員在印度遠程辦公,都不需要爲他們辦簽證。簽好協議後,我拿着遣散費(或者什麼都不帶)就回家了。

他用自身經歷告訴其他程序員,無論你在什麼公司工作,無論你認爲自己的公司有多好,都要小心。公司對股東負有受託責任,在你上頭的那些人只關心自己的利益。程序員變得越來越便宜了,所以請把自負放在一邊。大型機程序員的短缺現在由印度人補上,印度在大量培養能夠用 COBOL 編程的高中畢業生,壟斷了這個市場。我們(美國的大齡程序員)已經流離失所了。

如果你剛好到了 50 歲的坎,而且沒有工作,就會受到年齡歧視。一些過濾算法甚至會直接將你的工作申請過濾掉。各種權威人士會告訴你,重新定義自己,學習一些新的東西。但在學成之後,你又大了兩歲,成爲了這個新領域的入門級的申請人。祝你好運!

飽和競爭、能力不足都是原因

作爲一名工作時間超過 40 年的軟件研發人員,Matthew Park Moore 的觀點更爲中正。他認爲公司對程序員不好的原因有很多。

有很多公司對所有人都不好,並非只對程序員不好。

有些程序員善於抱怨,有些聳人聽聞的故事只是他們爲了泄憤而捏造出來的。

第一,這與金錢有很大的關係。當你不得不花高價聘請一名程序員時,你會想辦法節省開支。一個簡單的辦法就是要求程序員每週工作 80 小時,感覺就像用同樣的錢招到了兩個程序員 (但事實並非如此,不過經理們可以自欺欺人一陣子了)。

程序員是難以管理的一個羣體,很多人對權威不屑一顧。大多數程序員都認爲自己很聰明,他們必須自信、不墨守成規、善於進行橫向思考,這樣才能做好編程工作。

第二,編程工作是很難被安排的。程序員通常會花幾周時間診斷一個 bug,然後修改一兩行代碼就可以把它修復。有時候,他們會花幾個小時診斷一個 bug,然後得出結論:需要重寫整個系統。沒有人能對成本或交付日期做出可靠的估計。你怎麼可能對老闆這樣說:“我每年需要一千萬來開發一個系統。我不知道確切需要多長時間,也不知道是否會成功。”

第三,競爭很激烈。現在每一所大學都有計算機系,每個學院每年都有數百名計算機應屆生畢業。他們當中有很多人能力不足,只能接受廉價的工作。因此,公司會僱傭這些人,或者至少利用他們來威脅有經驗的程序員。

第四,軟件開發行業需要天賦。沒有天賦的人會奮鬥得很辛苦,而且通常不能成爲成功的程序員。大學裏沒有人會告訴你這些,但沒有這些天賦你也能拿到計算機學位。因此,這些新手在放棄並轉行之前,都會在一些編程崗位上掙扎,最後走向失敗。他們的怨恨是可以被理解的,他們傾向於指責公司對他們不好。

軟件行業競爭很激烈,很少有公司能夠很悠閒地開發軟件。新的財政年度即將來臨,如果你沒能趕上,競爭對手就會。管理層除了從程序員身上榨取更多的勞力外,幾乎沒有別的辦法。

大多數經理不是程序員出身,也不懂編程。大多數升到管理層的程序員在這方面做得也並不好。因此,軟件公司往往管理不善。

大多數經理都沒有意識到對系統做出一些變更將會帶來怎樣的影響。對系統的一些更改看起來微不足道,但可能需要重寫所有東西。經理想要的東西看起來很簡單,所以它必須是簡單的,如果有程序員說做不到,那說明他能力不夠,或者他不誠實。如果你不瞭解細節,並且已經因爲上面的一些原因開始憎恨程序員,就會很容易相信這是事實。

中國公司怎麼看

針對這個話題,InfoQ 採訪了國內一些技術團隊的負責人,針對類似問題出現的本質、程序員的價值該如何衡量、程序員在什麼情況下會感到不被重視、技術團隊如何避免類似情況發生做了諮詢。

黃勇,特贊 CTO,InfoQ 簽約作者:

程序員待遇一般,往往是因爲公司的業務一般。反過來說,公司業務增長和收入提升,程序員待遇也會同步提升。我認爲,程序員不僅需要關注技術本身,也要關注技術如何支撐業務得到更好的增長。

不能帶來業務層面收益的程序員,可從對技術團隊自身所產生的貢獻角度來衡量,比如,針對一些技術攻堅或流程優化等工作,爲團隊提高工程效能,具體說來,可從當前現狀如何,具體解決了什麼問題,未來提升到怎樣的水平,這些方面加以評估。

程序員感到被冷落,有兩方面原因造成,一是程序員的自身價值難以釋放,同時業務對技術價值無感知,二是大量程序員聚焦於技術本身,而對業務缺乏更多的關注。所以說,一方面需要讓業務更多的瞭解技術,讓業務感知技術的價值,另一方面需要激勵程序員深入業務,並靈活選擇合理的技術去支撐業務。

我們會將程序員分成兩大類:一類是專家型程序員,讓他們組建成「技術委員會」,負責技術整體架構和研發流程,以及對技術團隊提供能力輸出;另一類是業務型程序員,讓他們深入業務,並帶領項目團隊,按照技術團隊所制定的技術規範和流程進行高效研發,同時爲業務帶來直接支撐。

郭煒,易觀 CTO,TGO 會員:

程序員的待遇是和他給公司帶來的價值相關,如果程序員只把自己定義”碼農“,那麼他的待遇一定是一般的,因爲這和施工人員沒有區別。如果想提高自己的待遇,那麼程序員除了自己的工作,要從”前臺“來看,利用後臺的編程能力完成前臺的需求。這也就是最近”中臺“這麼火的原因,我的觀點是未來的”中臺工程師“是最值錢的,因爲他們對業務有深入的理解,利用後臺的技能高效地完成了”前臺“的業務。整體來講,待遇不是公司給的,是自己“掙”出來的。

程序員覺得受到了冷落,大部分是因爲程序員成爲了“碼農”,每個程序員做的事情和本人對業務的理解以及業務結果都沒有關係。程序員缺乏對業務的理解和影響力,這種情況讓公司覺得這些人是可替換的,所以被“冷落”,因此很多時候換一個更便宜的技術對公司沒有任何影響。要解決這個問題,就要程序員做到業務裏去,對業務深刻理解,而不是寫了程序就完了,對於這個程序對業務的影響,業務當中的作用,如何更好地提高業務有更好的想法。這樣,程序員纔可以得到公司的重視。程序員不要把自己當做“後臺”,應該把自己當做“中臺”,思想應該在“前臺”,落地在“後臺”。

我非常認同亞馬遜的“Working Backward”的程序員文化,所有的程序員做的事情是要和最終某個業務掛鉤的,建立起掛鉤關係是技術管理者的的職責。不一定是收入或者活躍用戶這樣的指標,而是和這個功能的留存、使用率這樣的產品指標。將產品指標作爲橋樑,再變成 CEO 和合夥人可以理解的業務指標。具體可以參考極客時間《技術領導力 300 講》相關課程。建立起可衡量的技術價值,是技術管理者的職責。

易觀的技術團隊理念是“未來科技開箱即用”,既要重視先進性技術,又要”開箱即用“。在這個思路下,整體架構上是”一橫 N 縱“,一橫是技術管理以及工程院,這個組織開發最新的技術賦能給各產品縱線,每個程序員是要看技術的先進性以及建立的技術門檻被產品線使用的情況。N 縱是多個產品線,每個程序員都會扛產品使用的指標,快速和產品、運營一起成長起來。這也是易觀從一個傳統公司升級爲技術公司的祕訣之一。從公司角度來講,也非常理解每一個程序員崗位給公司的價值,根據技術、業務角度也可考覈可衡量每一個程序員的價值,讓每個程序員都有活力做自己想做的事情。解決技術問題,不要用技術角度來考慮,從管理、架構的角度來解決這個問題是正解。

池建強,極客邦總裁,Mactalk 公衆號作者:

我認爲程序員是這個時代很好的職業,從最現實的薪酬角度來看,跟很多行業相比,互聯網行業依然是高薪行業。比如前不久獵聘發佈的 2019 年一季度中高端人才報告中的數據就顯示,互聯網行業中高端人才的平均年薪從 2018 年同期的 20.65 萬元同比增長到了 23.42 萬元,位居全行業第二,僅次於金融行業。

當然,現在的經濟形勢下,程序員的薪酬開始迴歸理性,不像前兩年那樣,人工智能和區塊鏈領域的工程師動輒百萬年薪。即便如此,程序員依然稱得上是一個高薪職業,並且,優秀程序員的薪酬上限非常高。一個建築設計行業的總工程師,每年風裏雨裏,工地奔波,年薪也就 50 萬,院長乾脆限薪 80 萬,你們感受一下。但是在互聯網行業,一個好的技術人員年薪可以做到一百萬甚至幾百萬,如果運氣好公司上市了,成爲億萬富翁也是可能的。你身邊或者你的前輩中應該有不少這樣的例子。

在產品、技術、數據和算法主導的互聯網領域,大部分好公司都是極其重視研發力量的。工程師在公司的地位也很高,看看華爲阿里騰訊這樣的頂級公司,無論是研發投入,還是工程師的薪酬,包括他們承擔的職責,完全不會有冷落和不受重視的感覺。什麼公司會出現這種情況呢?對技術力量沒有認知的公司,比如認爲流量比產品更重要,營銷大於技術,只想收割用戶而不想提供優質服務的……這樣的公司也很難長久。

不過各家公司的業務和基因不同,有的公司更重視設計,有的是產品主導,有的奉行工程師文化,有的則更注重營銷,在這些公司裏,程序員受重視的程度是不同的,但不至於到冷落的地步。如果一家公司不重視技術,作爲程序員,還是遠離爲妙。

程序員的價值體現其實是很容易衡量的,他們研發的底層技術服務是不是穩定高效,基於底層服務構建的產品是不是好用,bug 是不是少,功能豐富不豐富等等,這是最直接的價值體現,也是程序員的本職工作。如果公司基於這個產品獲得了直接的商業價值,比如賺了幾個億,那程序員肯定是功不可沒,這是他們商業價值的體現。

如果公司並沒有基於這個產品賺錢,比如一個服務是免費的,但是通過免費服務獲得了其他的商業收入,類似廣告,商務項目等的功能,那就是程序員的間接價值體現。沒有這些技術人,商業本身就是無本之木,無水之源。

如果一個公司的業務因爲產品爛技術差,造成損失甚至倒閉了,這是程序員的問題。如果程序員根據公司的業務需求完成了產品構建,最終業務方向或戰略出了問題,其實和技術人員也沒什麼關係。

極客邦本身就是做技術社區,爲技術人提供產品和服務的,所以我們從構建研發團隊之初,就非常重視工程師文化。工程師對技術和產品的參與度很高,加上我們本來就做技術社區、極客時間、技術大會等,技術福利和溝通討論的機制也很好。整個團隊又秉承了極客邦公開透明、誠實正直、樂於服務的企業文化,導致這個團隊一直維持了非常好的工作效率,技術過硬,能打硬仗,能夠承擔重要的任務。

我非常高興能和這樣的團隊一起戰鬥和生活。

Q 言 Q 語時刻

各位程序員朋友,你認爲這個問題成立嗎?在你看來,有此一問的深層原因是什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章