Programmer is an Interpreter

Oct 14 2008

在整理公司的信箱時,無意間發現 2005 年寫的一篇文章,覺得挺有趣的,放上來。

程式設計師和翻譯人員,在很多方面來看,是等價的。

這樣的一個想法,在一個夜晚,台大旁的溫州街巷子裏的 Bongos ,忽地閃過腦海,像個幽魂似的。看似不見了,卻隨著時間逐漸發酵,進而影響到上班時面對工作的態度…

上班後,一般人喜歡叫我們工程師、程式設計師,或是研發人員,當然這得看他對我們的工作了解多少,比較酷一點的,會說我們是 problem solver、pioneer 或是 originator。不論怎麼被稱呼,工作中總有不少時間是花在 programming 這檔子事上(雖然,事實證明,隨著個人的發展不同,每個人都會走上開會時數慢慢唐塞掉你一週工作時數的這個過程…)。

我們的工作就是:把一個問題聽清楚後,在腦子裏或紙上,以你的 natural language (not native language all the time) 說出你的答案,接著坐到電腦前,將那個答案翻譯成另一個語言。這個語言可能是 C/C++, Java, Scripts, HTML, …。過程中反覆地檢查是否有哪文法不對(compiling bug)、語意不通順(logical bug),或是贅字過多的地方(running performance)。一邊修改(debug),一邊請別人來看看整篇翻譯文章是否讓人看得懂(end user testing)。

寫程式的過程,約莫就是這樣了。

對於翻譯這件事的掌握程度不一(programming skill)、個性上耐不耐得住一人工作的寂寞(thinking, coding and googling alone)、受不受得了要隨時學新單字與翻字典(new spec, new API and different frameworks)…等,造就出了不同性向與不同壽命的程式設計師來。「性向」指的是與其它翻譯人員之間合作的方式;「壽命」指的是能持續寫程式多少年。

印度的 programmer 舉世聞名。看了不少篇 paper ,裏頭持續提到教條式的程式寫作訓練與吃苦耐勞的合群個性。於是乎他們成了世界知名的翻譯家,從程式語言翻譯做起,進而到矽谷翻譯起了「創新行為」與「商業行為」等語言…

翻譯又有分很多不同情況。

強調速戰速決,翻過就不留痕跡的,就像國際會議裏的即時口譯人員。工作大多是實作出 prototype、解決臨時性問題,或是寫些小工具方便自己日後的工作。

要求字字正確,句句語意上都對的,就像國中與高中的英文教師。按步就班寫出有條有理的程式碼或 framework、註解完整還附上整個系統的演算法脈絡,為的是供日後跟隨或接手的人容易進入狀況。

寫程式如此,對事情的態度亦如此。有些人擅長緊急的事,不管再怎麼雜,再怎麼繁瑣,都能一個接著一個應付;有些人適合每個步驟都嚴謹,處理的過程中,已經在構思整件事要如何更有彈性,遇到什麼狀況時也先想好對策。(緊急的事先處理?還是重要的事先處理?雖然答案很明顯,但實際面對起來,並不是那麼容易就能分辨出來,更別提能自主決定以對的方式來處理了)

雖然現實是雜亂無章,意外一個接一個來的,是以沒有辦法以一種態度來面對所有的問題。而這也剛好說明了為什麼國中時會紅起來,且至今還常常被提及的 EQ 哲學。只因為你得隨時調整心態,以不同的態度與風格去面對那「工作上的事」。

因為了解到自己的身份,不過就是這麼一位得時時調整的翻譯人員,很多事情處理 起來變得順利多了,即便是在一些負面消息接踵轟炸過來的時節。

但我依然秉持著,有個遠方的目標在前頭等著,有些事得事先準備。不能就這樣讓日子一天一天的,在一個又一個工作任務中度過。

Programmer is an Interpreter。以這為出發點,仔細思考,是的確可以寫出一份程式設計師的上班求生指南的,不過天色已晚,還是早點睡吧~

comments powered by Disqus