(1)關鍵開發技能(硬實力)
·Git/GitHub——你必須掌握如何使用Git來管理和分享你的代碼。把Git作為關鍵技能的第一條,是因為它不僅僅是一個代碼管理工具,更是一種推薦的工作方式。它使你能在任何地方進行開發,高效地管理任何大小的項目,通過Git你還能與其他團隊成員進行分布式協作,大大提升工作效率。通過GitHub,還能將你與世界所有的開發者聯系在一起。
·至少一門編程語言——你需要精通至少一門編程語言,如Java、PHP、Swift、C#、Python、Ruby、Perl等,因為你的大多數核心業務處理都需要用這門語言來寫。你既要掌握這門語言的語法,又需要非常熟悉如何基于這門語言進行項目的架構、設計、實現及測試。如果你選擇的是Java,那么你就需要掌握面向對象的設計和開發、設計模式的應用、基于J2EE各個組件的開發,等等。
·運用開發框架和第三方庫——流行的開發語言,一般都伴有出色的開發框架,比如,Java的Spring、MyBatis、Hibernate,Python的Django,PHP的thinkphp、yin,nodeJs的express,等等。這些開發框架往往都遵循軟件開發領域的一些最佳實踐,并由非常優秀的開發人員創建。熟練使用這些開發框架或第三方庫能夠避免重復發明輪子,從而使你的工作事半功倍。更重要的是這些優秀框架或第三方庫一般都得到持續的維護,是對你的產品或項目在質量與安全方面最有效的保障。
·前端技術——之所以將前端技術獨立出來,作為一項關鍵技術,是因為它在今天的項目和產品的研發過程中正變得越來越重要。一個產品除了實現所需的功能之外,是否好用(用戶體驗)也正在成為評判一個產品是否成功的重要標準。而這都依賴于前端技術的實現,你至少需要掌握HTML5、CSS3、JavaScript等基本前端技術,同時進一步學習JQuery、LESS、SASS、AngularJS或REACT等前端框架或第三方庫。
·數據庫與緩存——任何產品或項目都需要一個數據庫來存儲數據。作為全棧工程師,你也需要至少掌握一到兩種數據庫,并知道怎樣與數據庫進行交互。目前流行的數據庫主要包括MySQL、MongoDB、Redis、Oracle、SQL Server等。MongoDB作為文檔型數據庫,在互聯網產品中正被越來越多地使用,對于規模稍大一些的項目,我仍推薦使用MySQL或商用的Oracle作為后端數據庫。而Redis這樣的內存數據庫則可以用于緩存,以提升系統的性能。
·基本設計能力——大部分關于全棧工程師的文章或討論中,都不會將設計能力作為全棧工程師的關鍵技能,但我卻認為這項技能非常重要。我曾被邀請評估一些軟件工程師自己開發的產品,這些產品都有不錯的創意,功能實現也很到位,但其中一些一看就不是一個好的產品,用戶根本沒有使用欲望,原因是這些產品的設計太差了,而那些開發者往往完全沒有意識到問題的存在,比如,色彩不一致、排版凌亂、圖標不恰當,等等。我所建議的基本設計能力,并不要求你像專業設計師那樣能夠P出神圖、制作奇妙的視覺效果等,但你需要掌握那些最基本的UI設計原則,如色彩的搭配,基本的排版,并具備良好的審美能力和一些基本UI設計能力,這樣你做的產品就不會太差了。
在掌握了這些核心技能之后,你可以根據自己的興趣與發展方向,學習其他方面的技術。比如,如果你對數據處理感興趣,那么你可以學習大數據方面的技術;如果你對移動互聯網更感興趣,那么你可以學習Swift,開發iOS應用。知識總是相通的,在有了良好的技術基礎后,學習其他知識將會變得非常容易。
(2)附加技能(軟實力)
稍大一些的項目,你總是需要與同事、干系人或是客戶進行溝通。而成功的溝通往往是獲得有效需求與建立團隊樹立信心的第一步。在項目進行的過程中,你更需要通過有效的溝通去確定方案,消除誤解,與項目成員協同前進。良好的溝通能力將使你在團隊中更具影響力,受到更多尊重和關注。
·問題解決能力——全棧工程師首先是一名工程師,他必須掌握用工程化的方法來解決遇到的各種問題。我在職業生涯中的幾乎所有亮點,都與解決問題相關,大到提供整個項目的架構方案,小到以最快的速度解決生產問題,等等。其實,有很多提高問題解決能力的方法,但沒有一種比實踐更有效。我所見到的優秀工程師,往往能夠憑借直覺以最短的時間給出正確的解決方案,但你沒有看到的,是在這背后經過大量實踐累積而來的經驗。
·時間管理——作為全棧工程師,你可角色。你需要合理地分配時間,保證所有的工作能夠按時交付。同樣在你的業余時間,你還需要花時間閱讀和學習,同時你還可能有自己的Side Project。因此,合理地進行時間分配,并對一些關鍵任務進行計劃是很重要的。你或許會感到一些壓力,但這反而會激發你的創造力,并能讓一切都有條不紊地進行。
·好奇心——對任何工作都抱有好奇心,并愿意不斷學習和改善是那些優秀工程師的共同特性。軟件開發領域匯集了世界上最聰明的人,各種類型的技術、產品、框架更是日新月異,層出不窮。優秀的全棧工程師需要不斷地學習來抓住這些變化,跟上計算機領域發展的腳步。時常有人會問我,做計算機這一行一直會有新的東西產生,要去不斷地學習,是不是會很累。我要說的是,對于將持續學習作為一種生活習慣的人來說,學習新東西并不會成為一種負擔,反而是一種樂趣。
·領導力——優秀的全棧工程師往往會被賦予技術Leader甚至項目管理者的角色。成為管理者并不是讓你去支配其他人,或讓其他人替你做事。管理者需要理解你的團隊成員的長處與不足,并知道如何以服務的態度使團隊獲得最大化的產出。我見過一些非常優秀的工程師,當他們被安排去管理團隊時,他們是排斥的,他們往往更愿意獨自工作。但我想說,成為管理者將會使你更加睿智、可靠和值得他人信賴,也會對你未來的職業生涯帶來極大的益處。因此,當機會到來時,請將它視為挑戰,不要排斥它。
有經驗的技術領導者在招聘時,往往會同時考察應聘者的技術能力與上述附加技能,而對于初級程序員的招聘來說,那些附加技能往往更被優秀的技術公司所看重。開發技能是你的硬實力,而附加技能則可以看作是你的軟實力,只有同時具備這兩方面技能,才能成為一名優秀的全棧工程師。
責任編輯:wv
-
工程師
+關注
關注
59文章
1571瀏覽量
68562
發布評論請先 登錄
相關推薦
評論