如何選擇Web 前端和後端的技術發展方向?

我工作兩年,Java Web開發,屬於從前端一直寫到持久層的搞法。
在過去的開發中,逐漸對前端開發產生了興趣,看了很多文章和書籍,也粗略研究了一些小東西,所以想找份前端的工作(之前工作主要以後台為主)。但是最近在思考為什麼想「轉行」做前端時,卻想不出令自己信服的理由:前端實現效果快?正如@賀師俊先生說的,這反而是浮躁的表現,junior靠興趣或許可以維持,senior呢。另外,前端涉及的各種瀏覽器/終端兼容性非常枯燥,我無法確認自己是否能一直「感興趣」下去。
從現實來看,我自己的工作/項目經驗大多是後台相關,去互聯網的前端應聘相關經驗過少,眼高手低,可能很難拿到團隊氛圍好且和之前收入持平的工作,正如上面所說,對「轉行」前端動力不足的情況下,自己很難降薪求職。

  • 從技術方向上,前後端哪個更適合做長久的職業規劃(我聽到蠻多高級前端比後端較難發展的傳言,另外雲服務的大環境下,應用後台能力趨同,各個應用的競爭力是否前移到前端)?
  • 從現實講,我的情況是把前端作為工作好,還是作為興趣好?

按照@賀師俊先生的建議,我把困惑提出來,可能有很多新手也有同樣的疑問,煩請各位前輩不吝賜教,非常感謝


首先,興趣是非常重要的。我個人認為除了少數意志力堅定的人,大多數人只有在自己有興趣的領域才能發展事業。

但是是否「覺得兼容性很枯燥」,就一定無法「感興趣」下去,
這個其實不好一概而論。比如對兼容性問題單純感到麻煩棘手,這個恐怕很難做好前端。但是如果對探究某個兼容性問題有興趣,但當探索完畢後,又厭煩每次都要為這個問題寫額外的兼容性處理代碼,這個就未必是壞事,因為這也能激勵你去尋找工程方法來避免重複的事情。

這裡提到的可歸納為程序員美德中的「好奇心」和
「懶惰」,這品質前後端都適用,僅僅是領域不同而已。如果你覺得自己有這樣的品質,那麼無論做前端後端,或者換來換去都沒問題。

但如果這兩方面的品質不夠,可能後端甚至運維崗位更好一點。原因是這個領域更成熟,技術變更速度也不像前端那樣快,單靠積累經驗也可以成長。當然後端乃至運維的領域也很廣泛,不好一概而論。我這只是籠統對比前端而言。

拋開前端還是後端,或許你更要考慮清楚的是自己對技術的熱情到底是怎樣的。比如是更多來自於「實現了功能、產生了價值」,還是「解決了問題,探索了未知領域」。前者是產品工程師,後者是技術專家。注意這兩者並沒有優劣之分,但是會決定你的職業方向。所以你要考慮的是你內心更希望成為哪種人,是能和產品人員一起甚至單槍匹馬可以搞定一個改變世界的產品,還是在某個技術領域上做到業界頂尖。極個別的天才能兩者都做到,但是大多數人只能選其中
一個方向努力。當然這都是我一家之言,你可以把問題發出來,多聽一些意見。

最後補充下,我個人認為對於前端來說,有其他方向(不限於後端,也可以是完全與web開發無關的編程領域)的經驗是加分項,前提是在那些方向是真的能深入,而不是做不下去了轉前端。如果任何人是這樣的情況,又想做Web前端開發相關的工作,可以投簡歷給我。


請不要困惑前端後端這個問題。你如果做的是 Web,那我推薦你通吃。

做了兩年,容易出現的困惑是懷疑自己進步的不夠快,不能跟上「時代」。但是,這不是武俠小說,你不需要練一個獨門武功。作為一個工程師,你需要的是解決問題的能力。搞清楚問題,做好優先順序的選擇,最後上手解決它。

我們的行業的確有很多出名的專家,但是我們這個行業不是靠出名的專家運轉的。最能交付產品的人,和賺到錢的人其實不是那些專家,而是多面手。

如果覺得做技術做到瓶頸了,那麼提醒你自己一下,你就是個手藝人。學手藝,那就是努力做人,順帶著練練手藝。不過,也許有一天你不想做手藝人了,那也沒關係,學藝過程中已經學會如何做人了,那麼走別的路也會成功。

順帶向 賀師俊 敬禮,能在前端崗位走那麼遠,需要很大的興趣還有毅力。


最近遇到了兩三名做Java/Python對前端感興趣的童鞋,或許我這裡有你想要的答案的一部分。

