Ryan Patterson曾在Facebook擔任程式設計師,去年五月他將他在facebook這三年的工作經驗做了一個小結。雖然今年他已經不在臉書上班了,但是當時提出的建議依然值得參考。

==================================
本周開始是我在Facebook的第四個年頭。我的經驗在這裡發生了巨大的變化:我從大學退學後就來到了這裡,這是我第一份工作,在這裡遇到了前所未有的挑戰。單從這方面講,我經歷和遇到的挑戰比這裡4/5的人都要多。所以,我想分享一些我的認識和見解,希望能夠對於其他工程師同業或是考慮要進入這一行的朋友能有些用處。

作為一個程式設計師,你的工作是建造程式、解決問題。新手初次進入公司時,會被分配一些小任務,你可以解決它們。隨著專業技能的增加,交付給你的任務規模會越來越大,可能會超出你的能力範圍。有些人會傾向於去抑制問題的範圍,把任務簡化到自己能力能解決的範圍,但這種作法是錯誤的。

撰寫程式是我們程式設計師用來解決問題的工具。如果你是一個園丁,你每天的工作就是在花園裡頭種花、除草、除蟲。但是如果要提高你的能力,並不能靠種更多的花和除更多的蟲得來,你的願望應該是能夠成為更有經驗的園丁,管好一整座花園,而不是成為一個除蟲專家。

你真正應該做的是,抬起頭來,從整體看這個花園,思考如何布局,整體規劃這個花園。

為了能更有效的提高能力,你需要有效的交流。交流代表著一個人在這個世界上活動的能力。作為一個程式設計師,在你的生活環境裡擁有順暢的交流管道,這對你全面發掘問題和有效利用問題解決方案起著至關重要的作用。

這裡指的不光是你的程式如何與他人的程式進行溝通,也指的是你如何在公司與其他同事進行交流。對於你參與的程式庫的部份,你要快速的了解清楚各個組件是如何組合的。以這些知識為基礎,你不能每次只是被動的接受debug的工作,而是應該去考慮如何阻止這類問題再次發生。你不能只去想著如何實現一個上級交待的新功能,而是應該考慮如何在這些舊的程式碼與新的程式碼之中,提煉出一個公用程式庫,讓它們共享80%的程式。這需要付出努力,但從長期看會有巨大的回報。

站在更高層面看問題,將整個公司視為己有。不要允許你的同事不做到最好。理解各種決策的權衡以及原因;理解一些臨時方案的決定和這樣做的必要性,但如果你感覺不對,一定不要在提出你的觀點以求獲取更好方案前就接受。這是你的公司(你的花園),如果你允許有人犁錯了方向,整個花園規劃將會變成一場災難。養成勇於改變的習慣,並有信心這些變化將向好的方向發展。

人很容易陷入懷疑自己能力的漩渦,認為周圍的人都比你聰明、有經驗,害怕自己說的不對,被對方看不起。事情其實不是這樣。當你有了一個想法,和你的團隊分享——即使你不能確定你的想法是否正確。錯誤的認識往往是通往正確道路的里程碑,因為它能幫助你界定問題的真實邊界,還因為你能通過的對錯誤想法的反復推演而獲得正確的想法。

我明白你現在還不能馬上發現跟公司內的其他團隊中的人保持交流、維持關係有多重要。你不妨隨便去找一個你幾個月未一起工作的人,和他進行簡短的聊天。這能給你遇到的問題帶來新穎的思路,也能讓你發現說不定其它團隊已有的解決方案可以拿來用。團隊之間的交流能讓你對公司有更全面的認識,而和其他專案的程式設計師交談能激發新思想,新方案的機會。

我也是剛剛總結出這些經驗。我希望這些能給你啟發,促你進步,指引你的團隊走向正確的方向。

原文連結