無論是前端工程師,還是后端工程師,都會(huì)面臨危機(jī)。
前端工程師:
前端的端,是個(gè)非常廣泛的,目前端有 IOS,Android,Chrome,IE,小程序,未來還會(huì)有全息影像的設(shè)備、穿戴設(shè)備、人機(jī)接口等技術(shù),最終都將歸于端內(nèi)。即使你是大前端,也不可能從都到尾負(fù)責(zé)所有的終端產(chǎn)品的開發(fā),你一樣要和別人去配合完成自己最擅長(zhǎng)的內(nèi)容。而這些端會(huì)隨著技術(shù)的進(jìn)步可能會(huì)被新的端取代,比如以前的 windows Phone,諾基亞,及正在走向衰落的 IE,那么與之對(duì)應(yīng)的技術(shù)棧也將被淘汰。
要成為大前端,原來的 Web 工程師需要學(xué)習(xí)原生應(yīng)用的開發(fā),移動(dòng)工程師則需要進(jìn)入 JavaScript 這個(gè)極為復(fù)雜的 Web 領(lǐng)域,除此之外,有許多前端框架層出不窮,JQuery,Bootstrap,Vue,Reac,Angular,后面還有更多 ui 框架,以有生之年逐無盡之技術(shù),做為前端的你能學(xué)的過來么?
除了技術(shù),大前端還需要你能更好的理解產(chǎn)品和用戶體驗(yàn),并與產(chǎn)品經(jīng)理、設(shè)計(jì)師和交互體驗(yàn)師進(jìn)行順暢的溝通,這里面要學(xué)習(xí)的知識(shí)一點(diǎn)也不比技術(shù)領(lǐng)域少。
后端工程師:
早期的編程大概是這樣的:2000 年左右時(shí)使用 Perl 寫 CGI 程序(Perl + HTML 混合編程),后來陸續(xù)學(xué) JavaScript、Java、C#、Python、Objective C、Go 等技術(shù),早期的項(xiàng)目或產(chǎn)品基本上都是從前做到后,除了設(shè)計(jì)之外,從切圖、前端頁(yè)面到業(yè)務(wù)邏輯、持久化、連接池、異常、緩存、日志、集群等等,基本上都要自己參與編程或獨(dú)立實(shí)現(xiàn),在那個(gè)年代,你很難以專業(yè)細(xì)分的方式運(yùn)作項(xiàng)目,因?yàn)楦菊也坏侥敲炊?a href="http://www.1cnz.cn/v/tag/1730/" target="_blank">程序員。
現(xiàn)在的情況完全不一樣了,以前都是需要后端工程師或者架構(gòu)師搞定的事情,現(xiàn)在,云計(jì)算廠商都替你搞定了。比如阿里云的虛擬主機(jī)(ECS)、數(shù)據(jù)庫(kù)(RDS)、負(fù)載均衡(SLB)、文件存儲(chǔ)(OSS)、Redis、CDN、日志、NAS 等服務(wù)。后端工程師可以看看云計(jì)算廠商提供的基礎(chǔ)服務(wù)范疇,看看有沒有覆蓋你的知識(shí)和技能領(lǐng)域。類似亞馬遜阿里云這樣的云計(jì)算廠商,上千的技術(shù)人員除了滿足自己系統(tǒng)的需求,其他資源都會(huì)投入到公共云的建設(shè)上,這些優(yōu)秀的工程師做出來基礎(chǔ)服務(wù),無論是穩(wěn)定性還是擴(kuò)展性,都會(huì)大大超過創(chuàng)業(yè)公司里幾個(gè)人搗騰出來的技術(shù)組件。而且這是一種不可逆轉(zhuǎn)的趨勢(shì)。
看到這里,你是否有種危機(jī)呢,大家都用云了,還要后端工程師干嗎?
破解之道
互聯(lián)網(wǎng)的高速發(fā)展需要技術(shù)上更為專業(yè)、更為精深的編程人員,所以前后端技術(shù)體系的分離,就成了大勢(shì)所趨,形成了一種“反模式”。 每個(gè)人發(fā)揮自己最強(qiáng)的那部分,才能做出最好的產(chǎn)品,每個(gè)人都生產(chǎn)自己最擅長(zhǎng)的產(chǎn)品,并交易(合作),整個(gè)社會(huì)的經(jīng)濟(jì)就會(huì)快速發(fā)展。
其實(shí),不論是哪個(gè)技術(shù)領(lǐng)域,如果你想在這個(gè)領(lǐng)域不斷深入,還是應(yīng)該把最寶貴的時(shí)間花在可遷移的技能上——那些永不過時(shí)的技能。不要被那些五花八門的框架和庫(kù)迷了眼。
那什么是永不過時(shí)的技能呢? 極客時(shí)間作者左耳朵耗子的答案非常具有參考性,就是:編程能力、架構(gòu)能力和工程能力。
編程能力,就是用代碼解決問題的能力
你編程能力越強(qiáng),就能解決越復(fù)雜的問題,細(xì)分之下,要有調(diào)試能力、算法、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)原理等基礎(chǔ)技能的支撐,你才能解決各種麻煩的問題。
架構(gòu)能力,就是掌控復(fù)雜系統(tǒng)的能力
當(dāng)一個(gè)系統(tǒng)足夠復(fù)雜時(shí),你會(huì)寫每一塊代碼、能解決每一個(gè)問題,不等于你能搞定整個(gè)系統(tǒng),這就需要架構(gòu)能力。架構(gòu)能力包含了一些意識(shí),也包含認(rèn)識(shí)業(yè)務(wù)建立抽象模型,還有一些常見的模式等。
工程能力,其實(shí)核心就是成事的能力
要知道,當(dāng)系統(tǒng)規(guī)模越來越大時(shí),光靠你一個(gè)人是沒辦法完成的。那如何保證幾個(gè)高手能夠互相配合好?如何保證項(xiàng)目里面水平最差的人不拖后腿?工程化建設(shè)往往會(huì)跨越多個(gè)業(yè)務(wù),又如何保證質(zhì)量和代碼風(fēng)格呢?
這三項(xiàng)能力不管對(duì)于前端還是后端開發(fā)來說,可以說都是從初級(jí)、中級(jí)走向高級(jí)必須要跨越的鴻溝,也是作為一名程序員永不過時(shí)的技能。
-
工程師
+關(guān)注
關(guān)注
59文章
1570瀏覽量
68513
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論