[轉載]Web前端和後端之區分,以及面臨的挑戰【轉】

一坨翔發表於2016-11-22

  在我們實際的開發過程中,我們當前這樣定位前端、後端開發人員。

  1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行互動效果的開發。

  2)後端開發人員:會寫Java程式碼,會寫SQL語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。

  現在來看,我們對前後端的要求還是蠻低的,尤其是後端,新員工經過培訓之後都是可以參與到後端開發的,沒有太高的技術門檻,唯一需要做的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。

  還是先google一下,看看網上對Web前端開發、Web後端開發分別是什麼?

  Web前端:
顧名思義是來做Web的前端的。我們這裡所說的前端泛指Web前端,也就是在Web應用中使用者可以看得見碰得著的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的互動實現。

  Web後端:後端更多的是與資料庫進行互動以處理相應的業務邏輯。需要考慮的是如何實現功能、資料的存取、平臺的穩定性與效能等。

  我們再來看看大公司對前後端人員招聘的要求,通過這個角度看看前端、後端的技術要求:

  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前端和後端開發面臨的挑戰

  要成為一名高效的Web開發者,這需要我們做很多工作,來提高我們的工作方式,以及改善我們的勞動成果。而在開發中難免會遇到一些困難,從前端到後端,近日,在問答網站知乎上,有人丟擲了“Web前端開發面臨的挑戰主要有哪些?”和“後端開發主要的挑戰有哪些?”。

 

  一、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自己市面上就有6、7、8、9這4個版本,4個版本之間各有各的問題。如果不積累點經驗,面對疑難雜症那是一頭霧水。

  豆瓣前端工程師 張克軍:前端開發的五大挑戰

  第一大挑戰:相容性。雖然微軟已經決定將IE 6安樂死,IE
9/10看起來相當標準。向後相容似乎輕鬆了,但向前相容又開始越來越讓人頭疼了。Android上的webkit是多麼混亂,在桌面瀏覽器上總是有CSS
Hack可以擺平,但在mobile上只能考慮退化方案。從相容瀏覽器(外加套殼的瀏覽器)到相容裝置,實際上相容性變得更復雜了。

  第二大挑戰:互動的複雜度。和目前UI/互動的要求相比,瀏覽器引擎給我們接囗的確太低階了。於是今年前端技術的熱門話題是各種Javascript,CSS的前處理器、各種MVC框架和微框架的討論。

  第三大挑戰:程式碼可維護性。複雜度的提升直接影響程式碼的維護性。JS/CSS/HTML程式碼生命週期越來越長,也就越來越需要從程式碼質量、架構和工具上保證它們的可維護性。程式碼的歷史問題是永遠的痛點。

  第四大挑戰:效能。

  第五大挑戰:個人成長。

  網際網路評論員 莫言:開發者的思路很重要

  前端的開發,如果沒有總體的設計思路,會成為一種碎片似地程式,一個效果一堆程式碼,一個功能一灘指令碼,一個需求片邏輯,我曾經遇到過,因為ue調整,把整個前端的程式碼除了核心資料處理函式保留,其餘的全部修改的情況。基本上前端的開發,處於DOM操作,資料處理,資料互動三部分,如果合理的分配這三部分的功能,那麼前端的程式碼就很容易擴充套件和調整。他認為真正的前端開發挑戰,還在於開發者的思路。相容性,佈局,CSS和JS都不是問題,問題在於如何合理的組織語言邏輯,如果正確抽象出需求中的模組。如何用程式碼處理,清楚的用程式碼表達出思路,清楚的寫好註釋,給後續維護者一個可閱讀的思路。前端的改動量,是後端的數倍,前端沒有絕對,只有跟隨需求不停的修改。

 

  二、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。架構本身即產品,一個軟體產品包含了不同的視角,其中最重要的包括使用者看到的視角、以及軟體骨架即架構的視角。但產品就是產品,所有這些視角都是必須統一和一致的,這就要求架構必須理解產品的靈魂,而產品要理解架構的困難所在,否則很容易出現想做的事情做不到或者以巨大的架構代價實現一個邊角功能這類悲劇。


相關文章