成爲優秀程序員的方法就是拋開編程?

原文:How To Become a Better Programmer by Not Programming
做者:Jeff Atwood
html

我在2006年寫過一篇題爲「Programmers as Human Beings」(程序員,亦人類)的博客,文中我提到過本身當時正在讀《編程大師訪談錄》。這本書出版於1986年,它收集了衆多計算機行業先驅的採訪實錄。這本書裏面全部的採訪都是值得一看的,尤爲是比爾·蓋茨訪談中的一個回答,能夠說是一語中的:程序員

《編程大師訪談錄》是對19位計算機行業先驅的採訪實錄,採訪對象包括查爾斯·西蒙尼、比爾·蓋茨、安迪·赫茲菲爾德、雷·奧奇、傑夫·拉斯金等。訪談涉及他們軟件創造過程的靈感、技術、編程習慣、動機、反思,以及對將來軟件的暢想等。問答中集結了這些計算機先驅的精闢言論,到處閃爍着智慧的火花。——譯者注編程

問:若要作好編程工做,必須積累不少年的經驗才行嗎?網站

比爾·蓋茨答道:「不是這樣的。我以爲在最開始的3~4年以後,你是否是一名優秀的程序員就已經定型了。更多年的歷練,只會讓你更多地瞭解到大項目管理和人員管理。3~4年的時間足以看清你的將來。在微軟,沒有一我的是在一開始幾年毫無建樹、而在後來出人意料地成爲多面手的。經過和一我的聊他所寫的程序,我能夠立刻看出他是否是一名優秀的程序員。」spa

咱們已經知道,會編程的人和不會編程的人中間隔着一條鴻溝。設計

可是,在軟件開發領域一樣有相似的一句話,而這句話一般不爲人所知:優秀的開發者和平庸的開發者之間存在着一條鴻溝。經過4年的專一編程,一位平庸的程序員會略有心得,但他始終沒法蛻變成爲一名優秀的程序員——優秀程序員所具有的素質彷佛是與生俱來的。server

我贊成比爾·蓋茨的說法。依個人經驗,你要麼是一名優秀的程序員,要麼不是,這二者之間沒有灰色地帶。不管你多麼埋頭苦幹,這點是沒法改變的。但若是你能接受這一點,又會產生一個悖論:若是經驗不可以使你成爲更加優秀的程序員,還有什麼能夠呢?難道咱們的技術水平永遠不會提升嗎?天資不夠是否是就根本無望成爲優秀的程序員了?htm

要回答這個問題,你必需要看到編程的癡迷本性。優秀的程序員擅長編程,很是地擅長,甚至你會稱讚他們無與倫比。若是和我有點相像的話,他們應該會在電腦面前度過生命中全部可用的時間;隨着時間的流逝,他們理所固然變得愈來愈優秀。有能力的程序員已經靠自身所掌握的編程技巧躋身於優秀程序員的行列了,可是若是你已經擁有了97%的編程才能,是什麼使得你得到最後的這幾個百分點,而且最終脫穎而出呢?對象

隨着年齡的增加,我開始越發相信:成爲更加優秀的程序員的方法是拋開編程。你須要休整一下,放下編譯器,好好評估一下本身正在作的事情。編寫代碼當然重要,但這只是整個過程當中的一小部分。blog

DesignObserver.com上有這麼一段話,提到了一點不錯的建議:

Design Observer是一個致力於討論各類設計話題的網站,包括:平面設計、社會創新、都市生活、流行文化和批判等。——譯者注

這麼多年下來,我開始意識到,我最好的做品老是源於那些可以引發我興趣的事情,更或者是那些我本來就感興趣(甚至飽含激情)的東西——這種興趣貫穿於設計工做的整個過程。我相信,我至今對平面設計仍然充滿着激情。而平面設計的關鍵在於,它老是包含了一些與它自己並不太相關的東西,好比公司法、職業足球、藝術、政治、Rober Wilson等。若是我不能對這些事情產生興趣,我就很難把設計師這份工做作好。在我看來,下面的結論是必然的:你的興趣愛好越普遍,你就越能勝任你的工做。

Robert Wilson(羅伯·威爾森),1941104日出生於美國德克薩斯州的瓦克市,是一位國際知名的美國戲劇導演和舞臺設計師。最知名的戲劇做品爲《沙灘上的愛因斯坦》,此劇被譽爲後現代主義的表明做品。——譯者注

對編程有激情是一件很美妙的事情,可是它很容易讓你迷失在你已經證實本身夠格的一項技能中,而且越陷越深。爲了真正地成爲一名更好的程序員,你必須培養本身對於編程周邊全部事情的熱情

後來在2005年的一次訪談中,比爾·蓋茨繼續闡述了他在1986年的觀點:

工做的本質並非閉門造車(埋頭寫代碼),我相信這一點很容易理解。最最匱乏的人才是那些既對工程技術有超強的領悟能力,又能夠與核心開發人員創建良好的關係,而且能夠充當與客戶、市場等之間橋樑的人。像這種工程管理人才,即便在微軟也是很缺的,因此咱們不得不常常鼓勵一些人去嘗試。

我很但願看到有更多人投身於這些職位。他們除了掌握基本的工程技能以外,也把人員管理和羣體動力看做是一項對本身的歷練。要是這樣,那就太好了!

咱們能夠對這些人承諾,在他們從事這個職位的開頭兩年裏,他們作的絕大多數事情都不是寫代碼,由於有不少方向可供選擇。好比身處Office部門,你將參與建立這款神奇的產品,你會看到人們是怎麼使用它的,兩年時間很快就會過去,你要開發一個新的版本,而且深層次地改變生產力。你還能夠作一些大膽的嘗試,準確地知足客戶的需求。

單單靠編程,你只能補足或者加強本身已有的編程技能,永遠也沒法成爲一名優秀的程序員。你須要嘗試去了解你的客戶、你所身處的行業及其相關的業務!

仍是那句話:「你的興趣愛好越普遍,你就越能勝任你的工做。

相關文章
相關標籤/搜索