創造型職業程序員的無奈
編程是為數不多的一種既能滿足個人愛好,又能賺錢的職業之一。烹飪是另一個這樣的例子。在一般情況下,大多數職業要么不可能讓你待在家里(例如醫生和電工),要么你沒有興趣在家里做(例如清潔)。同樣的,大多數好玩的活動是沒人愿意付你錢的。
軟件開發則橫跨兩個陣營:對有些人來說這是一個令人愉快的職業生涯,對其他人來說,這是一個激動人心的興趣愛好。前者是我所謂的“職業程序員”,后者則是“創造型程序員”,當然這并不是說,前者缺乏創造力,而后者不賺錢。這么解釋吧,你也可以分別稱他們為“代碼優先”的程序員以及“問題優先”的程序員,因為前者喜歡用代碼解決問題,而后者更傾向于使用代碼作為他們的工具來創建具體的東西。
還有第三類程序員,這一類很容易成為最沮喪的群體:既以編程為職業,又有強烈的創作沖動來制作軟件。如果你愿意的話,不妨稱呼他們為“創造型職業程序員”(雖然很沒有創意)。職業程序員可以在工作中解決令他們感興趣的問題,然后回家去做其他重要的事情;而來自于另一個領域的業余程序員可以享受編碼作為晚上的業余愛好。創造型職業程序員白天的時間都在編碼,去創造一個他自己也不甚在意的產品(換言之主要是為了錢錢,而且沒有冒犯女程序員的意思),然后當他回到家之后,就沒有時間和精力去創造那些他真正熱愛的東西。
拿到CS學位,他以為他將會收獲一份夢寐以求的工作。從一開始編碼就令他激動不已:只要一臺電腦和一些訣竅,就可以創建游戲來愉悅和挑戰別人,創建工具來幫助他人和改變世界,以及創建完全不同于之前已經存的應用程序。為了能有一份高薪的工作,僅僅如此似乎太過異想天開了。
在進入這一行業幾年之后,不幸的烏云開始慢慢攏聚。這并不是說他對工作不感興趣了,也不是產品沒有意義,只是因為……他手頭有十幾個項目像線團一樣纏繞在著他,以致于他沒有足夠的時間來完成所有這些項目,即使他將一整天的時間都放在工作上。這感覺像是一個世界難題,但是從另一個角度,人們看到的是這樣的:他熱愛編程,并且有一筆可觀的收入支付給他讓他編程,他有充足的個人時間用于鍛煉、與朋友建立聯系和實現自己的興趣愛好,他過著一種令人傾羨不已的美好生活。
上面這些片面化的觀點會群起而攻之,在編程社區中出現沮喪的聲音時。因為有太多的壓力,所以你很難在自己的時間繼續對編程工作保持激情:在工作時編程,然后累成狗一樣地回家。你需要平衡你的生活,培養一些編程以外的其他愛好。你可以兼職其他公司,賺多一點錢,也可以做任何你喜歡做的事情,只賺取很少一點錢或根本不賺錢:然后抱怨和牢騷隨之而來。
關鍵要說明的是,所有這些言論都沒錯:只是都沒有戳中關鍵點。我認為,沒有那么多的程序員在工作之外編碼是出于他們想更有競爭力這個原因。同樣的,我認為大多數程序員也不會相信為了保持競爭力你應該每天投入10小時以上到編程上的觀點。
這類程序員的無奈之處在于,他每天只能投入有限的合理編碼時間,然而他花費了大部分時間去創造的一些東西,最終對他而言是沒有意義的。關鍵不在于編程,而在于創造。他不是那種腦袋鉆到錢眼里的生意人,下班之后狂熱地帶著工作回家:他是一個繪畫藝術家,將整天的時間都用在設計公交車車身廣告,但當他回家的時候,卻不能攜帶走任何風景片段。這是藝術家中已經有著幾個世紀歷史的沖突:這不是一個新的問題。和以往不同的是,據我所知,沒有一種創造性的努力像軟件開發一樣有著很好地偽裝、易于分享和有著極高的利潤。
你還能想出其他的技能,既能創造和管理價值數十億美元股票交易一樣的利潤,又能如創造游戲,例如GAME OF THE YEAR 420BLAZEIT,那樣有趣又荒誕,并且還能將結果通過互聯網分享到世界各地嗎?這真的令人難以置信。編程是一種藝術形式,而且是一個強大的工具:可以理解的是,它對于不同的人意味著不同的東西。
這使得那些有著強大創作意愿,并將這些創作意愿置之于軟件開發職業之上的程序員處于兩難的境地。他能在工作中和家里都花費10+小時編碼嗎?他會放棄這一行,另謀職業,這樣回家的時候就可以致力于自己的項目嗎?或者他寧愿過著一種窮困潦倒的藝術家生活,完全獻身于他的項目(例如軟件世界里的Tarn Adams),省吃儉用希望能從中賺到足夠的錢?還是說他只是像牙膏一樣地擠時間,或者采取靈活的合同工作,雖然酬勞少了,但可以有更多的時間投入到編程中去?亦或是他依靠他的配偶提供財政支持,俗稱吃軟飯的?
我認為,這里的關鍵在于,這些不是支付賬單的人提出的問題:這些是藝術家提出的問題。雖然尚在苦苦掙扎中的藝術家總是不能得到很多尊重,而且在我的印象中,創造型程序員得到的嘲諷甚至更多,這可能是因為他們原本完全可以輕易地利用他們的技能去賺錢,但卻選擇了一條艱難的道路。如果,因為藝術家他們渴望創造的強烈欲望而嘲笑他們是一種殘酷,那么出于同樣的原因而嘲笑程序員是否是另一種殘酷呢?
我認為自己也是創造型職業程序員中的一員。雖然我在一個很有意思的領域有一份很好的工作,但我的大腦中有一百萬個點子在爆炸:我想開發自己的游戲到能真正讓人去玩的程度;我想建立一個基于標簽的文件系統,用于標簽和搜索媒體,類似gif動畫和個人照片;我想制作一個移動app,讓大家能夠輕松輸入數據(例如在你吃棒棒糖,或頭痛的時候),然后展示相關性以便于你進行調查;我想構建一些不平凡的東西用來知道從屬類型能有(或不能)多實用。
直到最近,我才想明白如何平衡生活中的編碼,于是,現在的我是這樣的:平時大概業余編碼2小時,然后周末會有4到6小時的編碼時間。這和我心里想要制作的東西相比,絕對是蝸牛速度,但因為接下來我會有一筆很大的開支,所以我需要保證一定的工作時間,而如果我妥協生活中的其他部分(人際交往、運動、休閑時間、家務瑣事等)用于寫代碼,那么我的整體情況就會變糟。
這是一種犧牲,但我并沒有覺得對不起自己,沒有絲毫遺憾:畢竟每個人都需要有所犧牲,有所取舍。當然,如果能在和別人談論時,別人不認為我的問題是將業余項目放在首位就好了。我認識一個廚師,他不喜歡累得一塌糊涂地回到家里,以致于沒有精力去做一頓豪華大餐,他對此矛盾不已,但沒有人為他指出,他真正問題在于對食物寄予了太多的激情。
如果我們能夠認識到,創建東西這個愿望對于某些程序員而言是一種基本的動力,那么我們不僅可以通過,消除對那些不喜歡在家編碼的程序員的蔑視,來幫助職業程序員,我們還可以幫助創造型程序員找到適合他們的生活方式。讓我們一起來試一試吧。
譯文鏈接:http://www.codeceo.com/article/creation-motivated-programmer.html
英文原文:The frustration of the creation-motivated career programmer