程序員:如何成爲一個全棧的工程師?

全棧工程師,英文 Full Stack developer,是指那些掌握多種技能,並能利用多種技能獨立完成產品的人。固然,如今「全棧工程師」很吃香,很是吃香!這是由於在移動互聯網時代,IT 系統變得越發複雜,須要擁有全局思惟的工程師來搞定各類「疑難雜症」。不只要玩得轉前端,還要搞得定後端,總之各類技術都懂,因此其重要性可見一斑。前端

近日,移動開發精英俱樂部圍繞「如何成爲一個全棧的工程師?」進行了討論,主持人是優才學院的創始人伍星老師,讓咱們一塊兒看看大神們的精彩言論吧!(本文系國內 ITOM 管理領軍企業 OneAPM 工程師整理)程序員

程序員眼中的「全棧」數據庫

伍星-優才創始人:全棧,最先來自於 Facebook 的「咱們只招全棧工程師」,從表面看是指技術棧,是完成一套產品所面要的所有技術和技能。谷歌在它的書中也提出,它們只招創意型人才,其實這是一致的、相通的!後端

饒培澤:全棧,在我看來是一種態度,無路遇到何種問題都能積極的去解決。全棧,也不是說會什麼,而是由於有好奇心與驅動力,因此什麼都想搞明白,學習起來天然能快速上手。緩存

iOS小碼哥:全棧,也能夠說「我是一塊磚,哪兒須要我,我就往哪兒填。」表明着快速學習的能力和超強的適應能力。安全

夢航:全棧,在必定程度上能更好的作出架構,減小維護成本。性能優化

卓競勁:我支持思想和知識層面的「全棧」,而非刻意技能上的全棧。網絡

饒培澤:其實,能從前端寫到後端的人很多,可是能專職來作嗎?這麼說吧,不少公司的後端都能寫前端,但可不敢讓他們寫產品級別的代碼。若是後端人才若是能去了解前端的知識點,合理去進行整合互補,這樣是咱們所鼓勵的。數據結構

藥交匯:全棧圍繞產品服務,重點是考慮問題的角度、廣度。我的理解也能夠當作責任感的一種體現,前端、後端均可以也不表明全棧。只不過是圍繞着問題的解決方案,其根本仍是本着對一件事情負責的態度,展開全方面的跟蹤。架構

伍星-優才創始人:從谷歌對創意型人才的描述能夠看出,這更多體如今可以主動地承擔工做和解決問題。好比谷歌講過一個例子,Adwords 是幾個非相關工程師主動解決了小問題帶來大收益的。

Facebook 的人才培養一開始是不分工的,「新兵營」以後才分工,而且輪崗不少,這中間暗含了:學習能力要至關強,我想學什麼,都能學什麼,須要我作什麼,都能勝任。

因此咱們對全棧提出以下看法。首先要技術全面,做爲全棧工程師,其技術固然要比較全面。從前端到後端、從運維到優化、從 PC 到移動都難不倒。 但又有本身比較精通的一方面。也就是說,做爲全棧工程師既要有「專深」,一樣也要有「廣博」,這樣才能在解決問題時不受侷限,才能融會貫通。

第二就是思惟和心態。全棧工程師以積極主動的姿態來面對和解決工做中的問題。以全局的觀點來看待本身所從事的項目, 而不僅是本身負責的一小部分。以作成產品、作成一件事的觀點來看待整個開發流程,而不只僅是技術實現。 由於只能這樣的心態和觀點,他纔會積極主動地去學習其餘技術,用其餘技術解決問題

第三是上升能力,全棧工程師並不意味着全能,什麼都會。可是全棧工程師有良好的基礎技能。 這個技能,既包括計算機科學的基礎,也包括英語基礎,有了這個基礎, 加上積極的態度,開放的心胸,就能快速地學習所須要的技術,好比像 Swift 語言,那都不是事兒。 並應用在所須要的開發工做中。

第四就是職業價值,像 Facebook 說,他們只喜歡全棧工程師,創業公司也會說,咱們須要全棧工程師。不管是在大公司,仍是創業公司, 全棧工程師都將成爲搶手人才!那是由於,全棧工程師不但技能全面,並且心態積極,學習能力強!

伍星-優才創始人:因此全棧不是一種技能,而是一種能力。學習能力,開放心態是優先的!

李睿君:其實後面有段時間以爲全棧須要一方面熟悉本身自己專業的領域,另外一方面須要關注另外一段的技術,這樣在須要另外一端技術,或是溝通時都能有幫助

着建彬:對感興趣的東西不要當成「工做」來作,其實興趣纔是最大的動力。我以爲全棧應該是由「興趣」驅動的。

伍星-優才創始人:即便是領域專家,他對別的也會有了解和研究的。優秀的技術人員,對全部的技術應該有一種自然的好奇心和折騰勁

藥交匯:我前端和後端都經歷過,其實,在前期人員不全的狀況下,結合業務並外出調研梳理了產品線框圖、PRD、流程圖,到制定了設計規範,到協調資源,而後制定研發週期,最後到輸出...... 曾一度覺得這就是全棧,可是後來思考,這些只不過是本着對事情負責的態度,才驅動作了不少研發以外的事。就算一我的的技術全棧精通也要服務於根本產品。

