霍炬:程序員愛寫腳本是種病

如果你就是程序員,或者你熟悉程序員這個群體,有時候你會發現他們在干一些奇怪的事情。比如說,他們跟你說在寫一個腳本,你問他寫腳本干嘛?他告訴你,這事情重復做太無聊,寫個腳本以后就不用老讓我重復操作了。聽起來很有道理吧?但如果對比一下時間,你會驚訝的發現,他們重復做200次這件事大概總共只需要花...
發布時間:2016/9/16 22:00:20  關鍵字:程序員、霍炬

  如果你就是程序員,或者你熟悉程序員這個群體,有時候你會發現他們在干一些奇怪的事情。比如說,他們跟你說在寫一個腳本,你問他寫腳本干嘛?他告訴你,這事情重復做太無聊,寫個腳本以后就不用老讓我重復操作了。聽起來很有道理吧?但如果對比一下時間,你會驚訝的發現,他們重復做 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 對離職員工談話造假》的問題下面好多答案都變成「:)」了?


  本文來自霍炬的微信公共帳號“歪理邪說”,用微信添加 wxieshuo 公眾號,或掃描二維碼即可訂閱。轉載必須保留作者、公共帳號信息,內容必須與本文保持嚴格一致,不得修改/替換/增減本文包含的任何文字,不得擅自增加小標題、引語、摘要等。本公眾號一切內容禁止摘編、衍生及演繹。

众人帮太赚钱了