前端開發的難點到底在什麼地方?
你要問前端開發難不難,我就得說計算機領域裡常說的一句話,這句話就是『難的不會,會的不難』,對於不熟悉某領域技術的人來說,因為不瞭解所以產生神祕感,神祕感就會讓人感覺很難,也就是『難的不會』;當學會這項技術之後,知道什麼什麼技術能做到什麼做不到,只是做起來花多少時間的問題而已,沒啥難的,所以就是『會的不難』。
但是,對於前端開發這個方向,即使『會了』……依然感覺很難,唉,說多了都是淚呀,我用三個親身經歷的怪現象來說明吧。
第一個怪現象:誰都可以指手畫腳的前端開發
我職業生涯很長一段時間都在做前端開發,我也做過後端開發,兩者一對比,給我影響最深的不是技術差異,而是——前端開發者聽到的『需求修改意見』要比後端多得多。
後端這東西,畢竟是藏在後面的,外行不懂就是不懂,裝不出來,他們也不好自取其辱亂比劃,但是,前端嘛……誰都能看得見,沒吃過豬肉還沒見過豬跑,所以,誰都可以指手畫腳提一點意見。
只看得見介面的產品經理可以提一些意見。
專案經理可以有一些意見。
啥也不懂的老闆也可以提一些意見。
甚至連後端都可以來提一些意見。
……
正因為前端的產出是看得見摸得著的,所以造成了誰都可以『提一些意見』的現象。
前端開發最大的痛啊!
第二個怪現象:被鄙視但又十分搶手的前端
前端開發者,你懂的,居於開發者鄙視鏈的低端,業務邏輯大多都居於後端,超大併發量是後端實現的,超牛逼的AI、大資料分析、商業邏輯都在後端,前端要做的只是一個功能展示,所以,後端開發普遍看不上前端開發的工作,直到……到了公司舉辦黑客馬拉松活動的時候。
黑客馬拉松,就是讓程式設計師自行結隊,在幾天之內快速開發出來一個小型專案,到活動結束的時候,每個隊要演示自己的產品,於是,問題來了,平時你可以鄙視前端開發者,你可以把前端開發貶得一文不值,但是,到了黑客馬拉松的時候,才知道前端開發的必不可少,因為沒有前端你無法『演示』你的想法。
這時候,後端開發者也會發現,平時覺得前端開發很簡單,但是自己寫一個最簡單的AJAX form表單提交也要學半天,不管你的後端想法多麼牛,如果最後沒有熟練的前端開發者,最後到了演示環節也要抓瞎。
所以,每到黑客馬拉松時,平時居於鄙視鏈最低端的前端開發者,突然就變成了最炙手可熱的紅人。
誰都覺得前端開發不重要,但是又離不開前端開發。
是不是很諷刺?
在前端領域混了這幾年,總結了一套前端學習的精講視訊和學習路線,如果有對前端開發感興趣的夥伴,
不管你是想轉行,或是大學生,還有工作中想提升自己能力的web前端黨,歡迎大家的加入
我的前端開發交流群:603985993 希望大家誠心交流!,與企業需求同步。好友都在裡面學習交流,
每天都會有大牛定時講解前端技術!也可以關注我的微信公眾號:【前端留學生】 每天更新最新技術文章乾貨。
第三個怪現象:苦不堪言的多端開發
一個正經的產品,為了滿足使用者不同裝置上使用的要求,需要提供多客戶端,最起碼要有網頁端、iOS端和安卓端,現在大部分產品還要考慮小程式端,這還沒算iOS要分iPhone和iPad,安卓也要考慮手機和平板,甚至要考慮機頂盒裝置的介面……
各種裝置、各種安卓版本、各種瀏覽器都有各自的特(bu)點(g),每個前端開發者都有體會,很多精力都消耗在處理某個特定平臺/版本/瀏覽器的bug上,唉,說到這裡真想流淚……
因為要支援這麼多不同的客戶端,一個產品的前端開發者種類也不止一個,要有網頁開發者、iOS開發者和安卓開發者,大一點的專案,靠一個人支撐一種客戶端就不行了,需要的是網頁開發團隊、iOS開發團隊和安卓開發團隊。
其實,不同客戶端實現的都是同一種功能,完全是因為這個世界存在這麼多種客戶端,所以我們才被迫為各個客戶端寫一套程式碼。
雖然多端的存在,增加了不少程式設計師的就業機會,但是,幹過實際專案的都知道,這其實很麻煩,很麻煩很麻煩!為了給使用者最好的體驗,肯定希望各端提供一致的功能介面,如果有新功能,要上一起釋出上線,但是,不同團隊之間開發週期肯定不同,很難保證同時完成任務,最後,花費開發時間最長的那一端的開發團隊就成為整個產品的短板。
每每想到這裡,就緬懷秦始皇,秦始皇你要是不光把度量衡統一,把所有客戶端也統一了多好:-)
前端開發難在哪裡?
好了,看完上面這三種行業怪現象,不難看出,前端開發很真的很有難度,我這裡只列出最關鍵的三點:
第一,當需求發生變化的時候,第一線中槍的往往就是前端,而且很多需求變化和後端無關,單純就是前端的改變。這些需求改變有的是不合理的瞎折騰,但是,客觀來說,也有不少是有必要的需求改變,應該使用者是上帝,使用者的喜好會變化,使用者的喜好我們也要反覆揣摩,必須要伺候好使用者,也就是要適應需求變化,所以,難點就成了——如何讓前端開發適應快速變化的需求?
第二,平臺、瀏覽器生態複雜,要考慮的場景太多,不同平臺上實現同一介面功能的重複勞動嚴重,這個難點在於——如何消除前端開發的重複勞動?
第三,前端的學習曲線其實挺陡,很多後端開發者以為前端只是玩一玩HTML,到了自己上手的時候發現其實要學很多,下面只是一個簡化了的網頁前端學習路線圖。
上面這麼多知識點學會,只能算入門,更不要說:
如果要做到高效能,要考慮CDN優化、JavaScript Profiling、打包策略……
如果要做到安全,要防止注入攻擊,要防止XSS攻擊,要防止CSRF攻擊……
這說的還只是網頁前端,沒說安卓和iOS開發、小程式開發,如果把這些都帶上,需要學習的知識量又要翻倍。
而且,前端也不是說讀幾本書就可以上手做真實專案的,如果沒有對這個領域長時間的浸淫,做出來的東西很可能就是漏洞百出,這個難點就是——如何讓前端學習曲線變得不陡?
總結一下:
如何讓前端開發適應快速變化的需求?
如何消除前端開發的重複勞動?
如何讓前端學習曲線變得不陡?
長期以來,雖然無數仁人志士想要解決這些問題,也取得了一些成果,但是,前端是個被普遍低估了難度的開發活動!
前端開發的出路在何方?
請注意,我現在說『前端開發的出路在何方』,並不只是要解決『前端開發工程師35歲之後怎麼找工作』的問題,我想說的是整個行業如何定位前端開發的問題,或者說開發團隊整體應該怎麼解決前面說過的前端開發困難的問題,反過來,如果我們認清了整個行業對於前端開發的定位,你作為前端開發工程師也就清楚35歲之後如何找到合適的工作。
在我看來,問題的關鍵點就是——現在很多前端開發的工作都是在重複勞動。
難道不是嗎?
你去問一個網頁前端開發工程師,他們在前一個專案裡做的功能,和後一個專案裡做得功能,本質有多大區別?
你去讓一個網頁工程師、安卓工程師和iOS工程師一起討論一下實現的功能,難道差不多就是一樣的,只不過用不同語言、部署在不同的平臺嗎?
你去問一下這個公司的前端,再去問一下另一個公司的前端,他們要考慮的效能、安全性問題,解決方法難道不都是很雷同嗎?
我不敢說所有前端開發工作都是重複勞動,對於一些極具開創新的介面和功能,是開拓一片新的天地,需要前端開發工程師開發全新的應用,但是,讓我們承認吧,對於大部分應用,尤其是對於一些工具類應用,歷史上已經被開發過無數回了,實在沒有必要再重複造輪子了。
只是,每一個應用的開發團隊,都很容易以為,自己的應用是『獨一無二』的,這種想法也可以理解,畢竟,世界上每一個應用都有自己的獨特一面,但是,這不表示所有的工作都應該從零開始。
這個行業已經這麼成熟了,應該有一種儘量通用的框架來抽象可重複使用的功能,從而避免重複勞動,避免了重複勞動,也就解決了前端開發的最大難題。
像React、Vue和Angular這樣的前端框架,就是一種程度上的抽象,也很通用,但我認為並非是前面結論中指向的最佳答案,事實上,行業發展多年,也不乏很多平臺在為了前端開發的輕量化、功能模組化而不懈努力著,最近看到APICloud釋出了一些新的前端能力,也驗證了我前面說的觀點。
瞭解APICloud新產品特性
低程式碼+高效能移動開發
低程式碼雖然早在海外應用多年,但直到這兩年才逐漸被國內所關注,其倡導程式碼複用,以及通過模型或翻譯引擎自動生成大量程式碼,這些都是很好解決前端開發重複性工作和高效迭代的方向;我對於APICloud的認可,也是建立在他們原有的跨平臺開發技術上進而實現了向低程式碼開發平臺的轉變。
這次APICloud的產品迭代方向再次指向了前端,當然,我們都知道,現實中的開發,不可能一步跨入共產主義,歷史上拖泥帶水的程式碼依然存在,開發人員也不大可能一下子換到另一種語言,這一點在AVM這個框架上得到了解決,同時支援React和Vue,無論來自於什麼開發框架背景,都可以在APICloud上快速上手。
上文我也說到,前端開發最大的痛苦,就是多端支援,這一點在APICloud新發布的產品上得到進一步補充,一套程式碼開發,自動生成適合安卓、iOS、微信小程式、HTML5的引用,所有跨平臺瀏覽器的問題得到解決,當然,市面上很多技術都在吹噓類似的『多端支援框架』,但依然要寫很多很多程式碼,這一點可以參考APICloud的做法,就是在功能層實現最大的複用, 其實一款應用中的功能大部分已經由成熟的雲廠商提供了,比如你寫個應用,最常用的IM、支付、統計、地圖等等,但我們整合到自己的應用中還需要編寫程式碼的工作量,這點APICloud則通過統一的標準,封裝到自己的平臺,開發者一鍵整合確實省了不少的事,不用苦逼地重複寫fetch了!
其實現在所有的雲服務都有一個趨勢,那就是簡單易用化,原因也很簡單,既然是『雲服務』了,意味著可以很快用上,也可以很容易換另一家『雲服務』,如果某個雲服務的學習曲線很陡,那麼很快就會讓使用者流失,因為使用者會選擇其他服務,從這一點上來說,可以相信APICloud這樣的低程式碼開發平臺學習曲線相對更加平緩。
最後來說說,什麼人會喜歡APICloud。
從應用開發的角度(也就是從管錢管資源的領導角度),APICloud這樣的低程式碼開發平臺模式,能夠真正解決前端開發的三個大痛苦;但是,從前端開發者角度(也就是出勞力拿工資的打工仔角度),是不是感覺到了一絲絲威脅,如果像APICloud這樣進一步將前端開發者的工作量簡化,那麼豈不是前端開發者都要丟掉工作了?
非也非也!
首先,低程式碼平臺不是無程式碼平臺,該寫的還是要寫,前端開發這個工種並不會消失,只是工作方式和內容發生了變化。
而且,大家要以清醒認識到,幾十年前根本沒有程式設計師這個職位,更不要說前端開發職位,同樣,再過幾十年,有一些職業也會消亡或者改變,與其哀嚎世界變化快,還不如主動擁抱變化,APICloud主導的這種高效能移動開發+低程式碼開發的模式,是一種趨勢,既然改變不了,還不如主動接受。
不光是接受程式碼開發的方式,以及這些平臺所提供的商業眾包資源也在成為很多平臺使用者獲得額外收入的一個主要來源。
如果不想一直996,或者不想35歲之後找不到工作,好好考慮一下吧:-)
相關文章
- 如何進行教育類app開發,開發難點是什麼?APP
- 什麼是前端開發?為什麼要學前端開發?前端
- 為什麼這麼多人覺得前端開發很難做下去?前端
- 使用Netty,我們到底在開發些什麼?Netty
- 前端資料監控到底在監控什麼?前端
- 重要的技術創新節點容易發生在什麼地方?
- 線上教育程式開發中遇到的難點是什麼?如何解決?
- 移動前端開發和 Web 前端開發的區別是什麼?前端Web
- Google到底在幹什麼?Go
- 什麼是敏捷開發?它有什麼特點敏捷
- 前端開發與後端開發的區別是什麼?前端後端
- 什麼是字串,web前端開發裡起到什麼作用字串Web前端
- 部門不開放自己的資料,到底在怕什麼?
- 什麼是前端開發中的 mobile first 策略前端
- 前端為什麼需要模組化開發前端
- 前端開發技術-promise是什麼?前端Promise
- 前端開發工程師做些什麼?前端工程師
- 為什麼前端開發這麼不穩定?前端
- 前端開發工程師必備系列-10個JavaScript難點前端工程師JavaScript
- web前端技術分享:前端開發與後端開發的區別是什麼?Web前端後端
- 專案國際化的難點痛點是什麼
- 為什麼前端工作越來越難找了?前端
- 前端開發,難道只是“切圖”?前端
- 我們需要什麼樣的前端開發環境前端開發環境
- web前端開發教程:函式是什麼Web前端函式
- 學習web前端開發要注意什麼Web前端
- Web前端開發和後端開發有什麼區別?Web前端後端
- 面試時,面試官到底在考察什麼?面試
- 移動前端開發和Web前端開發的不同點介紹前端Web
- 農業認養APP的開發要點是什麼APP
- 開放資料 中國地方政府開放資料現狀、問題與難點
- 想拿到BAT的前端開發崗offer,並沒有想象中的那麼難!BAT前端
- shopify本地開發 新的地方
- 運維為什麼要學開發?linux運維學習難不難運維Linux
- 馬什麼梅?I什麼N?淺談 web 前端開發中的國際化Web前端
- 為什麼開發一款作業系統就那麼難?作業系統
- 遊戲設計師在開發中最容易犯下的錯誤/最容易忽略的地方是什麼?遊戲設計師
- 如何建立物件,在web前端開發起到什麼作用物件Web前端