伍星-優才創始人:項目進度和管理,比全棧自己要難。由於技術仍是死的,人是活的,並且多種多樣的。就像業務架構師,自己曾經技術應該不錯,即便學新技術,應該也是有特殊長處和看法的,不過不學不寫罷了。這種人是標準的技術 leader ,技術能力並不必定是以某特定語言的寫碼能力而界定。

通常而言,全棧工程師在產品和溝通這塊都有優點,因爲技術全面,他能和各方溝通的比較愉快 。甚至和產品經理也溝通好。我也算是一個全棧,此前和各個產品經理溝通都很愉快。由於他不理解的地方,我會和他講清楚,分析清楚,爲何這個不能作,爲何那樣作很差,那樣作更好,有理有據,其實,產品經理也是講道理的,不像咱們在網絡上常常「吐槽」的那樣。若是再加上自己的技術聲望和良好溝通的方式,程序員和產品經理相處其實會很和諧的。

若是成爲一個全棧工程師?

王威:個人理解是,不只本身領域的精通,而後其餘部分也應該快速學習。在我看來,若是想成爲全棧的話,還得靠上項目了。在普通公司的話,通常每一個人只關注本身的領域,對跨領域的項目通常不會碰,能夠本身利用業餘時間來寫,好比本來作APP的,有空能夠寫一下後端的東西,其實開始那一步比較困難。

張洋:全棧不僅是技術,還須要心態、責任等方方面面。

江月:我以爲 facebook 要求全棧,並非但願程序員技術全面但不精通。而是至少有一個領域精通,並且能夠快速研究另一個領域的技術點。

伍星-優才創始人:能成爲全棧,意味着技術能達到必定高度,而高度,確定是以長處見知的。我我的更傾向於認爲,一專多能。

王威:成爲全棧的話,還得靠上項目了。。。在普通公司的話,通常每一個人只關注本身的領域,對跨領域的項目通常不會碰,本身私下來寫,好比本來作 APP 的,本身私下寫後端的東西,其實開始那一步比較困難。

藥交匯:關鍵是責任感的轉變,由「被動」到「主動」,才能實現自我超越。

拯救與逍遙:我我的見解,不是先有了「我要成爲全棧」的目標,而是對技術的好奇和追求,以及積極應對當前業務發展的不斷挑戰,最終才能鍛煉出了全棧。

薄建業:我以爲,最好的方法就是項目驅動;從另外一方面也說明,說爲全棧,在必定程度上,也是被逼出來的。

王威:我比較同意項目驅動型。好比 APP 端的,例如作個相似於雲筆記的軟件,那麼後端數據該怎麼保存,接口該怎麼定,該用哪一種語言來實現後端,在分析你想要的目標的時候就能找到該用哪一種技術該學哪一種技術。好比後端用 PhP 寫,這時候就會推進本身去學 PHP,好比本身是作安卓,那麼語言銜接上,有可能選擇 JAVA 作後端,這時候就學 J2EE 的東西,圍繞這個需求來實現,而後學數據庫......其實說到底仍是得有」目標項目」來進行推進。

林曦:後端概念太泛了,不一樣業務需求和規模須要的技術支撐徹底不一樣。

王威:好比作高併發,能夠 NodeJs 、 Golang 、 Erlang ,或者乾脆用 Java、PHP 等等。其實作項目的第一步,後端寫出業務服務接口,在業務量上來以後考慮好比性能優化,好比負載均衡,或者再好比後端架構分層等等。

文彥峯:其實,接入也有不少要作的,通常要和終端一塊兒作,路由、負載、流量控制、安全、監控、旁路、優化 TCP 協議棧、內核參數再到硬件的支持等等。作業務,好比網關、鑑權、微服務框架、服務治理、緩存、消息中間件;存儲,單機房如何保證數據不丟,多機房是單向同步,雙向同步,出了異常怎麼經過日誌恢復,數據的檢查,靜態檢查點的選擇。怎麼作分片,怎麼擴容不影響原來的分片?

王威:因此說到底仍是得有這個項目需求,圍繞着需求來分析須要的技術,而後再研究技術了。感受純按照興趣來學新的技術,做爲對這一個技術有個優缺點簡要了解,在須要的時候能快速學習。我我的仍是以爲,想成爲一個「全棧」,就找一個想法並實現它。

周淵:好比,你以爲 NBA 好看,想要作一個 APP 能提醒比賽,那麼天天下班後,沒事寫幾個小時代碼,三個月後,你就會發現作成了。

林曦:我以爲作個「入門型」的全棧比較容易,真正能作到都有必定深刻的瞭解很難,融會貫通更難。

拯救與逍遙:先自學基礎入門,進階的話,能夠隨公司項目,初期不能直接參與,可是咱們能夠主動思考技術方案,而後參照其餘同事最後落地的方案,對比總結。能力慢慢提高,真正上手的機會總會有的!

周淵:最重要就是,Just Do It !