先談談我最近一個月做的事情吧:

  • 梳理團隊前端對樣式的需求/對市面上的框架進行選型,對比優缺。
  • 梳理團隊(包括公司)現有項目前端模塊/組件的情況,找出普適的方案,並配套工具,測試可用性,用的舒服與否,之後擴展性如何。
  • 對比基礎類庫的實現差異,了解不同場景下的選型問題,以及他們的周邊建設可以實現共享么。
  • 做了一個統計業務需求,在做一個支付業務需求。
  • 在做腳手架、和本地開發環境,來加速團隊童鞋的開發。
  • 還有一些好玩和想做的事情,有的被其他的童鞋『佔有』了(淚目),有的還在排隊執行中,諸如:
    • 數據渲染,什麼場景用什麼方案,各種相似的API有無可能用一套方案管理;
    • ELK自娛自樂搭建;
    • DDNS服務的搭建;
    • mock api相關的事情;
    • 測試相關:單測,自動TDD,多終端測試管理;
    • docker來做開發時候的完美環境模擬開發環境的可用性保證;
    • 上線發布流程;
    • 簡單的運維監控;
    • 一個內部好用的voting;
    • (發現寫不完啊),etc...
  • ps:業務都是移動端的(之前的積累並不多),基礎建設要考慮多端,以及儘可能一致的體驗,當然還有能夠優雅降級。

不難發現,除了『基礎建設』外、還有『基礎業務』、以及『亂七八糟』的雜事。
但是,基礎建設中的事情,是可以加速個人做基礎業務的,而亂七八糟的事情,很多是促成基礎建設的。

junior 和 senior 的區別,應該不是技能的差異,也不可能是熱情和興趣的差異,差異只可能是對未來的規劃,對行業的了解,如同下棋,走一步下一步的人,除了運氣好和對手謙讓外,勝率應該感人。

你說到前端涉及瀏覽器兼容性問題,非常枯燥,但是有想過,為什麼他們會有兼容問題,以及直觀上看不見的『兼容』問題,可以更好的解決么?

比如:

  • 瀏覽器小版本變化,樣式有細節差異,怎麼做可以在瀏覽器下一次變化的時候,最快的定位樣式變化的地方,並fixs;
  • 再比如,瀏覽器完全out出局了,CollectGarbage這類老古董,怎麼樣安全合理的從代碼中剔除掉(原來的代碼該如何分層);
  • 再比如,不算很新的react、riot他們怎麼做ie8-的支持,是換方案(前端方案,還是後端方案);
  • 再比如,大的框架大版本升級了,bootstrap v2-&>v3了,怎麼做,可以快速的迭代完整個產品;
  • 再比如你的服務要添加多語言版本,怎麼樣做,改動最小呢;
  • 再比如,之前用grunt好好的,但是任務越來越多,或者文件越來越多,編譯時間越來越長了,用gulp的話,可能有的插件不靈光,最小成本的復用模塊又該如何?
  • 再比如,如何用最小的成本,做用戶數據的迴流,統計代碼如何動態適配不同的場景,代碼該如何設計,熱patch,動態插件...
  • 好多好多事情,似乎也列不完啊

一個一個小怪站在你的面前,少年,你不要操起手中的武器,暢快的戰個痛?
我承認最近暗黑3玩多了,全職業70,法師/獵人/騎士套裝已OK...(請原諒WOWer對暗黑職業名稱的shim...)

職業規劃和薪酬的問題,或許應該找 @Easy 大叔,當然,如果對我們團隊感興趣,也可以找我們團隊的錢袋管家 @崔凱 (我們也在尋覓有後端經驗的童鞋喲),希望我的回答解決了你擔心找不到好玩,或者感興趣的東西的擔憂

哦,對了,如果你看的到這裡,個人覺得:錢應該是永遠都賺不夠的,就和時間永遠都不夠花一樣,如果每天工作都不開心,是我的話,寧可賺少點,況且,隨著現在的市場內的產品對於展示需求的膨脹,和學校前端這方面的人才缺口,未來前端方向(況且,本來就不該刻意區分開發的屬性)怎麼樣,還未可知。

最後的最後,我們團隊缺人吶,一個月內來的童鞋估計可以一起搭建基礎,兩個月左右來的童鞋就只能使用既定方案咯(探索你不熟悉的事情,可以讓你得到大量經驗值喲)


我是前端,最近感覺nodejs也就這樣準備去學python。題主你可以感受下…


推薦閱讀:

如何申請勞動仲裁?
Android開發還是cocos2dx遊戲開發呢?
國企和央企有什麼區別?
*-造價這個行業真的好?
體制內的大齡青年,辭職後應該如何重新規劃職業路徑?

TAG:前端開發 | 程序員 | 職業規劃 | 計算機網路 |