我們這樣定義「更好」:工作速度更快,產生的bug更少,**更具可讀性、邏輯性和可維護性。
程式設計師不是砌磚工人,但他們往往被當成是砌磚工人。 (我並不是說歧視這些職業)
「為什麼我需要高階程式設計師,要知道同樣的薪酬我可以僱兩個初級的了?」
「這個功能乙個程式設計師做需要三個月的時間,那就只需要再加兩個,就可以在乙個月內搞定了。」
為什麼說上面的想法很荒謬?因為我們沒有一種簡單又有效的方法來衡量程式設計師的生產力。一旦碰到我們無法衡量的東西,我們就會忽略它。
我這樣問你好了:你是願意讓兩個新手來照顧你的寶寶,維修你的車,給你做腰椎穿刺,還是寧願找乙個資深的?
如果你一定要比較的話,那麼其實程式設計師更像是作家。
有些作家寫出的東西能數以百萬計地賣出去,而有些作家寫出來的東西無聊至極最後只能用來燒火用!
但是,他們都生產出了一本書,因此,他們都是作家。可是除非你去閱讀他們的書,否則你就不會知道他們倆的差別。
下面我給你講乙個真實的故事。(有關名字已作更改。)
一家軟體公司需要在他們的標誌產品中實現乙個新的模組。mr lousy(差先生)剛好有空,於是就將這個任務交給了他,讓他立馬開工!
經過四個月的修修補補,差先生終於完成了。 qa團隊發現存在著大量的bug和矛盾之處,並將報告返回給差先生。差先生根據報告又花了2周的時間來修復這些bug,並最終給出了乙個新的版本!那些該死的惱人bug真是絞盡了差先生的腦汁。
測試然後修復,如此迴圈了兩三次。
使用者已經在期待這個新的模組。銷售人員也簽署了一些新的客戶。把這個模組做出來,並整合到下一版本中這一過程的壓力之大可想而知。但是,所幸,成功了!開香檳慶祝吧!
呀,不對,新模組中依然滿是bug。群眾的眼睛總是雪亮的,客戶總是特別擅長於找到一些以前從未被發現的bug。於是他們聯絡技術支援。技術支援團隊再去找是什麼地方出了錯,是客戶不知道如何操作功能,還是他們自己搞錯了,抑或這只是乙個bug,乙個可以重現的bug。……然後技術支援團隊提交了錯誤報告。於是,差先生悲劇了,——我的意思是,哪怕他正在搞另乙個專案,在這個時候也只能放下手頭的一切工作來解決這些麻煩事。
(這還沒有涉及到**的維護性,邏輯性和文件化問題——因為以後肯定會有其他人來改進這些**)
但是,唉,怎麼說呢……似乎有一些bug超出了差先生的能力範圍,他根本修復不了。此外,不斷出現的新bug,沒人知道確實它們是新出來的,還是以前就有但就是沒有被發現而已的。技術支援煩不勝煩。而銷售越來越惱火,因為新客戶紛紛表示這個模組太不靠譜了,他們要取消合同!
最後,老闆不得不讓mr rockstar(好先生)來看一看這些**。
好先生並不想為差先生收拾爛攤子,很多結構在他眼中都是沒有意義的。他建議重寫**,預期大概需要乙個月的時間。然後他開工了,只比原先估計的多了幾天就完成了模組(他是好先生,而不是完美先生)。除了qa團隊發現了一些小錯誤,一切都能如期工作。 qa團隊在心裡默默擔心:如果所有的程式設計師都像他一樣,那他們就沒有用武之地了。差先生認為好先生這是在傲慢地嘲笑他,但他的看法對好先生而言是無關緊要的。
改進過的模組很快發布了。每個人都很高興,因為終於可以正常工作了。萬歲!
現在真的到了可以開香檳慶祝的時候了!
但是此時,似乎所有人都忘記了好先生只用了乙個月左右的時間就成功搞定了差先生用了七八個月也搞不定的任務。
這兩個開發人員生產力水平的巨大差異由此可見一斑——他們執行的是完全相同的任務。
那麼,在這個故事中可能會發生的最糟糕的事情是什麼呢?
好先生終於注意到他比差先生的效率要高得多:他能輕易識別不良**。但是儘管如此,他很肯定自己的薪資和差先生的差不多。他表示不滿,甚至於毅然決然地離開。於是你的開發團隊失去了乙個高效的力量支柱。
即使他不離開,當面對由於發布/專案延遲導致的整個團隊的加班,他會怎麼想?離開是必然的,只是時間早晚而已。
並且,如果你真的運氣實在不佳,提了另乙個人去取代好先生的位置,卻不幸是另乙個差先生的話,那我就只能默默地為你點根蠟燭了。
那麼,為什麼我們總是習慣於忽略這個事實呢?
因為忽視比糾正問題容易得多——至少某種程度上,的確如此。並且沒人願意做告發同事的小人,成為他丟掉飯碗的原因:因為搞不好差先生上有高堂要贍養,下有兒女嗷嗷待哺;或許他剛剛買了新房子,每個月都要還貸——最重要的是,真的很難衡量開發人員的工作效率,除非你讓他們倆做相同的任務來做對比,就像上面的故事一樣。
於是我一直在想這個問題:該如何衡量開發人員的工作效率。我很嫉妒做銷售的,因為他們的薪酬是根據業績來的。我有一些想法(還不成熟)能讓你去其糟粕取其精華。我也有一些想法關於如何識別、吸引和留住好的開發人員。
我的身份以及我為什麼要告訴你這些真相
我曾作為乙個全職的開發人員幹了10多年。早在2023年我做出了我的第乙個商業化的產品(遊戲)。雖然它並沒有給我帶來很多錢,但感覺真的超好(那時我才16歲)。幾年後,我**了其中乙個遊戲點子,並最終發布於任天堂遊戲機(以及其他格式)上!從我經驗的角度,我可以告訴你,當你看到你想出來的東西(包括名稱)最終出現在商店中,這感覺不要太爽。
我不再為了謀生而程式設計(確切的說,是當時),但經常在業餘專案上鼓搗各種新技術。對我來說,讀一本好書,既令人興奮,同時又能夠得到放鬆。
在我目前的崗位上,我經常會遇到一些誤解概念或缺乏開發基本知識的人。而在他們身處的職位上(通常是那些cxo們),這些基礎知識會造成巨大的影響。
很多cxo會將開發人員當作是砌磚工人,死板地計算他們的工作效率。但是,在這裡,我想再次重申這個「作家理論」,開發人員是腦力工作者,ok?
我不是程式設計師2
上班以後的生活並沒有我想象中的激動 由於公司什麼都沒弄好 剛開始幾天我和乙個新同事就看著工人在裝這個裝那個 工作環境全是我們看著搭建的 那幾天過得相當的漫長 沒想到以後的日子 就是這樣無聊和沒有激情 公司的發展讓我們寒心 說是主做移動開發 我們也很願意 但是其實就是一家小外包公司 他在香港那邊也有公...
程式設計師是不是「後浪」?
b站一條何冰老師的演講,讓我們激情澎湃。但是激情過後,剩下了什麼?但是後浪需要一點,就是 心裡有火,眼裡有光。勇往直前,不忘初心。只要心裡對未來充滿希望,並願意為之不斷奮鬥的人 才能稱之為後浪。而那些放棄努力,放棄奮鬥,忘記初心的人早就被時代的洪流所拋棄,早就死在了沙灘上。而我們程式設計師作為未來科...
程式設計師的最愛,化身打工人,程式程式設計
程式設計就是為了借助於計算機來達到某一目的或解決某些問題,而使用某種程式語言編寫程式 並最終得到結果的過程。計算機雖然功能十分強大。可以上網 玩遊戲 管理公司人事關係等等,但是沒有程式,它就等於是一堆廢鐵,不會理會我們對它下達的 命令 因此,我們要馴服它,只有通過一種方式 程式,這也是我們和計算機溝...