從小米辭職出來創業的兩個多月里,通過獵頭或自己投簡歷,先后面試了知乎,今日頭條,豌豆莢,美團,百度,App Annie,去哪兒,滴滴打車等技術團隊,一二面(技術面)幾乎都輕松的過了,三面卻沒有畢業那會的干脆。
回想兩年前剛畢業那會,去百度,創新工場,搜狗面試,一二三面全都一次通過,在面試完回家的路上就接到電話拿到了offer,去年加入小米亦是如此。
工作兩年后,隨著項目經驗的積累,技術能力的沉淀,團隊管理的成長,似乎反而更難拿到offer,有些迷惑,有些思考。
序
經過思考也深刻分析了原因,優點是知識面廣,架構設計視野開闊,缺點是精專不足,基礎知識不夠非常扎實,跟自己的工作閱歷有關,原因終在自己。
先介紹一個名詞“全棧工程師”,這個詞在國外(Quora,StackOverflow)和國內(知乎,CSDN)知名論壇的討論是比較火的,結論也是毀譽參半,詳見我的個人博客:全棧工程師的毀與譽
全棧工程師(Full Stack Developer),又名全端工程師,指掌握多種技能,并能利用多種技能獨立完成產品的人。簡言之,他一個人可以做一個系統。
當年研究生畢業時,放棄了百度,搜狗的高薪offer,選擇回到創新工場(注:研一暑假在百度實習半年,后來研二暑假去了創新工場實習,更多經歷見CSDN專訪),加入創業的潮流中,在一個初創的技術團隊;去年又加入小米電視團隊,也是一個初創技術團隊。
初創的技術團隊,優勢是它有一個足夠大的舞臺,能夠讓你盡情施展自己的才能,發揮自己的技術,拓展事物視野;缺點是業務剛起步,你必須扛住壓力,快速學習各種技術,迅速搭建業務原型并上線,核心是解決問題。
在創業公司里,各種快速迭代的業務需求,強力驅使你必須快速的融入團隊與技術,從Android應用,到Android游戲,到網頁爬蟲,到游戲后臺,到AWS服務器,到后臺接口API封裝與優化,用到的技術也是從前端到App,從后臺到測試自動化,用到的語言和工具有Java,Python,HTML/CSS/JS,JSP,HighChart,Shell,AWK,MySQL, Memcache, Redis, DynamoDB, MongoDB,Tomcat,Resin,Apache,Nginx,Tornado,又拍云,阿里云,AWS云服務等,猶如一個知識網絡棧,一個人全搞定!
悲
廣而不精,往往會被認為功底不深厚(實事也可能是),比較難進TABLE(Tencent, Alibaba, Baidu, Xiaomi, 360)等大公司的核心技術部門。
由此,全棧工程師的地位就很尷尬,說得不好聽一點,全棧工程師就是什么都會,什么都不會。
他們的技術專長是能夠根據不同業務特點和項目周期,合理權衡并選擇相應的實現架構和工具,因為他們有著全局性的思維視野和業務經驗;
但他們的弱點也很明顯,例如在應聘面試的時候,就會很吃虧,在某一專業領域,他可能只會用來解決問題,但研究的不夠深入,在遇到深入某一專業面試的時候可能會被提前直接淘汰。
全棧工程師,猶如一匹赤兔馬,埋沒于千軍萬馬里,遇到賞識自己的伯樂,它將會成為一匹脫韁的戰馬,馳騁沙場,縱橫千里,蕩平千川萬水,幫助主人成就一番豐功偉業。
面試,在基本技術能力和責任態度都靠譜的前提下,更多的是和面試官的一種緣份。
鑒于此,在簡歷的項目經驗和技術專長里,會特意去掉了一些自己熟悉并能用之解決問題的技術,項目經驗也只寫一兩個具有代表性的作品,目的只有一個:盡力避免給面試官以為自己什么都會,什么都不會的印象。因為大公司的很多面試官,在潛意識里就只招技術專業精專的人才,哪怕在實際項目中用不著那么高深的專業能力,哪怕實際項目需要的是技術面廣,更肯學習,更能解決問題的人。
全棧工程師與專家工程師,猶如一個是特戰隊員手里的瑞士軍刀,一個是削鐵如泥的干將莫邪。
瑞士軍刀負責單兵獨入一個人清除掉項目前期的各種技術障礙,快速實現產品原型,驗證產品的可行性;
干將莫邪就像項目底層技術的中流砥柱,穩健有力支撐強大的業務技術難點,但需要多柄干將莫邪劍融合才能顯示出它的強大威力。
這兩個技術方向都沒有對與錯,發展到一定程度都會相互溶合,就好比中國佛家禪修的南頓北漸,其實到了最后,漸悟與頓悟是一樣的,頓由漸中來。
歡
全棧工程師不是全為了工作本身,而是為了方便實現自己的夢想。
工作對于他們來說不是負擔,而是一種樂趣;工作已融入了他們的生活,猶如空氣和水。
全棧工程師,是一群渴望上進、積極主動、務實肯干、想闖出一番天地的程序員。
他們內心深處不安于已掌握的技術和安穩的工作,他們非常樂意并且會主動去學習一些新技術,新框架,業余時間還會自己動手實踐一些小創意,寓學于樂。
工作,學習,技術,小創意,已經成為了他生活的一部分,不斷主動的去學習,自然而然的就學會了多門技術,精通多種語言。
技術學無止境,廣而不精,這個問題自己也很早就認識到了,也想了很多辦法來彌補,例如花大量時間和精力寫技術博客,記錄自己學習到的點點滴滴,并把知識和技術轉化成自己理解的語言;遇到解決不了的問題,會很自然的主動去官方下載源碼下來學習;業余時間自己也動手實踐,做一些小創意(建立博客,音樂盒,理財)或寫一段工具源碼托管在Github上(priorityqueue),來加深自己對技術理解。
在工作之余的周末假日,會宅在家里研究一些自己感興趣的技術或產品,例如自學Clojure,Go,PHP語言;搭建WordPress博客,Discuz論壇;創建微信公眾帳號(ithomer),支付寶捐助;搗鼓GAE,AWS,BAE,SAE,Aliyun等各種云服務(對比);安裝配置Tomcat,Resin,Apache,Lighttpd,Nginx,Tengine服務器;學習Hadoop,Storm,Lucene,SolrClould,ElasticSearch,Sphinx等工具;跨平臺Thrift,Protobuf接口…。(不會又是精而不專的“罪證”吧,^_^)
自認自己還不算一名真正的全棧工程師,它只是自己努力的方向,在通向全棧工程師的道路上,業余時間做的小產品,讓我感到很快樂,有一種淡淡的成就感。
在中科院,百度,創新工場,小米的學習和工作經歷,不僅學會了分析解決問題,更學會了思考。
各種編程語言,系統架構,設計模式在我的腦海里,已經編織成了一張脈絡清晰,相互交融的知識網。
當遇到問題,會立刻由點及面快速搜羅合理的解決方案,并快速實現項目原型;當遇到新技術,會發散聯想已有的知識體系來對比學習,把它編織進自己的知識網絡,最終提煉,磨合,打通經脈,做到融匯貫通,自成體系。
我追求的全棧工程師,是從全棧 —》 精專 —》 精專全棧的迂回輾轉,回味甘甜的一條路。
路上,有苦亦有樂,也有說不出的難言與誤解,更多的是自己學習奮斗的青春歌謠,自己是快樂著。
悟
以前,軟件工程師最在意的是成為某個領域的專家或者高手,例如中國第一代程序員王江民,鮑岳橋,求伯君等。
今天,隨著軟件技術的發展以及需求的變化,尤其是越來越多的程序員出來自己創業,由于各種條件限制,許多技術上的問題不得不親力親為地去完成,因此,很多程序員慢慢地就練就了精通多門技術的本領,有意或無意識之間便成了全棧工程師。
一個真正的Full Stack Engineer,他從生活中發現問題,洞察需求,并設計解決方案,開發出產品原型。為了達到目標,他愿意去學習任何領域的技能和知識。同時他不追求一個人完成所有工作,如果有人可以比他在某方面做得更出色,便會十分熱情的邀請他們加入。
Full Stack Engineer的核心并非否定團隊和協作,而是更多的體現在架構設計,快速原型,TroubleShooting等方面。隨著今天的分層越來越清晰,平臺和語言越來越有特點,更加全面的技術人員可以根據不同的語言搭建整個架構。
全棧工程師,在創業公司,大企業,小團隊,都可以發揮出他獨有的技術特長。這一特長在面試,剛進公司或許還體現不出來,甚至還會有負面的印象(不夠精專),但一旦他熟悉了業務,跟進了團隊的節奏,他體內的巨大能量將會源源不斷的釋放出來,對團隊的貢獻將會是兩三個工程師工作量的總和還多。因為全棧工程師,具備了前端后臺以及測試運維服務器等多專業知識,溝通成本幾乎為零,他甚至可以在不尋求外力的條件下,獨立完成整個項目的核心或全部(時間足夠)。
工作,只是全棧工程師生活的一部分。
在工作中,由于種種條件限制,全棧工程師的能量很難全部釋放出來。
全棧工程師,是孤獨的,也是寂寞的,他們在寂寞中孤獨。
一個真正的全棧工程師,目標只有一個:創業。
-
工程師
+關注
關注
59文章
1571瀏覽量
68589
發布評論請先 登錄
相關推薦
評論