你是“職業”軟體開發嗎?

大衛張33發表於2011-09-14

很多軟體開發人員很困惑,自身的職業發展是怎樣的?靠譜的公司怎麼那麼少?很多軟體公司很困惑,軟體開發人員怎麼招聘,怎麼培養,怎麼用?為什麼靠譜的軟體開發人員那麼少?

1. “碼農,請不要侮辱農民這個職業!”

“碼農,請不要侮辱農民這個職業!”——原話出自@孟曉林Ralph。讀完《浮現式設計-專業軟體開發的演進本質》,這句話一直迴響在我的耳邊。

做軟體就是寫程式碼,這是一種典型觀點。軟體行業有個提法,要想成為高手,至少先要有十萬行程式碼經驗。於是很多軟體開發人員的第一目標就是朝著十萬行程式碼努力,這是千千萬萬“碼農”的追求。因為做軟體就是寫程式碼,所以這是量產的軟體開發人員們唯一值得驕傲的技能。但他們並不喜歡這唯一的技能,對他們來說,重複寫程式碼成就感很低,並且收入不夠高,所以很多5-10年工作經驗,甚至2-3年工作經驗的軟體開發人員轉崗成為了管理者或不寫程式碼的架構師。與之相對的另一個現象則是他們生產出來的程式碼質量之低劣,讓軟體公司和客戶飽受軟體質量的困擾。他們被尊稱為“碼農”。

“碼農,請不要侮辱農民這個職業!”雖然在大多數人的印象中,農民就是頭朝黃土背朝天。然而農民是個值得讓人尊敬的職業。在農業社會中,衡量一個農民的標準並不是他會不會擺弄農業用具,也不是他有力氣耕多少田。衡量一個農民的標準是他耕的田的產出,這些產出能不能養活他自己和他的家。只會擺弄農業用具的那是業餘農民,職業農民需要應對天氣變化、觀察農作物長勢、採取對應的措施以保證收成。

然而當前在軟體行業不是這樣的。軟體行業確實和農業有所不同,但道理是相通的。衡量一個軟體開發人員只有兩個標準,一是他擺弄各種工具的能力(語言、工具的掌握程度),二是他的工作經歷。在我的職業生涯中,看到過好幾位禍害了一個公司,然而換個公司繼續禍害的軟體牛人。

2. 什麼是軟體?

軟體行業是個神奇的行業,這個行業基本不討論軟體是什麼,卻有信心把軟體做好。軟體行業是個神奇的行業,這個行業什麼人都可以說自己是職業的軟體開發人員。問問自己,我們真的知道什麼是軟體嗎?真的知道什麼是職業軟體開發人員嗎?

有人認為軟體是程式碼。在《浮現式設計》這本書中,作者認為軟體是演進的。我很贊同作者的觀點。軟體從出生那一天起,就是活的。業務是它的外形和行為,架構是它的骨架,程式碼是它的血肉,它需要呼吸和飲食從外界吸取營養,需要排洩,需要神經系統,而軟體開發人員則為身體的各個部分如手、腳提供營養並影響區域性的生長。

在這裡YY一下。外形、行為、骨架、血肉、神經、消化排洩系統的發展需要均衡。過於為區域性提供營養,野蠻生長的結果就是癌症。大規模的架構重設計顯得很可笑。如果想用一套鋼骨架替換原來的石灰骨架,就需要剝開血肉,換掉骨架,與此同時血肉在生長,新骨架和新血肉能否配合,神經系統怎麼銜接,能否維持整體的外形還是未知數。

3. 你是“職業”軟體開發嗎?

如果軟體是活的,是演進的,那麼職業的軟體開發會做什麼?我們也需要像職業農民學習,應對天氣變化、觀察農作物長勢、採取對應的措施以保證收成。《浮現式設計》的作者認為,即使我們不能保證軟體在進化,至少也要保證軟體不退化。首先,要有不傷害的意願,每次修改軟體的時候都加倍小心,不讓它變得更糟;然後與使用者一起驗證軟體;最後採用能做到不傷害的工作方式。因此業餘的軟體開發寫程式碼,職業的軟體開發不讓軟體變得更糟,專家級的軟體開發讓軟體健康成長。

怎樣才能做到這一點呢?如下圖,這是作者的建議。作者更偏向於技術角度,講述了職業軟體開發人員所需要具備的一些技術能力。

enter image description here 你所在的軟體公司為軟體質量困擾嗎?你所在的公司為軟體開發人員的質量困擾嗎?強烈向如下人員推薦本書: 1)希望瞭解什麼是職業軟體開發的人 2)希望成為職業軟體開發的人 3)希望培養職業軟體開發的個人或者公司

4. 背後的故事

4.1 緣起

在很久很久以前(此處採用微博紀年法),新浪微博上有一個爭論。話題是Emergent Design到底翻譯成什麼比較好?譯法那是五花八門,緊急設計、湧現式設計、演進式設計、演化式設計、浮現式設計、湧現式設計,啥都有。見他們討論的熱烈,又不想跳進他們的坑中。於是新開幾篇微博描述了我對湧現的理解,也表達了想讀一讀這本書的願望。

在《敏捷中國2011大會》上終於拿到了書。書入手讓人感覺很舒服,封面也很簡潔。自認為對湧現式設計還是有一定的瞭解,本以為不會有什麼驚喜,結果在一個小時左右的快速閱讀後,冷汗泠泠。

4.2 不足

1)譯法

整本書的翻譯讀起來比較流暢,譯者還是用了心。然而幾個關鍵點的翻譯卻讓人感覺美中不足。Emergent Design建議譯成湧現式設計,專業建議譯成職業,演進建議譯成進化。這樣的翻譯和我這篇讀後感就扣上了,呵呵,開個玩笑。只有這樣的翻譯才能經得起反覆推敲,才能激發人們更多的思考。

2)書名

很多IT好書都栽在了悲催的書名上,但願這本好書不會這樣讓大家錯過。本書的書名說來也苦了出版社。翻譯成《浮現式設計》,那就變成了一本設計書,小眾,賣點不夠;翻譯成《專業軟體開發的演進本質》,那就變成了一本哲學書,賣點也不夠。

相關文章