林曦:不過大公司相對有一個好處,就是能遇到「牛人」的機率也比較高,因此開發過程當中,某一個部分遇到瓶頸的時候想要找人討論或者請教,找他們也是比較好找的。

周淵:高人點撥,確實重要,可是創建在你入門的基礎上。

拯救與逍遙:不少時候,咱們不能作最想作的事情,並且要停下來推進一下,阻礙咱們繼續前行的事情。可是,有些坑,有些歷練是必須的,別人說一萬遍,咱們仍是得本身歷練。並且不少技術選型,都是在真正落地以後,才暴露出問題。

王威:採坑是必然的!運氣好的話,採坑的代價低,運氣很差的話,採坑代價可能毀掉整個項目。不過有些坑,有多是在技術選型的時候就會暗含的,這個時候確實很差找。

王威:咱們業務在往圖數據遷移的時候也踩了不少坑,由於咱們是社交軟件,因此不少需求是基於用戶關係的,好比喜歡、不喜歡、好友等等。。。最開始以爲 neo4j 挺方便的,導入數據的時候發現,免費版就是個坑爹的玩具。。。收費版貌似5千刀一個月還說多少,巨貴。。。

王威:創業有這個好處就是人少,一我的當多我的用,這個時候就有不少機會去摸新的東西,不過缺點就是沒人帶,本身摸石頭採坑。。。

王威:不過對於我來講收益大於採坑風險。。。因此仍是得圍繞這個需求,一圈一圈的挖掘更好的解決方式,這個是一種學習的過程。尤爲是在風險可控範圍內,絕對鼓勵你們嘗試新的東西。

到最後你的選擇不少時候依賴你團隊的水平,怎麼把這些人水平帶起來,你這些才能作細

最好的成長就是在業務中成長

林曦:架構也是活的,須要不斷生長,不斷修改。不過,前期埋的坑也只有後期加班吞了,沒有一勞永逸的架構!

董飛:我以爲重要的仍是分享,別人幫你填了坑,你也能夠幫別人填坑。而媒介就是博客,你們能夠互幫互助。

王威:說到寫博客,我以爲能夠把思惟給規範化,把想法記錄下來的同時還能注意到之前沒注意到得細節,絕對是學習新姿式最必要的補充。

伍星-優才創始人:曾經,我就主動地提出來幫公司承擔一些的運維方面的事情。而後就本身學習,請教,後來很天然地就成爲全棧了。固然,全棧並不意味着上班學別的,咱們上班時間把公司的事情作好,這纔是成爲全棧的前提。

伍星-優才創始人:還有一點,就是咱們在寫代碼的過程當中,要考慮怎麼優化,怎麼寫得更快更好,而不是像「搬磚」似的,簡單的重複。「搬磚」工做很快就會被淘汰掉,積累核心競爭力纔是發展的根本 。

王威:好比作APP,在寫從服務端拉取數據的時候,就能夠考慮一下他們爲何要提供這樣的數據結構?這樣的接口如何進行實現的?有這些疑問的時候,就會促進本身去看看去了解一下相關的知識,這樣才能不斷通向全棧之路。

固然,完成是一碼事兒,完成好是另外一碼事兒。全棧的意義不是全都泛泛地去作,而是在作深本身的領域同時,也能借鑑其餘的技術,至少在團隊開發時候溝通成本會減小不少。

趙建彬:其實,產品並不會關心你代碼怎麼寫,關鍵本身要寫出讓本身以爲滿意的、高質量的代碼。

薄建業:全站人才能夠站在更高的視角,提供「一攬子」的解決方案,避免踩深坑!

文彥峯:熱衷於技術,成全棧是遲早的事兒,技術全面某方面又比較深刻,天然能解決別人解決不了的問題,能作別人作不了的事情,團隊中的影響力,行業中的影響力,也天然就有了,造成正向循環,仍是挺不錯的!

伍星-優才創始人:就像羅輯思惟跨年公開課說的那樣,核心競爭力,就是你的不可替代性。咱們不能單純地說「全棧」好,不少初學者會被誤導,是由於他們不瞭解什麼是全棧,怎麼才能成爲全棧。就像武功也有練「走火入魔」的。

其實,加入一個快速成長的團隊創業。是成爲全棧的最快捷途徑。這個團隊,也多是大公司內部創業團隊。也多是你們都把工做看成創業的團隊。而沒有好奇心,沒有折騰勁,沒有學習能力,沒有開放心態,是不可能成爲全棧的!

http://quanzhan.ucai.cn/intro (本文是優才學院創始人伍星對全棧的理解,發佈後2014年4月份,到如今也沒有改變,歡迎你們閱讀。)

本文系國內 ITOM 行業領軍企業OneAPM 工程師編譯整理。咱們致力於幫助企業用戶提供全棧式的性能管理以及 IT 運維管理服務,經過一個探針就可以完成日誌分析、安全防禦、APM 基礎組件監控、集成報警以及大數據分析等功能。想閱讀更多技術文章,請訪問 OneAPM 官方技術博客
本文轉自 OneAPM 官方博客

相關文章
相關標籤/搜索