近幾周,乙份反映 netflix 公司企業文化的報告在網上廣為流傳。這份報告裡列舉了很多netflix公司裡令人稱讚的做法,包括這個公司是如何的招聘和辭退員工的。裡面有大量的資訊是描述netflix公司是怎樣對待員工的,這使netflix公司變成了乙個很有吸引力的工作場所。報告裡面提到過有乙個關於員工所期望的內容的清單,但沒有把清單列出來。報告的開始部分就談及了企業價值問題,而且是按照員工的立場角度寫的,可惜並沒有把這個問題展開。
我並不在netflix工作——你也知道 (我在 yahoo!工 作)——但我深切的感覺到,不管你在**工作,成為乙個優秀的員工、優秀的軟體開發工程師的過程是一樣的。 下面所列舉的都是偉大的程式設計師所具有的經驗和品質。
對於軟體這一行的人,我們有個很大的挑戰,就是如何能夠用正確方法的做事情。什麼是正確的方法,這依賴於你在做什麼和做給誰。而究竟所謂「正確的方法」裡都包括了什麼內容,這並不是重點,重點是你是否能堅持按照這種方式做事。初級程式設計師在這個問題是通常不能做到堅持,而資歷較深的程式設計師卻能始終堅持原則。 也許會有乙個「非常緊急」的專案,或者這個專案很特殊,不能按常規過程開發。這只是個假象。好的程式設計師知道即使在任何情況和環境下都要堅持做正確的事情。如果說按正確的方式開發將導致不能按時完成任務,那麼,他們就會知道,這個專案是不能按時完工的。不要妥協,工程質量是你作為乙個優秀程式設計師的唯一終極證明。確保你所有的**都是在正確的方法下100%正確的寫出的。要按乙個優秀的程式設計師的標準來要求自己。
聽起來很傻,但卻是真的,優秀的程式設計師都樂於承擔工作上給他們帶來的痛苦。你說出乙個偉大的程式設計師,我都能告訴你,在他或她的職業生涯裡,各個階段,都曾有花好幾天時間去解決乙個問題的經歷。優秀的程式設計師品味著困難給他們帶來的挑戰,這讓他們日以繼夜,他們明白,問題必須要解決掉。
不太優秀的程式設計師就不一樣了,他們在剛剛碰到有麻煩的跡象時就先想到要尋求幫助。在問題面前,他們習慣於去尋求幫助,而不是自己去努力解決這個問題。他們最喜歡的一句話是:「幫我看看這個問題」。偉大的程式設計師的第一反應是我要自己解決這個問題。解決問題是種技能,是優秀的程式設計師非常看重的一種技能。
好的程式設計師是通過痛苦的磨練才成為偉大的程式設計師的。痛苦的磨練是說當你對這個問題實在無能為力時才去請求外援。求助就意味著認輸,所以儘量減少這種處境的發生。 甘願受苦。和問題做不懈的鬥爭。這就是你要學會的。
注意: 我並不是說你不能尋求他人的幫助。我說的是,你首先要嘗試自己去完成任務,如果你不能完成,再尋求幫助。不要在自己沒有努力過前就輕易的求助。你經常會發現,當你知道了解決方法後,你才認識到,你用自己的力量本也能解決這個問題的。
如果有人敢聲稱他不需要再學任何新的知識,我是絕對不願意和他共事的。在有些行業,你也許很多年不學新的東西也能幹的很好,但軟體技術革新的如此之快,你不能不時刻關注。你的老闆是由於你有某些技能才花錢僱你的,如果你的技能已經落伍、過期了,那你也就沒有價值了。想成為一名偉大的程式設計師,你首先要承認你不是無所不知,你必須每天都要努力的尋找、學習新的知識。
在你現在的公司裡或組織裡尋找能讓你學習、讓你欽佩的人。在複雜的問題上徵求他們的意見,看看他們是怎麼思考的。向他們介紹你的解決思路,請他們給予批評指點。如果在你的周圍你不能找出乙個能作為你的導師的人,這要麼是你還沒有認真的尋找,要麼是你留在了乙個不該留的公司裡。如果你在現在的工作上不能學習進步,那是到了你該換個工作的時候了。
要閱讀網上的部落格。關注一些研討會。與其他程式設計師交流。偉大的程式設計師從不停止學習。
有一些程式設計師認為,他們的唯一價值所在就是他們所擁有的知識,於是,分享出他們的知識就會讓他們的價值降低。這是大錯特錯了。讓你有價值的不是你的知識,而是如何運用你的知識給公司創造價值。難道還會有比分享知識給他人更能給公司創造價值的方法嗎?
我曾經面試過一家公司,知識不共享、相互保密、相互提防的理念在這家公司裡根深蒂固。在這樣的環境裡,員工之間形成了一種惡性競爭的關係,這直接導致了勾心鬥角和誣陷中傷的產生。我可不想在這樣的公司裡工作。如果每個人都對自己知道的事情諱莫如深,那你什麼都學不到。
偉大的程式設計師希望他人也能知道自己所掌握的知識。他們並不擔心會因此而失去優勢,因為他們相信大家都會這樣做。偉大的程式設計師樂意看到他們的同伴成長、成功。乙個公司,它應該被一群喜歡知識共享的人組成,就像人們在運動場上,讓團隊的每個對員都強大起來,整個團隊才會強大。
偉大的程式設計師從來不會說「這不關我的事」。他們總是願意伸出援助之手。他們經常在做自己的工作之餘,去幫助那些程式設計新手。如果有件任務必須按時完成,而又沒有其他人能勝任,偉大的程式設計師會主動承擔起這項任務。他們從來不嘲笑來請求幫助的人,即使問題是那麼的小、那麼無意義、無價值。 偉大的程式設計師重視他們的團隊,願意為團隊做任何的事情。不管是要去寫1,000行的**,還是去編輯乙個,偉大的程式設計師都會立即站出來幫助完成。
偉大的程式設計師不是天生的,是後天煉成的。他們是本文上面提到的那些因素造就的,加上還要通過努力的工作。如果你是剛剛意識到這些,那還不晚,你仍然有充分的時間來成為乙個偉大的程式設計師。耐心是關鍵。偉大的程式設計師不是在旦夕之間就可以成就的。有些人可能要花上數年,有些人則需要十幾年。沒有人為你寫血淚史。好的公司當發現你有成為偉大程式設計師的潛質時,會幫助你,為你提供舞台。而你會通過你的努力工作、讓你的團隊進步來證明自己。要堅定,要自律,通往偉大程式設計師的道路會很長。
更新 (5 sep 2009):針對「甘願受苦」段內容增加乙個宣告。好像很多人都誤解了我的觀點。
英文原文:what makes a great software engineer?
來自:
偉大的程式設計師是怎樣煉成的?
近幾周,乙份反映 netflix 公司企業文化的報告在網上廣為流傳。這份報告裡列舉了很多netflix公司裡令人稱讚的做法,包括這個公司是如何的招聘和辭退員工的。裡面有大量的資訊是描述netflix公司是怎樣對待員工的,這使netflix公司變成了乙個很有吸引力的工作場所。報告裡面提到過有乙個關於員...
偉大的程式設計師是怎樣煉成的?
英文原文 what makes a great software engineer?近幾周,乙份反映 netflix 公司企業文化的報告在網上廣為流傳。這份報告裡列舉了很多netflix公司裡令人稱讚的做法,包括這個公司是如何的招聘和辭退員工的。裡面有大量的資訊是描述netflix公司是怎樣對待員工...
偉大的程式設計師是怎樣煉成的?
英文原文 what makes a great software engineer?近幾周,乙份反映 netflix 公司企業文化的報告在網上廣為流傳。這份報告裡列舉了很多netflix公司裡令人稱讚的做法,包括這個公司是如何的招聘和辭退員工的。裡面有大量的資訊是描述netflix公司是怎樣對待員工...