霍炬:程式設計師愛寫指令碼是種病

霍炬發表於2016-09-16

本文來自霍炬的微信公共帳號“歪理邪說”

如果你就是程式設計師,或者你熟悉程式設計師這個群體,有時候你會發現他們在幹一些奇怪的事情。比如說,他們跟你說在寫一個指令碼,你問他寫指令碼幹嘛?他告訴你,這事情重複做太無聊,寫個指令碼以後就不用老讓我重複操作了。聽起來很有道理吧?但如果對比一下時間,你會驚訝的發現,他們重複做 200 次這件事大概總共只需要花一個小時的時間。但寫這個指令碼反而得寫 5 個小時。以這個職業之外的人看來,這絕對是有病,完全不可理解,讓你重複幾次能死人嗎?

重複幾次應該不會死人。但是程式設計師這個職業存在的目的就是最大化的利用機器,通過自動化來完成工作。外行人往往覺得程式比較神祕,但實際上,程式的本質就是驅使機器去替人幹活。如果不考慮規模和管理成本以及速度,沒有什麼程式能幹人不能幹的事情,只是機器需要 5 秒鐘,換成人力勞動需要 2 年和 500 個人參與,後者通常是社會無法負擔的成本,所以我們需要程式來替代這種工作。所以程式設計師難以忍耐低效重複的工作,並以改變這種低效重複為目標。一個程式設計師可能會花比親自重複勞動更多的時間去寫一個指令碼代替自己,通常是因為:

  1. 現在需要重複 2 次,也許過幾個月我還要重複 2 次,再過幾個月還要重複 2 次
  2. 我可能一輩子就重複做 2 次這件事,但其他人是不是也要重複做 2 次

於是寫完這個指令碼之後,程式設計師們就會通過開源把它貢獻出來,這些是對整個行業的積累。

到現在,程式設計師們可以輕鬆在網上找到各種開原始碼,挑選合適的拼裝起來再加上修改,快速完成自己的工作,這種工作方式的變化是技術行業近年來最大的變化之一。今天在這個領域最耀眼的成就是什麼呢?是容器和 DevOps。從自己部署伺服器到在雲中使用 Docker,這一條技術路線是無數不願意重複完成簡單工作的程式設計師構建起來的。他們把自己完成的指令碼貢獻出來,經過各種彙總,抽象提升,製作出新的工具,給更多人用,接受更多人的貢獻,最終讓整個行業的技術水平大大提升了一步。

一個好的程式設計師應該是“懶惰的”,他懶到不願意親自重複做同樣的事情 3 次,這才能在這個基礎上創造出更好的工具。

是的,我想說的就是阿里的指令碼搶月餅事件。這件事讓人們分成了兩派,一派是瞭解程式設計師並且清楚事情細節的,這類人得阿里過分了,程式設計師沒做錯什麼。另外一部分人要麼對技術不瞭解,要麼對事情不清楚,他們覺得程式設計師這樣投機取巧是不可原諒的,開除的好。這裡面事情的細節是:他們並不是通過什麼特殊的手段搶到的月餅,只是在瀏覽器裡面寫個指令碼,讓瀏覽器自動去點選提交,以替代親自盯著螢幕按滑鼠的工作。如果從這個角度看,我覺得很容易得到一個結論:這種做法沒什麼不合理的。對於普通人,在判斷這件事之前,首先要明白這幾個程式設計師的做法對普通人有沒有什麼危害。他們的行為沒什麼過分的,不是黑客,不是攻擊,沒有窺探普通人隱私,沒有利用漏洞獲得利益,不會動你銀行帳號上的錢也不會盜你郵箱密碼…不要對程式設計師心懷恐懼或充滿神祕,大多數程式設計師只是在幫助構建你們享受的這個高度自動化的社會而已。

如前所述,技術行業發展到今天,一個程式設計師可以通過一個指令碼,驅動上萬臺伺服器運轉,也可以通過一個指令碼調集資源,完成單靠人力需要幾萬年才能完成的工作,自動化程度已經高到如此地步了,一個指令碼可以翻天覆地、排山倒海。但是你讓一個程式設計師去盯著螢幕,點幾百下滑鼠,就為了搶一盒月餅。這不僅不合理,甚至可以看作對技術行業的侮辱。

