我覺得問題的關鍵是要想明白你為什麼要程式設計。坦率地說,我程式設計是因為我喜歡別人用我的程式,這也是我之所以在讀書的時候成績不怎麼優秀的原因(我並不熱衷於參加程式設計競賽以及類似事情)。因此,我也不喜歡參與純研究的專案——只在論文上討論各種點子,而不付諸於行動不去寫程式碼(除非恰巧碰到的是研究專案和開源專案)。
我在程式設計上並不是一個唯美主義者。我的觀點是能工作、有用的程式碼就可以被定義為優雅,即使它看上去是一團亂糟糟的GOTO語句。
我認為的“優秀的程式設計師”應該是這樣的:
- 偷懶戰略。優秀的程式設計師更傾向於靈活工作而非死工作,所以如果你想要將程式設計當作長期的職業規劃,那麼學習重用程式碼和自動化繁瑣的任務是至關重要的。
- 在職業生涯早期,有機會就多多瞭解從需求分析到最終釋出整個的軟體流程,這樣你才能學習從終端到終端的設計——還可以激發你的信心。
- 生活中除了程式設計以外,應該還要有某項能讓你經常外出活動的業餘愛好。這樣才能改善你消耗在鍵盤上的健康。
- 如果你想要在程式設計這一行待個三五十年,那麼最好學點拿手絕活,讓別人在某個領域不敢小覷於你,密切關注這方面的技術進步,保持同步。
- 多瞭解幾門程式語言——特別掌握你準備精通的程式語言。並且最好能從不同的程式設計正規化(程式,設定,功能等)來了解語言。
- 相關的:不必過於擔心你不知道的新的Zwizzle-Wiz演算法。如果不需要實施細節的話,瞭解一些相關領域重點演算法以及比較重要的通用演算法(如排序和搜尋)的特點和功能就可以了。沒有必要囫圇吞棗、傻不拉幾的試圖想要記憶100種演算法的實現(我看到有人曾經這麼做過),你的小腦袋會爆掉的。
- 瞭解如何面試程式設計師。英雄總是惺惺相惜,作為一名優秀的程式設計師,建設優良的團隊,也是你的部分責任。
- 瞭解公司業務的相關內容,以及你的程式碼需要如何與之匹配,這有助於你正確地作出相關的決策,避免走一些彎路。
- 問問相關人員的想法,看看他們對你的程式碼的評價,包括產品經理、QA、現場支援人員、專業的服務工程師和實際使用的客戶等。
- 相關的:不要錯過任何一個和客戶交流的機會。但是一定要注意自己的行為舉止:耐心聆聽,哪怕客戶的想法聽上去非常可笑,這主要是因為他們不是程式設計師的緣故。但是,如果你能借此機會好好思考關於如何使用程式碼以及使用過程中的日常挑戰,那麼將有助於你提高你的產品。
- 對於我,我是Unix哲學——一系列通用設計原則的鐵桿粉絲。雖然這些原則並不總是有效,但它是指點我如何連線優良程式碼—系統—設計的指南針。
評論(1)