在咱們實際的開發過程當中,咱們當前這樣定位前端、後端開發人員。html
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。前端
2)後端開發人員:會寫Java代碼,會寫SQL語句,能作簡單的數據庫設計,會Spring和iBatis,懂一些設計模式等。java
如今來看,咱們對先後端的要求仍是蠻低的,尤爲是後端,新員工通過培訓以後都是能夠參與到後端開發的,沒有過高的技術門檻,惟一須要作的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。mysql
仍是先google一下,看看網上對Web前端開發、Web後端開發分別是什麼?程序員
Web前端: 顧名思義是來作Web的前端的。咱們這裏所說的前端泛指Web前端,也就是在Web應用中用戶能夠看得見碰得着的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。web
Web後端:後端更多的是與數據庫進行交互以處理相應的業務邏輯。須要考慮的是如何實現功能、數據的存取、平臺的穩定性與性能等。sql
咱們再來看看大公司對先後端人員招聘的要求,經過這個角度看看前端、後端的技術要求:數據庫
Web前端:編程
1)精通HTML,可以書寫語義合理,結構清晰,易維護的HTML結構。後端
2)精通CSS,可以還原視覺設計,併兼容業界認可的主流瀏覽器。
3)熟悉JavaScript,瞭解ECMAScript基礎內容,掌握1~2種js框架,如JQuery
4)對常見的瀏覽器兼容問題有清晰的理解,並有可靠的解決方案。
5)對性能有必定的要求,瞭解yahoo的性能優化建議,並能夠在項目中有效實施。
6)......
Web後端:
1)精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex開發,或者對相關的工具、類庫以及框架很是熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對Web開發的模式有較深的理解
2)練使用oracle、sqlserver、mysql等經常使用的數據庫系統,對數據庫有較強的設計能力
3)熟悉maven項目配置管理工具,熟悉tomcat、jboss等應用服務器,同時對在高併發處理狀況下的負載調優有相關經驗者優先考慮
4)精通面向對象分析和設計技術,包括設計模式、UML建模等
5)熟悉網絡編程,具備設計和開發對外API接口經驗和能力,同時具有跨平臺的API規範設計以及API高效調用設計能力
6)......
從幾個公司的招聘要求能夠看到,作Web開發,對前端和後端的要求是各自所不一樣的。而咱們目前的實際狀況,也和這個差很少,可是,咱們不管在知識的掌握程度上,仍是知識掌握的寬度上,都是不夠的。
首先,咱們在前端缺少積累,沒有沉澱,專業的前端技術的積累是從去年纔開始的,同時,在前端也缺少支撐與高手,因此,走起來比較困難。同時,前端人員培養的較少,一個緣由是對前端了解太少,另一個緣由就是對前端與後端的工做比例估計不足。所幸,咱們在這一年也在前端有了很快的進步,培養了幾個優秀的開發人員,有意識的解決了前端的用戶體驗,這都是可喜的。今年,須要更進一步,專業化。
其次,咱們在後端發展的不夠寬,後端的知識體系已經比較完善,可是,不少應用點都沒有涉及到。同時,對現有技術框架的理解都不夠深刻,太浮躁。咱們目 前的設計團隊在解決互聯網高併發、大數據量的存取上經驗與能力都還不足,須要正視這些問題。後端技術的發展須要更加的精進,以解決實際存在的問題爲主。
最後,咱們在前端、後端都缺少熟練工,這會影響到開發的速度,同時,也不利於後期技術的研究。
web前端跟後端有什麼區分,通過蒐羅也找到這麼一篇文章,附上:
咱們常常對Web designer(網頁設計師)和Web developer(網頁開發者,也稱程序員)傻傻分不清楚,其實他們之間有着巨大的差別。二者之間的差別主要表如今:一個是有關網站的視覺或美學方面,被稱爲「前端」;另外一個則是看不見的編碼方面的設計,被稱爲「後端「。簡而言之,漂亮的網站界面都是出自網頁設計師之手,而牛逼強大的功能則是網頁開發者的傑做……
以上只是從雙方的職能上來理解彼此的差別,事實上他們的差別遠不止這些。爲此,國外設計網站Downgraf特地製做了一張圖表來展現兩個職業的種種差別:網頁設計師和網頁開發者(程序員)都留胡茬,一個沒錢,一個沒時間;二者都喜歡內涵T恤,一個走字體設計路線,一個走代碼風;二者都配自家設備,一個必帶MacBook Pro,一個只挑小鍵盤⋯⋯除了以上種種差別,他們還有一個共同點:懼怕MM,看來都是「宅」惹的禍。
再來看一下前端設計師與後端開發師的比較形象的區分:
WEB前端和後端開發面臨的挑戰
要成爲一名高效的Web開發者,這須要咱們作不少工做,來提升咱們的工做方式,以及改善咱們的勞動成果。而在開發中不免會遇到一些困難,從前端到後端,近日,在問答網站知乎上,有人拋出了「Web前端開發面臨的挑戰主要有哪些?」和「後端開發主要的挑戰有哪些?」。
1、Web前端開發所面臨的挑戰
盛大Web工程師 曹劉陽:前端語言的膠水性需求太強 前端必須重視可維護性
1.CSS和DOM提供的接口水平過低了,而BOM提供的控件只有input、select、textarea這幾種最基本的,稍複雜一點的UI效 果,都要前端本身利用CSS和DOM去組合創造。看到一個需求,腦子裏第一步要想如何利用CSS、DOM這些基本的零件組合成最終的效果,實現最終效果其 實是一個「創造」的過程,好比說tabView,treeView,richEditor,colorPicker這種看起來常見的組件,其實在前端裏都 是沒有現成可用的,須要本身去實現。
2.前端語言的膠水性需求太強。CSS、DOM、JS是三種不一樣的技術,這也是前端知識系統中要掌握的最重要的三個基本功。server端編程固然也 會須要不一樣方向的知識,好比PHP、SQL等,但server端編程大部分時間只用專一在某一個知識點上,只要必要時粘一下其它語言。但前端不一樣,前端的 效果是經過CSS、DOM、JS三者配合起來最終呈現出來的,脫了任何一個技術都步履維艱,時刻要同時考慮多個方向的知識點。換句話說,server端編 程像是一個單線程,即便有技術交差,也是串行的,而前端編程像是開了三個線程同時在跑,複雜度是成倍增加的。
3.CSS+DOM+JS的組合實在太強大了,同一個效果能夠有多種徹底不一樣的實現方式,每一種實現方式都會有不一樣的開發難度、擴展性、可維護性。解 決方案太多,看到一個效果首先會先想到如何用CSS和DOM裏那些low level的接口實現,這是一個「創造」的過程,這時腦子裏可能冒出好多種不一樣的實現方法,「創造」完了以後還要「比較」,權衡各類解決方案的優劣,糾結 一陣以後,才能選出最適合的方案。固然,並不是前端都是完美主義,必定要選一個最好的方式出來,而是由於前端是GUI編程,直接面向用戶,是最直接的產品呈 現的部分,是門面。正由於如此,因此前端也是最容易被反覆修改的部分。反覆「修改」有多可怕,是個程序員都懂的,若是可維護性很差,那簡直是惡夢。因此前 端不得不重視可維護性,不重視可維護性直接等於自虐。
4.瀏覽器兼容性。瀏覽器種類很是多,IE、Firefox、Chrome、Opera、還有衆多的IE加殼瀏覽器,相似搜狗、傲遊、360,再加上 這些瀏覽器的移動終端版本。須要有Web標準,前端的知識大部分是通用於各個瀏覽器,但仍是會有歷史遺留問題,不一樣的瀏覽器有不一樣的問題特別是市場佔有率 最高的IE系,就IE本身市面上就有六、七、八、9這4個版本,4個版本之間各有各的問題。若是不積累點經驗,面對疑難雜症那是一頭霧水。
豆瓣前端工程師 張克軍:前端開發的五大挑戰
第一大挑戰:兼容性。雖然微軟已經決定將IE 6安樂死,IE 9/10看起來至關標準。向後兼容彷佛輕鬆了,但向前兼容又開始愈來愈讓人頭疼了。Android上的webkit是多麼混亂,在桌面瀏覽器上老是有CSS Hack能夠擺平,但在mobile上只能考慮退化方案。從兼容瀏覽器(外加套殼的瀏覽器)到兼容設備,實際上兼容性變得更復雜了。
第二大挑戰:交互的複雜度。和目前UI/交互的要求相比,瀏覽器引擎給咱們接囗的確過低級了。因而今年前端技術的熱門話題是各類Javascript,CSS的預處理器、各類MVC框架和微框架的討論。
第三大挑戰:代碼可維護性。複雜度的提高直接影響代碼的維護性。JS/CSS/HTML代碼生命週期愈來愈長,也就愈來愈須要從代碼質量、架構和工具上保證它們的可維護性。代碼的歷史問題是永遠的痛點。
第四大挑戰:性能。
第五大挑戰:我的成長。
互聯網評論員 莫言:開發者的思路很重要
前端的開發,若是沒有整體的設計思路,會成爲一種碎片似地程序,一個效果一堆代碼,一個功能一灘腳本,一個需求片邏輯,我曾經遇到過,由於ue調整, 把整個前端的代碼除了核心數據處理函數保留,其他的所有修改的狀況。基本上前端的開發,處於DOM操做,數據處理,數據交互三部分,若是合理的分配這三部 分的功能,那麼前端的代碼就很容易擴展和調整。他認爲真正的前端開發挑戰,還在於開發者的思路。兼容性,佈局,CSS和JS都不是問題,問題在於如何合理 的組織語言邏輯,若是正確抽象出需求中的模塊。如何用代碼處理,清楚的用代碼表達出思路,清楚的寫好註釋,給後續維護者一個可閱讀的思路。前端的改動量, 是後端的數倍,前端沒有絕對,只有跟隨需求不停的修改。
2、Web後端開發面臨的挑戰:
1.第一大挑戰,後端開發最重要的挑戰,來自於規模
規模的擴大,好比訪問量擴大,文件存儲量擴大,數據量擴大,服務器數量擴大等。一個前端看起來如出一轍的網站,某一種指標若是擴大十倍,幾乎都會面臨 一大堆的問題和挑戰。另外一方面,在規模擴大之後,後端系統架構,必定會複雜化。原來只有一臺Server,LAMP都裝在一塊兒。而後數據庫分出來,反向代 理,負載均衡,分庫分表,Memcache,Message Queue,事務處理,CDN,NOSQL,種種架構,Server,就逐漸的演化出來了。架構的複雜化,天然會帶來更多的問題和更多的挑戰。
2.第二大挑戰,來自於安全
安全問題層出不窮,防不勝防。須要技術手段,也須要管理制度。
3.第三大挑戰,來自於效率
可否提供足夠的處理速度,可否提供足夠的帶寬,可否保證響應能力,這些是對外的效率。可否使用更少的服務器,可否使用更加便宜的服務器,可否使用更加節省能源的服務器,這些是對內的效率。
4.第四大挑戰,來自於需求變動
固然,不管前端後端,都會面臨需求變動,只要是軟件開發,這都是大挑戰。可是當一個系統已經穩定的,高效的運行時,需求變動來了,在知足需求以後,本來來沒有問題的部分,會不會忽然崩潰,一旦崩潰,就是後端工程師的噩夢。
5.第五大挑戰,來自於教條
這個世界上有無數IT大公司,他們都很開放,都願意分享本身的架構與技術。因而,對於「眼界開闊」的後端工程師而言,困難不在於如何解決,而在於如何 從衆多的解決方案中作出挑選。框架、實踐不斷涌現,成功案例也不斷涌現。人家都用得好好的,你敢用嗎?究竟是敢於嚐鮮,仍是保守要緊呢?這個很難。
互聯網評論員 Neo Lee:後端開發的三大法則
1. Design for failure。後端至關比例的代碼不是爲了通常狀況下正確而存在,而是爲了保證特殊或者極端狀況下系統可接受的響應而存在的。這裏有很是多的折衷要作: 漸進改進仍是超前設計?水平擴展、業務優化、前臺仍是後臺處理?大量的折衷都是要根據不斷變化的環境和需求去權衡的,因此很容易犯錯。
2. Architecture is about abstract。爲何要抽象?由於抽象的概念有更好的適應性,更易於複用,更能靈活適應變化。可是抽象是很難的,不恰當的抽象更是貽害無窮,要命的 是,這些並無很好的方法論,多數是依靠一組基本的原理,憑經驗做出的。而Web後端開發在很長時間裏並無很重視這些,不少網站都是粗放型設計和開發出 來的,因此補丁疊補丁的結構就瓜熟蒂落的成爲了主流。
3. Architecture IS product。架構自己即產品,一個軟件產品包含了不一樣的視角,其中最重要的包括用戶看到的視角、以及軟件骨架即架構的視角。但產品就是產品,全部這些 視角都是必須統一和一致的,這就要求架構必須理解產品的靈魂,而產品要理解架構的困難所在,不然很容易出現想作的事情作不到或者以巨大的架構代價實現一個 邊角功能這類悲劇。