如果非要談公平,我們必須認識到一個事實,就是秒殺這樣的模式絕對不可能公平,如果要公平,最簡單的辦法,是收集所有想要月餅的人,通過抽獎來決定誰可以買。(當然程式設計師可能會要求 review 抽獎程式程式碼^_^)但是活動主辦方並沒有採用這樣的模式,而是採用秒殺模式。在上班時間,讓數萬員工盯著螢幕看著時間,點幾百下滑鼠,請問這總共要浪費多少人,多少工作時間,開展這樣的活動竟然是符合公司價值觀的,這讓我非常困惑這家公司的價值觀到底靠譜不靠譜。何況,在秒殺的那個時間,有人工作不太忙,有人非常忙,讓這兩種人一起秒殺,對於忙碌的人公平嗎?有人正在開會,有人正在見客戶,他們顯然沒法去參與秒殺,這對他們公平嗎?更奇怪的是,工作時間非常忙的人是為了公司在努力,不忙的人是工作量不飽和,結果這個符合公司價值觀的活動客觀上竟然懲罰了這些為公司工作更努力的人,利於那些渾水摸魚有空在工作日下午點幾百下滑鼠的人。這也太詭異了吧?說到這裡,如果你實在接受不了程式設計師沒事愛寫指令碼是個好的職業習慣這個想法的話,也可以稍微退一步,認為這是一種職業病,原諒他們吧。

再換個角度看。假如說一個團隊的小領導,手下有 5 個人,他自己很想搶月餅但是需要開會,沒法搶,於是告訴手下 5 個人,你們搶的時候幫我也搶一下。神不知鬼不覺的,他動用了 5 個人幫他搶月餅。這樣相對於那些普通員工,只能自己親自搶的人公平嗎?再考慮有人反映快有人反映慢,有人喜歡玩及時戰略遊戲,多年遊戲之後,點滑鼠手速快過普通人一倍,這讓他和大家一起人肉點滑鼠秒殺,對其他人公平嗎?所以創造不公平的並不僅僅是利用技術手段的程式設計師。有人利用管理結構,有人利用職業特徵,有人利用自己的特殊技能,在這個本來就不可能公平的遊戲裡面比別人稍微走的快一點。這怎麼就成了違背公司價值觀,值得被開除的大事?

上個月發生了一件有意思的事情,可以和這件事相比。是魁北克技術移民開放名額,一共 5000 個名額,在固定時間讓全球希望移民的人開始搶名額,也是秒殺。最終有幾十萬人蔘與,可想而知秒殺場面之慘烈。我知道很多人付錢給中介,中介會幫助安排儘量多的人幫忙搶,增加命中率。而我一位朋友的朋友,寫了一個指令碼,動用了幾十臺伺服器,順利搶到了一個名額。在搶名額的活動中,有人利用權利,有人利用錢,有人利用人情和社會關係,有人利用技術 。這算不算公平的遊戲?顯然不公平。但它是不是魁北克政府希望的?我和幾個朋友討論,都認為這恰恰是他們的目的。無論你通過什麼手段,利用什麼資源,在這種局面上搶到了名額,恰恰證明了你有基礎的法語能力,和比較好的社會生存能力,無論這種生存能力是通過技術還是通過資源、社會關係、錢表現出來,這都是他們希望接受的移民。相比之下,美國移民有一種叫做“樂透綠卡”的玩意,那就是純靠抽獎,這種做法的目的是增加人種多樣性。所以,搶月餅活動的目的是什麼呢,是希望公平還是希望不公平?從事後人力資源部門公佈的公開信上看,他們在乎的是公平。那麼我只能說,策劃這個活動的人根本沒想清楚,他們設立了一個不公平的規則,反而希望獲得公平,這顯然是不可能的。如果非要有人因此承擔責任,我覺得這個活動策劃者應該承擔主要責任,而不是這 5 個程式設計師。

這幾個程式設計師的具體做法有沒有違背職業道德?我看也沒違反職業道德。阿里發的公開信強調他們是安全部門的員工,似乎暗示他們通過系統漏洞得到了好處。但事實上他們只是在瀏覽器裡面寫一個指令碼。這種級別的指令碼是任何人都可以完成的,它不需要學幾年寫程式,不需要數學,不需要了解系統,甚至不需要學習使用開發工具,因為這本來就是瀏覽器提供的功能。任何一個員工,無論是否寫過程式,只要想學,花上半個下午就能掌握這個技能,以後就可以隨手寫個指令碼讓瀏覽器替他完成這種枯燥的重複重新整理工作。從這個角度看,使用指令碼搶月餅這件事,對於所有人都是公平的,對於程式設計師確實稍微容易一點點,但也並不是得天獨厚非他不可的技能。

