大家好:
應(yīng)波波的邀請寫一寫我對這個話題的想法镊掖。
從去年開始不少朋友讓我?guī)兔榻B前端工程師丘喻,絕大部分忙都沒幫上诵竭,原因是真找不到人话告。
我當時是這么跟他們分析的:過去的客戶端以browser為主,所以HTML/CSS/Javascript是唯一選擇卵慰,現(xiàn)在可是mobile first沙郭,于是大量前端開發(fā)者被native開發(fā)分流,以及原本想做前端工程師的后備力量應(yīng)屆生們也選擇學native開發(fā)裳朋,導致前端人荒病线。
隨著情況改變,H5(HTML5的大眾昵稱)在傳播上體現(xiàn)的商業(yè)價值巨大鲤嫡,無論是創(chuàng)業(yè)團隊還是巨頭自然重視這塊低成本高收益的事送挑。好像前端開發(fā)的春天又來了。
但局面是后備人才不足泛范,想轉(zhuǎn)前端開發(fā)的又會發(fā)現(xiàn)貴圈比以前還亂让虐,除了標準依然滯后紊撕,各種框架罢荡、工具冒出來,沒一兩年又淘汰对扶,過去好像會jQuery就可以混区赵,現(xiàn)在的門檻確實高不少。沒辦法創(chuàng)業(yè)團隊要招到優(yōu)秀的前端工程師只能靠情懷和燒錢浪南,巨頭們需要重新培育起好的技術(shù)文化吸引人才笼才,尤其是肯花錢和時間在前端技術(shù)的培訓、積累和創(chuàng)新上络凿。之前有人說web已死骡送,現(xiàn)在看說這話的人可以去死了。在前端技術(shù)儲備上加大投入絮记,很長一段時間內(nèi)都是非常值得的摔踱。
回到主題,標題其實是病句“初學前端工程師”怨愤。前端工程師是種崗位的title派敷,怎么用學呢。
我想將錯就錯說說職業(yè)的問題。
前端社區(qū)三類人:前端工程師篮愉、前端開發(fā)者腐芍、“玩票”者。
首先要明確前端工程師是種職業(yè)试躏,是專職為公司業(yè)務(wù)提供前端開發(fā)服務(wù)的一個工種椒楣。
前端開發(fā)者意義更廣查邢,凡是用前端技術(shù)開發(fā)的都算,但這里我想狹義上指前端開源社區(qū)貢獻者和自由前端開發(fā)者。
“玩票”者篷就,指原本是其它語言的開發(fā)者,因喜愛前端技術(shù)經(jīng)常參與社區(qū)互動并貢獻開源項目的人乡话。
前端工程師和后兩者的主要區(qū)別就是–職業(yè)性荞估,后兩者主要關(guān)注和解決通用問題(提高前端開發(fā)的生產(chǎn)力啊、推進標準的實現(xiàn)和發(fā)展叭跖小)襟沮,而前端工程師的職能是解決所在公司的產(chǎn)品開發(fā)中的前端工程問題(工程和技術(shù)是不同概念,之前我分享過一個關(guān)于什么是前端工程的話題昌腰,在這里)开伏。
明確定義后,開始談?wù)勎易隽诉@么多年前端工程師的一點感受遭商。
“他是我見過的最好的前端工程師”固灵,這是多年前一位前同事對我的評價,我自己會克制的在后面加上“之一”劫流。
如果他說的是“最好的前端開發(fā)者”巫玻,我絕對不會接受這種評價。我的github如此冷清祠汇,編程上也沒有突出的才能仍秤,也沒貢獻過任何有影響力的開源項目。
但我覺得自己是很好的前端工程師可很,我參與的產(chǎn)品開發(fā)效率很高诗力,對技術(shù)發(fā)展很敏感,很少走偏我抠,多少還有點前瞻性苇本。身在一線,對技術(shù)上的或人上的問題看的比較準菜拓。
共同之處:追求更好更有效的解決工作上的實際問題瓣窄。我不會盲目追求“最流行”的技術(shù),更不會把它強加給產(chǎn)品尘惧,除非我覺得它真的適合這個項目康栈,切實解決問題為導向。
剛到豆瓣時,我問自己:豆瓣產(chǎn)品前端的最大問題是什么啥么?不是統(tǒng)一UI登舞、不是搞個新框架,而是要通過建全基礎(chǔ)設(shè)施悬荣,改變開發(fā)方式將原來集中式的業(yè)務(wù)代碼徹底解藕才是癥結(jié)菠秒。這里面有技術(shù)問題還有跨角色合作的問題,因此不能孤立前端團隊氯迂,搞合作不搞對立践叠。
當時組建的通用工具組集合了各種背景的資深工程師,一起討論方案嚼蚀,成果對后面支撐公司業(yè)務(wù)的快速發(fā)展起到了重要作用禁灼。做這些事情要忍耐默默無聞、要就經(jīng)常跳出自己的舒適區(qū)轿曙,到另一個不熟的領(lǐng)域甘心當小白弄捕,目的只有一個切實有效的把產(chǎn)品中的問題解決掉。
對個人而言导帝,通常這么做可以收獲到更多更深刻的經(jīng)驗和知識守谓,所以我也樂此不疲。
不理解的人或許會覺得這人不牛逼啊您单,別人的看法不重要斋荞,收獲到的實實在在的有價值的東西才是硬道理。新人不該看重虛名虐秦,裝逼不健康平酿。沉浸到每一個項目中(別。挑羡疗∪痉活),做到具體問題具體分析叨恨,不生搬硬套,獨立思考挖垛,虛心交流一定會快速成長起來痒钝。不要拿追求“完美”當幌子,不愿做沒技術(shù)含量的事痢毒,這樣的話干脆別干前端了送矩。
擁抱變化是我在前公司工作時被灌輸?shù)膬r值觀。對于剛走上前端工程師崗位的同學們來說哪替,要慢慢習慣前端技術(shù)的快速變化栋荸,并且擁抱它。要stay hungry,stay foolish晌块。其中也有重點爱沟,在不易變的方向上多花時間學習越深入越好,不糾纏匆背、執(zhí)著于那些易變的東西呼伸。對新技術(shù)始終保持好奇心。
工具是最易變的钝尸,工具包括從各種庫括享、框架到構(gòu)建工具、編輯器等等珍促。我對工具的態(tài)度是實用至上铃辖、喜新厭舊。對于新人來說盡可能多的體驗各種工具沒壞處猪叙,從工具的設(shè)計思想上也能學到不少知識澳叉,但是要清醒的認識到,會用很多工具不是工程師核心的開發(fā)能力沐悦,也不是個人的核心競爭力成洗。
前端技術(shù)本身的變化是演變,不像工具那樣完全棄用變成全新的藏否。比如多花些時間學習CSS2.1一點都不會浪費瓶殃,多研究一些Javascript的基礎(chǔ)特性也不會輕易過時。然后有預見性的學習新技術(shù)副签,在項目中積極擁抱新標準遥椿,比如ES6。幸運的是現(xiàn)在有大量工具讓我們可以提前在產(chǎn)品開發(fā)中應(yīng)用新標準淆储。
思想不存在過時的問題冠场,這些需要在長期的開發(fā)實踐中不斷的總結(jié)、反思本砰,比如分離關(guān)注點是70年代提出的碴裙,從它衍生出很多開發(fā)理念,它永遠不會過時点额。這些好像很“虛”的東西舔株,在駕馭復雜的項目中非常有用。
我覺得前端工程師是所有工程師角色中最有也最需要“工匠精神”的还棱。
前端工程師的基本職責就是還原設(shè)計载慈,把一個躺在設(shè)計圖上的死的設(shè)計變成可以用的活的設(shè)計。
所謂“工匠精神”體現(xiàn)在這個“活”字上珍手“煺。可視方面辞做,一個動畫的過程是否順暢,一個交互動作全部狀態(tài)是否都做到位寡具,適配上是否足夠靈活秤茅。代碼方面,一段通用代碼是否足夠通用晒杈,代碼冗余是否最小嫂伞,性能是否足夠快等等。簡單的實現(xiàn)是最低要求拯钻,剩下的部分產(chǎn)品經(jīng)理帖努、項目經(jīng)理不會要求,那是優(yōu)秀的前端工程師發(fā)揮的空間粪般。
前端工程師的成長就是一個修煉的過程拼余,修煉的開始就是在學會了那些書本上可以學到的編程知識后。
在前端工程師的素質(zhì)中亩歹,我認為應(yīng)用能力是最重要的匙监。
這種應(yīng)用能力可看成是一種產(chǎn)品的塑造能力,前提要有產(chǎn)品思維和設(shè)計思維小作,能自主發(fā)現(xiàn)并彌補產(chǎn)品亭姥、設(shè)計的空白和不合理環(huán)節(jié),可以很好的控制代碼的復雜度顾稀,高效高質(zhì)量的完成開發(fā)需求达罗。提升這種能力,紙上談兵不行静秆,只能在各種項目中摸爬滾打粮揉,如同醫(yī)生不斷積累臨床經(jīng)驗一樣。如果公司項目不能滿足抚笔,就自己找項目做扶认。我在剛畢業(yè)的時候,接過不少私活殊橙,通常這類項目發(fā)揮空間大辐宾。
每個開發(fā)團隊都有自己的一套游戲規(guī)則:代碼規(guī)范、code review蛀柴、git或svn的用法螃概、開發(fā)流程等等,先按照規(guī)則玩鸽疾,再想著如何添磚加瓦。團隊意識是一種職業(yè)態(tài)度训貌。在一個好的團隊里工作會很開心制肮,團隊會促進個體更快的成長冒窍。但一個好團隊也是靠所有個體共建。不要抱怨自己所在的團隊不夠好豺鼻,用更開放的心態(tài)分享和交流综液,慢慢的一個好的氛圍便會形成。
最后再說說前端工程師的態(tài)度問題儒飒。前端技術(shù)發(fā)展很快谬莹,因此要不斷學習,不應(yīng)該輕易自滿桩了。
之前在知乎里回答過一個問題附帽,我是這么寫的: “程序員容易陶醉在自己的代碼中,甚至有某種自戀井誉。我也有過這種時候蕉扮,我甚至認為不夠自戀就不是好程序員,藝術(shù)家沒有不自戀的颗圣。但如果跳出自己的世界看喳钟,你寫出來的東西到底價值有多大,產(chǎn)品因此成功?到底能影響什么在岂,一二個同事奔则,一個團隊,整個行業(yè)?跟心目中大神的差距?這個時候會冷靜一些蔽午,原來只是比以前的自己進步一些而已易茬。”
前面并沒有說成為一名優(yōu)秀的前端工程師具體應(yīng)該學習什么技術(shù)祠丝,會不會有些失望疾呻?
因為具體的技術(shù)會變,不變的是那些特質(zhì)和觀念写半。希望我的分享對新入行的前端工程師有所啟發(fā)和幫助岸蜗。
作者:張克軍
原文:https://www.w3ctech.com/topic/983