什麼是公平?對那些無法通過努力改變或提升的屬性的保護才是公平。比如我們無法改變膚色,無法改變種族,無法改變年齡,無法讓殘疾人恢復正常,對這些群體應該公平對待,這是社會公認的原則。但是對一個並不需要多困難就可以掌握的技能,至於提到公平這個高度嗎?再看一個例子。前幾天 G20 期間,馬雲是中國企業家裡面最風光的人,他和加拿大總理杜魯多的對話幽默風趣,吸引了很多關注,並且也取得了巨大的談判成果。為什麼馬雲可以成為媒體焦點?除了 G20 開在杭州,近水樓臺,還有一個重要原因是馬雲和杜魯多可以直接聊天,談笑風生,其他企業家英語沒有這麼好,給他們這個機會,也需要通過翻譯間接低效交流,沒法和馬雲這樣輕鬆風趣的和外國首相聊天。那麼其他企業家是不是也應該去抗議這種行為,認為馬雲講英語是對其他人不公平?是不是也應該禁止馬雲說英語,無論英語有多好,必須和其他人一樣通過翻譯完成溝通,這樣才算對大家公平?

這顯然是不對的。如果你聽過馬雲的英語演講,我相信你和我一樣震驚。馬雲應該是我知道的中國企業家裡英語最好的人。他不僅語言流暢,用詞精準,更強大的是完全沒有口音。做到這件事太難了,別說英語,看看周圍有多少人能說標準的不帶口音的普通話就明白了。很多移民了幾十年的人,英語表達可以和母語一樣好,但他們仍然無法擺脫口音,更別說馬雲根本沒長時間在國外生活過,能做到這樣簡直是不可思議。我想馬雲一定是付出了常人難以付出努力才做到這樣的。其他人沒有在這方面付出和他一樣的努力,自然英語不會說的和他一樣好。在這種見外國元首的場合,馬雲比別人吸引更多的關注,獲得更大的成果,這是他努力的結果,無關於公平。對於這些程式設計師也是這樣的,他們能如此僅僅是因為比別人在這方面付出更多的努力。如果認為程式設計師會寫程式就叫不公平,那麼英語好也不公平,做市場銷售職業的人待人接物更得體,容易給人留下好印象,這也不公平…這社會上不公平的事情未免太多了。

當然,阿里巴巴做為電商和金融領域的公司,對公平和安全特別介意,尤其特別希望使用者相信這家公司在意公平和安全,這可以理解。但是這種公平和安全應該通過制度來體現,而不是價值觀。價值觀是不可靠的,只有通過制度才能約束人的行為,這是人類社會歷史已經證明的事情。那些把價值觀放在嘴邊的公司,倒是很令人不放心,這通常說明了他們在制度上並不完善,這才需要通過強調價值觀,靠“人治“來彌補制度的不完善。不信的話,可以去看看全球清廉指數國家排名,然後再去查查哪些國家經常喜歡講反腐敗,看看這些國家是不是在排行榜上倒數幾位。越是腐敗的國家越喜歡反腐,越是制度不完善的國家越喜歡談價值觀。我不信 Google 或者蘋果沒有腐敗,但他們有完善的制度保證,最大限度保證了人員難以有腐敗的機會,如果萬一有,也有司法流程處理。這是公司自己的事情,沒必要跟使用者成天宣稱我們價值觀堅定,我們反腐。那本來就是企業制度中正常的一部分,制度有了漏洞修補漏洞就是了,不用靠宣傳價值觀和使用者證明自己有多努力。

阿里巴巴有讓技術人員擋槍的傳統。還記得前不久阿里 HR 給離職員工寫假評價時間嗎?事件曝光之後,公司對 HR 只是警告,但反而重罰 IT 系統開發的程式設計師。和這件事如出一轍,HR 永遠是符合價值觀,永遠沒有錯,錯的永遠是別人。另外,這家公司幾年前提供搶火車票的瀏覽器外掛,春節的時候提供微信搶紅包外掛…這些事情他們都沒覺得影響社會公平,等自家程式設計師搶了幾個購買月餅的名額,還自己立刻告知了相關部門並未造成實際損失(注意是購買名額而不是搶到就給免費月餅),公司突然板起臉來講起了公平的價值觀。這臉變的是不是有點過快了?

當然了,開除程式設計師這個行為本身,我倒是沒什麼不贊同的。社會上程式設計師這麼緊缺,阿里人才濟濟,大概是不怎麼缺人,最好多多開除一些,最好能開除上幾百個,給其他公司一些機會。這也算是對整個產業的一點貢獻,值得鼓勵。

參考備註

  • 標題圖:Image used under Standard license from Shutterstock.com (這張圖是我們付費購買的,符合我要求的轉載可直接使用它)
  • http://tech.163.com/16/0914/17/C0UM2I3L00097U7R.html 阿里程式設計師被開除企業價值觀能作為解聘理由嗎
  • https://www.zhihu.com/question/30336208 為什麼《如何評價阿里 HR 對離職員工談話造假》的問題下面好多答案都變成「:)」了?

相關文章