作為前端,我對(duì)業(yè)務(wù)的一點(diǎn)理解
一直都是寫(xiě)關(guān)于技術(shù)的一些東西,從來(lái)沒(méi)想過(guò)我會(huì)寫(xiě)一篇與技術(shù)沒(méi)什么關(guān)系的文章,因?yàn)樵谥暗奈铱磥?lái),這種文章完全就是假大空
技術(shù)至上?
三年前我畢業(yè)進(jìn)入第一家公司,個(gè)人很水的技術(shù)能力讓我經(jīng)常在實(shí)際的開(kāi)發(fā)工作中捉襟見(jiàn)肘,于是就想著一定要盡快提升自己的技術(shù)水平,每天都在公司待到很晚,除了做需求就是自我學(xué)習(xí),在這種情況下,我?guī)缀跛心茏陔娔X前的時(shí)間都用在了技術(shù)上,這就造成了一種后果,那就是我只關(guān)心技術(shù)方面的東西,其他的我一概不管,并且越來(lái)越嚴(yán)重
評(píng)審需求的時(shí)候,我不關(guān)心 pm 想要做什么,也不關(guān)心需求的目的是什么,更不關(guān)心是否是不合理的需求,我只考慮怎么從技術(shù)上實(shí)現(xiàn) pm 的需求,哪怕是再?gòu)?fù)雜再不合理的需求我也一定要用我的技術(shù)手段去實(shí)現(xiàn),甚至以此為榮,我認(rèn)為這是體現(xiàn)我個(gè)人能力的方式,有些時(shí)候我的組長(zhǎng)因?yàn)榭紤]到一些實(shí)現(xiàn)比較復(fù)雜,主動(dòng)給我說(shuō)一些簡(jiǎn)單的實(shí)現(xiàn)方案,我反而內(nèi)心還有點(diǎn)鄙視,覺(jué)得組長(zhǎng)太老油條了,什么復(fù)雜需求,不存在的,多給我一天的時(shí)間我就能給你實(shí)現(xiàn)出來(lái)
我相信很多做技術(shù)的小伙伴,都跟我有過(guò)類(lèi)似的想法,但是三年過(guò)去了,回頭想想,再思考一下現(xiàn)在,現(xiàn)在的我更想學(xué)習(xí)一些跟技術(shù)不那么相關(guān)的東西,比如業(yè)務(wù)
技術(shù)還是業(yè)務(wù)?
相輔相成
曾經(jīng)的我認(rèn)為,技術(shù)和業(yè)務(wù)就是兩條不相干的路,我投入在業(yè)務(wù)上的時(shí)間多了,那么在技術(shù)上的時(shí)間必然減少,與其技術(shù)、業(yè)務(wù)兩手抓,做出兩個(gè) 50 分的成果,我作為一個(gè)技術(shù)人員,不如只抓技術(shù),爭(zhēng)取做出一個(gè) 100 分的成果來(lái),但實(shí)際上這種想法有點(diǎn)天真
首先,除非你天賦異稟,否則很難將一件事情做到極致的 100 分,甚至 80 分都很難;其次,技術(shù)跟業(yè)務(wù)并不沖突,花費(fèi)一些時(shí)間在琢磨業(yè)務(wù)上,并不會(huì)減少多少你在技術(shù)上的投入度,相反的,二者是相輔相成、互相促進(jìn)的關(guān)系,是 1+1 大于 2 的組合
因?yàn)槟軌虬l(fā)現(xiàn)業(yè)務(wù)的痛點(diǎn),所以想用技術(shù)去解決,帶著明確的目的去學(xué)習(xí)與嘗試,必然會(huì)有更高的效率;因?yàn)橛辛俗銐驈?qiáng)的技術(shù),所以能夠解決更大的業(yè)務(wù)問(wèn)題,獲得更多的成就感
如果你沒(méi)有做業(yè)務(wù)的主動(dòng)意識(shí),而是被業(yè)務(wù)方趕著走,這種行為就是搬磚,反之,如果是你推著業(yè)務(wù)走,讓業(yè)務(wù)方因你而改變,那么就是你賦能了業(yè)務(wù)
經(jīng)??吹揭恍┤轿迥旯ぷ鹘?jīng)驗(yàn)的前端很迷茫,明明知道路已經(jīng)走到底了,卻不知道下一步該怎么走,于是開(kāi)始嘗試著去改變,但路子可能走得不太對(duì),例如看 Flutter 比較火,所以跑去學(xué) Flutter,看到 WebGL 可能有前途,于是跑去學(xué) WebGL,甚至有的人跑去學(xué) java/python
不是說(shuō)這些嘗試新事物的行為不好,相反的,很好,敢于嘗試敢于行動(dòng)無(wú)論什么時(shí)候都是值得鼓勵(lì)的事情,但是得明確你做這些事情的目的,考慮一下 ROI,比如,你看好 Flutter 未來(lái)的發(fā)展,并計(jì)劃好將來(lái)投身于 Flutter 領(lǐng)域,于是先自己學(xué)起來(lái),打好基礎(chǔ)為將來(lái)進(jìn)入一個(gè) Flutter 團(tuán)隊(duì),甚至是在自己的團(tuán)隊(duì)內(nèi)推廣 Flutter 做好準(zhǔn)備,那么顯然是正確的思路
但是如果你只是覺(jué)得現(xiàn)在的工作到瓶頸了,覺(jué)得大家都在吹 Flutter,反正自己也不知道要干啥,那就跟風(fēng)學(xué)學(xué)吧,或許可能將來(lái)就派上用場(chǎng)了,到時(shí)候自己一鳴驚人,那么這種思路其實(shí)就有點(diǎn)跑偏了,F(xiàn)lutter 確實(shí)能帶給你新鮮感與學(xué)習(xí)到新東西的成就感,但這并不能解決你目前工作碰到瓶頸的問(wèn)題,你只是選擇去回避它而已,leader 給你打績(jī)效并不會(huì)看在你學(xué)會(huì)了 Flutter 的面子上,就手下留情,除非你團(tuán)隊(duì)真的在用 Flutter 并且你也參與其中做了貢獻(xiàn)了
同樣的,作為一個(gè)前端問(wèn)如果會(huì)一點(diǎn) java/go 會(huì)不會(huì)更有競(jìng)爭(zhēng)力?我的答案是,聊勝于無(wú)(會(huì)一點(diǎn)當(dāng)然最好,但不會(huì)也沒(méi)關(guān)系)
你畢竟是前端,如果在前端面試的時(shí)候,連前端的基礎(chǔ)知識(shí)都答不好,你哪怕會(huì)背Spring源碼又有什么用?而如果你能做到無(wú)論是基礎(chǔ)題、算法、項(xiàng)目經(jīng)驗(yàn)都對(duì)答如流,跟面試官談笑風(fēng)生,誰(shuí)還關(guān)心你是否知道什么是高并發(fā)?
拓展壁壘
技術(shù)這條路可以很寬廣,但對(duì)于絕大多數(shù)人絕大多數(shù)場(chǎng)景來(lái)說(shuō),能夠被實(shí)際使用到的技術(shù)只是一小部分,特別是前端,相比于后端、算法來(lái)說(shuō),技術(shù)含量較低,更傾向于技術(shù)的廣度而非深度
可能從業(yè)三五年的C++程序員都還會(huì)寫(xiě)出有語(yǔ)法錯(cuò)誤的C++代碼來(lái),但在前端很難發(fā)生這種事情,稍微勤快點(diǎn)的應(yīng)屆生畢業(yè)半年就不該再寫(xiě)有語(yǔ)法錯(cuò)誤的前端代碼了,有bug基本上也都是業(yè)務(wù)邏輯bug,一個(gè)五年工作經(jīng)驗(yàn)的C++程序員和一個(gè)只有一年工作經(jīng)驗(yàn)的C++程序員,他們的技術(shù)水平可能有著本質(zhì)上的差距,但如果換成前端程序員,很可能兩人的技術(shù)水平就是差不了多少了
但是很顯然,就算是前端程序員,我們一般情況下還是會(huì)認(rèn)為五年工作經(jīng)驗(yàn)的會(huì)比一年工作經(jīng)驗(yàn)的能力更強(qiáng),技術(shù)水平可能二者差不了多少,差的是其他方面
技術(shù)廣度嗎?
可能不是,有較大技術(shù)廣度的人在做技術(shù)選型的時(shí)候,可以有更多的選擇與搭配,但這種能力并不是必不可少的,公司團(tuán)隊(duì)作戰(zhàn),很少會(huì)因技術(shù)棧的選擇而產(chǎn)生困惑,你或許會(huì)因?yàn)閺臉I(yè)時(shí)間較長(zhǎng),所以學(xué)會(huì)了更多的技術(shù),例如 React Native、Flutter、WebGL 等,但這些更多地是賦予你切換技術(shù)棧的能力而非增加你個(gè)人總體的技術(shù)實(shí)力,如果你公司不用 React Native、Flutter、WebGL,那么你會(huì)這些也沒(méi)多大用,也沒(méi)人會(huì)關(guān)心
如果你公司真的就用這些技術(shù)了呢?不好意思,這些又不是什么很難的東西,并不存在技術(shù)上的循序漸進(jìn),給一個(gè)應(yīng)屆生一段時(shí)間,他也能學(xué)會(huì),一般情況下,一個(gè)部門(mén)或者團(tuán)隊(duì)也不可能用很多種技術(shù)棧,技術(shù)廣度到達(dá)一定程度之后,再繼續(xù)往上增加的意義只會(huì)越來(lái)越小
技術(shù)深度嗎?
或許是
但是這個(gè)很難,還是前面說(shuō)過(guò)的話(huà),除非你真的是擅長(zhǎng)技術(shù),否則你很難有深入的機(jī)會(huì),特別是前端這個(gè)領(lǐng)域,99.9%(可能需要在小數(shù)點(diǎn)后面再加幾個(gè) 9 才符合實(shí)際)以上的場(chǎng)景,根本不需要考慮什么深度,也根本不需要考慮什么性能什么優(yōu)化,我實(shí)在是想不到哪些前端的工作場(chǎng)景下,會(huì)需要用到編譯層面或者操作系統(tǒng)層面的技術(shù)攻關(guān)
做出(注意是做出不是會(huì)用)小程序或者是做出 React 這種級(jí)別的東西,對(duì)于前端技術(shù)確實(shí)是一個(gè)重大考驗(yàn),但是絕大部分人跟這些根本就沒(méi)啥關(guān)系
真正需要深入到底層,比如編譯層面或者操作系統(tǒng)層面,這種已經(jīng)不能稱(chēng)為是前端開(kāi)發(fā)了,而能深入到這個(gè)地步的技術(shù)人員,大概率也不會(huì)是前端出身
工作經(jīng)驗(yàn)?
是,也不是
如果你工作三年,只是按部就班地搬了三年磚,那么你可能只是一年的經(jīng)驗(yàn)又被你重復(fù)了兩年而已
真正好的工作經(jīng)驗(yàn)應(yīng)當(dāng)是持續(xù)學(xué)習(xí)與進(jìn)步的,不僅限于技術(shù)上的進(jìn)步,如何寫(xiě)好易于維護(hù)的代碼、如何用技術(shù)能力保障業(yè)務(wù)的穩(wěn)定性、如何引領(lǐng)新人快速融入團(tuán)隊(duì),都是不可或缺的東西,想要獲得這些能力,需要時(shí)間,但更需要你的主動(dòng)探索與實(shí)踐,而這些是無(wú)法速成的東西,也是你作為一個(gè)技術(shù)老鳥(niǎo),能跟應(yīng)屆生真正拉開(kāi)差距的地方
而無(wú)論是技術(shù)水平、技術(shù)廣度、工作經(jīng)驗(yàn),它們之所以有價(jià)值,歸根結(jié)底,還是因?yàn)樗鼈兌加蟹?wù)業(yè)務(wù)的能力,所以一切都是圍繞著業(yè)務(wù)展開(kāi)的,既然無(wú)法避免,那么自然是越早學(xué)會(huì)游戲規(guī)則越好
什么是業(yè)務(wù)
在前三年,經(jīng)常有資歷更高的同事跟我提起業(yè)務(wù)這個(gè)詞,聽(tīng)得多了,我有時(shí)候也想去了解它,但總是發(fā)現(xiàn)這個(gè)東西太虛無(wú)縹緲了,編程語(yǔ)言的語(yǔ)法、關(guān)鍵字、設(shè)計(jì)模式、算法我都可以實(shí)實(shí)在在地看到并運(yùn)用,但業(yè)務(wù)到底是什么?我怎么學(xué)?我又該怎么去關(guān)注業(yè)務(wù)?
總之很苦惱,老是有人跟我說(shuō)業(yè)務(wù),但我卻無(wú)從下手,硬著頭皮去模仿,最終也只是學(xué)了個(gè)皮毛,于是逐漸放棄
目前在第二家公司入職的團(tuán)隊(duì),相比于之前來(lái)說(shuō),業(yè)務(wù)壓力大很多,幾乎沒(méi)法再像之前那樣優(yōu)哉游哉地搞自己的技術(shù)研究,然而在這種環(huán)境下,反而加速提升了我對(duì)于業(yè)務(wù)的理解,也明白了為什么之前那么多人跟我說(shuō)業(yè)務(wù)很重要,但沒(méi)有一個(gè)人能教會(huì)我到底什么是業(yè)務(wù),因?yàn)檫@個(gè)東西真的很難說(shuō)清楚,或者換句話(huà)說(shuō),其實(shí)每天都有人跟你說(shuō)什么是業(yè)務(wù),但因?yàn)槟阕约罕旧頍o(wú)法領(lǐng)悟,所以你覺(jué)得他們什么都沒(méi)說(shuō)
在絕大部分情況下,技術(shù)都是要為業(yè)務(wù)提供服務(wù)的,這句話(huà)蘊(yùn)含著兩層意思
第一,技術(shù)的唯一目的就是支撐業(yè)務(wù)
第二,業(yè)務(wù)并不僅由技術(shù)支撐,還包含了其他很多方面
業(yè)務(wù)是一個(gè)商業(yè)公司的命脈所在,而技術(shù)只是支撐業(yè)務(wù)的關(guān)鍵之一,所以業(yè)務(wù)真的很重要
那么,什么是業(yè)務(wù)其實(shí)也就很好理解了,你的技術(shù)所服務(wù)的就是業(yè)務(wù),而你能夠讓業(yè)務(wù)蓬勃發(fā)展的一切正向能力(包括但不僅限于技術(shù)能力),都是業(yè)務(wù)能力
前端如何賦能業(yè)務(wù)
肯定有人會(huì)吐槽我說(shuō)了半天還是啥都沒(méi)說(shuō),沒(méi)錯(cuò),確實(shí)是這樣,對(duì)始終不明白業(yè)務(wù)是什么的人來(lái)說(shuō),別人說(shuō)得再多也很難理解,對(duì)于已經(jīng)理解的人來(lái)說(shuō),業(yè)務(wù)就是業(yè)務(wù),根本沒(méi)什么可說(shuō)的,可能真的就需要你自己領(lǐng)悟才行,或許某一天你自己就突然明白過(guò)來(lái)了
很難說(shuō)清楚業(yè)務(wù)這個(gè)詞到底是什么,但工作中處處是業(yè)務(wù)
前端如何賦能業(yè)務(wù)的話(huà)題比較大,但具體的例子卻很多
運(yùn)營(yíng)頁(yè)面自動(dòng)搭建
運(yùn)營(yíng)手段對(duì)于 C 端產(chǎn)品來(lái)說(shuō)是很重要的,運(yùn)營(yíng)迭代的速度也是影響產(chǎn)品發(fā)展最直接但也是最實(shí)用的關(guān)鍵因素之一,比如天貓 618 蓋樓活動(dòng),美團(tuán)的滿(mǎn)減活動(dòng)等,這些都是很常見(jiàn)的運(yùn)營(yíng)手段,幾乎任何直面 C 端用戶(hù)的產(chǎn)品都少不了這些
而這些運(yùn)營(yíng)活動(dòng)往往是少不了各種各樣前端層面的用戶(hù)玩法,可以說(shuō)是比較依賴(lài)前端的一個(gè)業(yè)務(wù)了,那么作為一名前端開(kāi)發(fā)工程師,如果你的目標(biāo)只是實(shí)現(xiàn)業(yè)務(wù)方提過(guò)來(lái)的具體的運(yùn)營(yíng)需求,當(dāng)然也算是合格了,畢竟是完成了自己職責(zé),但可能還不夠
來(lái)一個(gè)運(yùn)營(yíng)頁(yè)面你就做一個(gè)運(yùn)營(yíng)頁(yè)面,來(lái)兩個(gè)你就上兩次線(xiàn),難度倒是沒(méi)什么難度,就是避免不了要走一遍整套開(kāi)發(fā)流程,于是聰明的人就想到,是否可以把這種固定路徑搬磚的行為自動(dòng)化,于是運(yùn)營(yíng)頁(yè)面自動(dòng)搭建的概念就出來(lái)了,以后運(yùn)營(yíng)頁(yè)面的開(kāi)發(fā)與上線(xiàn)都不需要研發(fā)參與了,直接讓運(yùn)營(yíng)來(lái)搞定,又快又穩(wěn)又好,以前一個(gè)運(yùn)營(yíng)活動(dòng)需要評(píng)審、排期、開(kāi)發(fā)、驗(yàn)收、上線(xiàn)等多個(gè)流程,現(xiàn)在簡(jiǎn)化到只有驗(yàn)收和上線(xiàn)兩個(gè)節(jié)點(diǎn),極大地提高了生產(chǎn)力,這就是對(duì)業(yè)務(wù)的成功賦能
那么你能做什么呢?
業(yè)內(nèi)知名的運(yùn)營(yíng)頁(yè)面自動(dòng)搭建項(xiàng)目有很多,例如阿里云鳳蝶、阿里飛冰等,但是這些不一定完全適合你的公司,因?yàn)檫\(yùn)營(yíng)頁(yè)面跟具體業(yè)務(wù)是強(qiáng)相關(guān)的,特比是C端,業(yè)務(wù)場(chǎng)景不同,運(yùn)營(yíng)頁(yè)面自然不可能一樣,如果你公司并沒(méi)有這么一套運(yùn)營(yíng)頁(yè)面自動(dòng)搭建的工具,并且業(yè)務(wù)上又高度依賴(lài)于線(xiàn)上運(yùn)營(yíng),那么這就是你的機(jī)會(huì)
adapter
移動(dòng)端已成為主流,前端開(kāi)發(fā)主要聚焦于 app、m、小程序三端,而小程序端又可以細(xì)分為微信小程序、字節(jié)小程序、百度小程序、支付寶小程序、快應(yīng)用等,如果為這些端每一個(gè)都專(zhuān)門(mén)開(kāi)發(fā)一套代碼,顯然會(huì)對(duì)人力產(chǎn)生較大的需求,如果這么多端全做了的效果是 1+1 等于 2,那還算能說(shuō)得過(guò)去,但現(xiàn)實(shí)情況肯定是 1+1 小于 2 的,如何能以最小的成本覆蓋那么多渠道,就是一件很迫切的事情了
于是,多端適配的解決方案出現(xiàn)了,它極大地提升了開(kāi)發(fā)效率,不僅又快又好地完成了一套代碼多處運(yùn)行這件事,同時(shí)還間接地為公司節(jié)約了一大筆研發(fā)費(fèi)用,價(jià)值毋庸置疑
那么你能做什么呢?
類(lèi)似于Taro這種多端適配框架,確實(shí)適配了很多東西,但適配的都是開(kāi)放的東西,例如微信小程序、字節(jié)小程序、ReactNative 等,這些都是對(duì)外開(kāi)放的開(kāi)發(fā)平臺(tái),但是你公司自己開(kāi)發(fā)的 app,例如抖音 app、支付寶 app,肯定有自己私有的一些協(xié)議,比如喚起 app、打開(kāi)頁(yè)面、調(diào)起拍照功能等,這些私有協(xié)議一般是不對(duì)外開(kāi)放的,如果你不僅想讓一份代碼運(yùn)行在小程序、m 端,還想讓這份代碼也能在 app 端正常運(yùn)行,那么適配 app 這部分的能力,顯然需要公司內(nèi)部員工來(lái)完成
組件庫(kù)
哪怕是在前端刀工火種的時(shí)代,Bootstrap 這類(lèi)前端框架就已經(jīng)大行其道,到現(xiàn)在前端組件化大行其道,各類(lèi)前端組件庫(kù)層出不窮,本質(zhì)上都是為了提升開(kāi)發(fā)效率,一些通用的UI與邏輯拿來(lái)即用,作為開(kāi)發(fā)者只需要專(zhuān)心業(yè)務(wù)邏輯即可
但也并不是說(shuō) iview、ant-design這些組件庫(kù)就可以橫行無(wú)忌了,pc后臺(tái)項(xiàng)目還好,但如果是移動(dòng)端C端的產(chǎn)品,對(duì)于組件庫(kù)的選擇就需要謹(jǐn)慎很多了,特別是那些知名度較高或者場(chǎng)景較為鮮明的產(chǎn)品,對(duì)于風(fēng)格的要求比較高,被廣泛使用的開(kāi)源組件庫(kù)并不一定能滿(mǎn)足要求,比如,支付寶和微信顯然都有自己獨(dú)特的UI風(fēng)格,開(kāi)源組件庫(kù)不可能專(zhuān)門(mén)去適配某一個(gè)產(chǎn)品的風(fēng)格,否則就失去了通用性,而支付寶或微信這類(lèi)具體的app也不可能為了省事就放棄自己的風(fēng)格直接用開(kāi)源組件庫(kù),所以打造專(zhuān)屬于自己的組件庫(kù)就成了一件很明顯的事情
實(shí)際上用戶(hù)量稍微多點(diǎn)的 C 端產(chǎn)品,對(duì)于專(zhuān)屬組件庫(kù)都是存在需求的,所以如果你所在公司業(yè)務(wù)場(chǎng)景主要在移動(dòng)端,而且你發(fā)現(xiàn)還沒(méi)有專(zhuān)屬于公司內(nèi)部的組件庫(kù),那么不要猶豫,馬上放手去做,這么明顯的事情你不做,早晚有人做
其他的還有很多,例如腳手架、國(guó)際化、工具函數(shù)庫(kù)等,都是一些有實(shí)際需求的東西
前端如何參與業(yè)務(wù)
在絕大多數(shù)公司,一般都是由 pm 來(lái)主導(dǎo)產(chǎn)品,前端畢竟是開(kāi)發(fā)人員,想要在產(chǎn)品層面上跟產(chǎn)品經(jīng)理 battle,無(wú)異于是業(yè)余挑戰(zhàn)專(zhuān)業(yè),既不合適也沒(méi)有勝算,但并不意味著開(kāi)發(fā)就完全無(wú)法參與到業(yè)務(wù)中去了,pm 對(duì)于整個(gè)產(chǎn)品的宏觀全貌肯定把握得比你深,但在一些細(xì)節(jié)的部分就不一定比一線(xiàn)實(shí)際開(kāi)發(fā)人員清楚了,而細(xì)節(jié)往往是從具體的需求中體現(xiàn)的
需求一般是由產(chǎn)品提出的,但需求往往需要開(kāi)發(fā)來(lái)實(shí)現(xiàn),而產(chǎn)品提需求的目的是為了實(shí)現(xiàn)這個(gè)需求,側(cè)重于產(chǎn)品層面,目的性較強(qiáng),開(kāi)發(fā)層面的事情還需要開(kāi)發(fā)來(lái)評(píng)估,那么這個(gè) gap 天然就是開(kāi)發(fā)參與業(yè)務(wù)的機(jī)會(huì)
提需求
提需求并不完全是 pm 的特權(quán),作為開(kāi)發(fā)同樣可以提需求,業(yè)務(wù)需求或許不是那么容易就能提出的,但是技術(shù)需求卻是你作為開(kāi)發(fā)人員的專(zhuān)利
作為前端,肯定是要關(guān)心自己所做前端頁(yè)面的一系列的指標(biāo)的,主要圍繞性能、交互與風(fēng)格樣式這三個(gè)方面,頁(yè)面加載快不快、交互是否流暢、風(fēng)格是否舒適統(tǒng)一,都是需要時(shí)刻關(guān)注的點(diǎn),出了問(wèn)題你就要去主動(dòng)解決它,而不是等 pm 來(lái)找你,這是技術(shù)上的事情,該由你來(lái)負(fù)責(zé)
所以你可以光明正大地提技術(shù)優(yōu)化需求,不敢保證一個(gè)流暢的頁(yè)面會(huì)讓用戶(hù)忠誠(chéng)度更高,但一個(gè)糟糕的頁(yè)面肯定會(huì)讓用戶(hù)流失的(除非你是銀行網(wǎng)站),所以技術(shù)需求表面上是技術(shù)需求,實(shí)際上也是為了業(yè)務(wù)考慮
需求可大可小,小的如樣式風(fēng)格統(tǒng)一,大的則可以建立一個(gè)前端技術(shù)項(xiàng)目
例如,產(chǎn)品希望通過(guò)持續(xù)的運(yùn)營(yíng)活動(dòng)迭代來(lái)維持用戶(hù)活躍度,那么他想要的就只是開(kāi)發(fā)人員能夠按時(shí)完成運(yùn)營(yíng)頁(yè)面的上線(xiàn),至于開(kāi)發(fā)怎么去做這件事他不關(guān)心,只要達(dá)到產(chǎn)品目的就行
那么作為前端開(kāi)發(fā),你意識(shí)到運(yùn)營(yíng)頁(yè)面可以做成可配置化的形態(tài),所以就需要你去跟 pm 進(jìn)行商討,例如這種做法是否可行、配置后臺(tái)做成什么樣、需要預(yù)置哪些模板、需要預(yù)置哪些頁(yè)面能力、數(shù)據(jù)存儲(chǔ)的形態(tài)等
再進(jìn)一步,你還可以繼續(xù)跟產(chǎn)品確認(rèn),這這些運(yùn)營(yíng)活動(dòng)將來(lái)是否可能會(huì)在多端鋪開(kāi),如果是,那么你就還需要考慮多端兼容的問(wèn)題了
看起來(lái),本來(lái)一個(gè)簡(jiǎn)單的運(yùn)營(yíng)活動(dòng),沒(méi)啥難度也沒(méi)啥工作量,應(yīng)屆生一天就搞完了,然后你作為開(kāi)發(fā)參與進(jìn)去,硬是把這個(gè)需求拆成了好幾個(gè)大項(xiàng)目,好像是自己沒(méi)事給自己找事
確實(shí),有些人就擅長(zhǎng)_無(wú)中生有_,整天搞些看起來(lái)高大上實(shí)際上屁用沒(méi)有的東西,但也別一棍子打死一群人,無(wú)中生有并不一定是貶義詞,如果運(yùn)營(yíng)搭建后臺(tái)和多端適配確實(shí)是有需求的,那么這件事情早晚得要做,而你能提前看到這一點(diǎn)并且提前做好準(zhǔn)備,為業(yè)務(wù)的平滑過(guò)渡提供了保障,這就體現(xiàn)出了你工作經(jīng)驗(yàn)的價(jià)值
砍需求
pm 提出的需求并不一定就是合理的,一個(gè)負(fù)責(zé)的技術(shù)人員對(duì)于需求應(yīng)當(dāng)有一定的判斷力,對(duì)于不合理的需求要堅(jiān)決說(shuō)不
這里的意思并不是讓你去雞蛋里挑骨頭給 pm 的工作制造人為障礙,相反的,而是給出更好的見(jiàn)解,共同為業(yè)務(wù)負(fù)責(zé)
比如,你事先和產(chǎn)品約定好了一套解決方案,在某個(gè)具體的功能上,產(chǎn)品發(fā)現(xiàn)數(shù)據(jù)不達(dá)預(yù)期,于是想要你專(zhuān)門(mén)為這個(gè)功能開(kāi)發(fā)一個(gè)特定的邏輯以提升數(shù)據(jù),這件事情可能確實(shí)可以做,并且技術(shù)上也不難實(shí)現(xiàn),但作為開(kāi)發(fā)人員你還要為整體的技術(shù)方案負(fù)責(zé),約定好了的方案,為了某個(gè)特定的功能添加額外的邏輯,會(huì)不會(huì)對(duì)整個(gè)技術(shù)方案造成破壞?會(huì)不會(huì)因小失大產(chǎn)生長(zhǎng)遠(yuǎn)的負(fù)面影響?還有沒(méi)有其他更好的解決方式?
看起來(lái),似乎有點(diǎn)推諉扯皮的意思了,但如果你的出發(fā)點(diǎn)確實(shí)是為項(xiàng)目考慮,并且理由足夠讓人信服的話(huà),誰(shuí)又能說(shuō)你是在推諉扯皮呢?
能夠有理有據(jù)地阻止不合理的需求,將有限的人力、時(shí)間花費(fèi)在更重要的需求上,才能更好更快地推進(jìn)業(yè)務(wù)
只是前端?
很多人都說(shuō)后端比前端更加貼近業(yè)務(wù),理論上似乎是這樣,但我的看法是,具體到個(gè)人的話(huà),還是要看你自己的態(tài)度,如果后端只是日復(fù)一日地 CRUD,既不主動(dòng)了解業(yè)務(wù),也不賦能業(yè)務(wù),再貼近業(yè)務(wù)又有什么用?同樣的,前端如果只是甘心于當(dāng)切圖仔,哪怕每個(gè)需求 pm 都專(zhuān)門(mén)給你講得清清楚楚也沒(méi)用
所以還是要看個(gè)人的主觀能動(dòng)性,在技術(shù)之外,要主動(dòng)去看更多的東西,我不是讓你去一行行看后端代碼,當(dāng)然,你有時(shí)間看也可以,只是沒(méi)必要,業(yè)務(wù)代碼沒(méi)什么好看的,反而看得腦殼疼,業(yè)務(wù)由一個(gè)個(gè)需求迭代而來(lái),那么想了解業(yè)務(wù)就從需求著手
pm 提了一個(gè)需求,你不僅要關(guān)心前端需要切哪些圖片做個(gè)什么樣式使用什么組件等技術(shù)問(wèn)題,還要弄明白 pm 為什么提做個(gè)需求,這個(gè)需求解決了什么問(wèn)題,涉及到的上下游關(guān)系等業(yè)務(wù)層面的事情
跟后端約定接口字段,不僅僅是盯著后端給你返回所需的字段就行了,還要多考慮一些,例如,接口是否有可復(fù)用性、字段是否冗余、有沒(méi)有必要做接口的拆分或整合、前端如何保證接口出錯(cuò)的情況下頁(yè)面仍舊是可被用戶(hù)接受的?有些可能應(yīng)該是后端應(yīng)該做的,但你不能保證所有人都盡職盡責(zé),那么你就可以多關(guān)心一些事情
當(dāng)需求評(píng)審的時(shí)候,pm 更多地詢(xún)問(wèn)你的意見(jiàn),當(dāng)約定接口的時(shí)候,后端更習(xí)慣你來(lái)制定接口規(guī)則,當(dāng)你關(guān)心的事情越來(lái)越多范圍越來(lái)越大,這個(gè)時(shí)候,你還覺(jué)得前端只是切圖仔嗎?
如果你成了最熟悉業(yè)務(wù)的人,那么團(tuán)隊(duì)中其他成員遇到不理解的業(yè)務(wù)問(wèn)題,第一個(gè)想到的肯定是你,那么你在這個(gè)團(tuán)隊(duì)中就有了具有實(shí)質(zhì)性存在的價(jià)值,而且是不容易被替換的那種
需要注意哪些事情?
技術(shù)是立身之本
上面說(shuō)了那么多業(yè)務(wù)多么多么重要的東西,可能會(huì)引起一些人的誤解,覺(jué)得既然是這樣,那我趕緊 all in 業(yè)務(wù)得了,反正技術(shù)似乎也不重要
這種想法也是錯(cuò)誤的,你既然是一名技術(shù)人員,那么技術(shù)對(duì)你來(lái)說(shuō)就是本職工作就是立身之本,想要往外延伸到更多的領(lǐng)域,首先必須要先把自己的根基打牢才行,若是連技術(shù)這點(diǎn)事情都沒(méi)整明白,就嚷嚷著要搞什么業(yè)務(wù)和管理,可能最后得到的只是一盤(pán)散沙
那么如何平衡這二者的關(guān)系呢?
對(duì)于前端這一行來(lái)說(shuō),我的建議是,前兩到三年,更多的精力(最起碼 80% 以上吧)投入到技術(shù)上面,保證在兩到三年內(nèi)在前端技術(shù)層面,能夠達(dá)到合格的狀態(tài)
什么是合格的狀態(tài)?量化一點(diǎn)地說(shuō),就是網(wǎng)上正常場(chǎng)景下的任意前端面試題,你有 80% 以上的把握能答出來(lái),可以實(shí)現(xiàn)工作上提出來(lái)的任意前端需求,能夠保證自己所寫(xiě)代碼項(xiàng)目的穩(wěn)定性和可擴(kuò)展性,前端領(lǐng)域新出現(xiàn)的技術(shù)你都能快速上手并且理解其原理,對(duì)于大部分人來(lái)說(shuō),這個(gè)應(yīng)該不難
然后,剩下的 20% 用來(lái)關(guān)注業(yè)務(wù),注意是關(guān)注業(yè)務(wù),至于參不參與不太重要,因?yàn)閮赡旯ぷ鹘?jīng)驗(yàn)之內(nèi)的菜鳥(niǎo),在業(yè)務(wù)上是沒(méi)有多少話(huà)語(yǔ)權(quán)的,并且思考方式還不成熟,這個(gè)階段更多地是觀察,觀察業(yè)務(wù)是如何運(yùn)轉(zhuǎn)的,觀察其他更高級(jí)別的人是如何參與業(yè)務(wù)的,學(xué)習(xí)他們身上的優(yōu)點(diǎn),進(jìn)而形成自己的思考觀念
兩到三年后,你差不多也升了職級(jí),在團(tuán)隊(duì)中的地位有了少許的提升,你說(shuō)話(huà)的分量也能引起其他人的注意了,這個(gè)時(shí)候,你再開(kāi)始嘗試著去參與業(yè)務(wù),將自己在前兩年學(xué)到的、總結(jié)下來(lái)的技巧和觀念,真正地運(yùn)用到業(yè)務(wù)中去
不要閉門(mén)造車(chē)
無(wú)論你想做什么事情,首先都要以開(kāi)放的心態(tài)去面對(duì),而不是打定了一個(gè)主意后就立馬埋頭苦干,在做之前先傾聽(tīng)其他人的意見(jiàn),看看是否有更好的解決思路
比如,你想做一個(gè)前端錯(cuò)誤監(jiān)控系統(tǒng),你可能從網(wǎng)上查了詳細(xì)豐富的關(guān)于前端錯(cuò)誤監(jiān)控的資料,然后覺(jué)得信心滿(mǎn)滿(mǎn)可以開(kāi)干了,然后你自己一個(gè)人起早貪黑默默干了幾個(gè)月,終于弄出了一個(gè)像樣的項(xiàng)目,這個(gè)時(shí)候你拿出來(lái)準(zhǔn)備一鳴驚人的時(shí)候,結(jié)果你 leader 卻滿(mǎn)臉詫異地跟你說(shuō)你難道不知道有 Sentry 這個(gè)東西嗎?
或者你在網(wǎng)上查找前端錯(cuò)誤監(jiān)控資料的時(shí)候,無(wú)意間發(fā)現(xiàn)了 Sentry,于是決定自己先上手熟悉一遍,弄清楚了所有開(kāi)發(fā)部署流程之后,拿出來(lái)準(zhǔn)備干一票大的,結(jié)果你 leader 滿(mǎn)臉詫異地跟你說(shuō)你難道不知道隔壁部門(mén)前段時(shí)間就已經(jīng)基于 Sentry 搞出了一套適用于咱們公司的監(jiān)控系統(tǒng)了嗎?
所以,一定要多跟外界進(jìn)行交流,一方面是為了能從外界獲取更多的信息,另外一方面則是讓其他人知道你在做什么事情 ~(至于為什么要讓其他人知道你在做什么事情,這個(gè)各位自行領(lǐng)悟)~
用數(shù)據(jù)說(shuō)話(huà)
作為前端,你可以提需求,也可以砍需求,甚至可以對(duì)后端指手畫(huà)腳(當(dāng)然,我更建議你謙虛一點(diǎn)),但前提是一定要有足夠的底氣,而實(shí)際的數(shù)據(jù)可以賦予你這個(gè)底氣
你要提一個(gè)性能優(yōu)化的技術(shù)需求,需要好幾天的時(shí)間,如果你只是說(shuō)前端性能不好需要幾天優(yōu)化一下,這顯然無(wú)法說(shuō)服擔(dān)心項(xiàng)目進(jìn)度被延誤了的 pm,但是如果你能拿出實(shí)際的數(shù)據(jù),例如,現(xiàn)在網(wǎng)站加載需要多長(zhǎng)時(shí)間、發(fā)起多少個(gè) http 請(qǐng)求、代碼體積多大、FP/FMP/TTI 都是多少、低于行業(yè)標(biāo)準(zhǔn)多少距離、可能會(huì)對(duì)業(yè)務(wù)造成什么樣的影響,然后優(yōu)化后又能達(dá)到什么樣的效果,有理有據(jù)地?cái)[好數(shù)據(jù)后,pm 只要是個(gè)正常人,肯定會(huì)認(rèn)真考慮一下你的建議的,即堅(jiān)持以理服人
良好的心態(tài)
不同于技術(shù)的純粹,業(yè)務(wù)上的事情肯定跟人有關(guān),跟人有關(guān)的事情肯定就會(huì)有磨合的過(guò)程,在推進(jìn)一項(xiàng)業(yè)務(wù)發(fā)展的過(guò)程中,肯定會(huì)遇到很多有意無(wú)意的阻力,這可能會(huì)讓抱著一番好心努力做事的你感到憋屈,覺(jué)得自己一番好心不被認(rèn)同,還不如每天劃劃水算了,這不僅是對(duì)工作不負(fù)責(zé),更重要的是,對(duì)你自己不負(fù)責(zé) ~(畢竟,你肯定不想 35 歲就失業(yè)了吧)~
業(yè)務(wù)基本是都由團(tuán)隊(duì)推進(jìn),幾乎不存在個(gè)人單打獨(dú)斗的可能,團(tuán)隊(duì)中的每個(gè)人都有自己的長(zhǎng)處,每個(gè)人的長(zhǎng)處匯聚到一起,才成就了團(tuán)隊(duì)的戰(zhàn)斗力,能夠順利地推動(dòng)團(tuán)隊(duì)融合與發(fā)力,可能比你攻克了一個(gè)技術(shù)項(xiàng)目還要重要的多
不要總覺(jué)得同事 sx,你們既然同屬于一個(gè)公司甚至部門(mén),就說(shuō)明你們的能力是差不了多少的,如果你覺(jué)得身邊人都是 sx,那么你大概率也是,所以當(dāng)你斗志昂揚(yáng)地要完成一個(gè)業(yè)務(wù)目標(biāo)卻遇到了阻力的時(shí)候,先別急著罵同事 sx,心平氣和地講事實(shí)擺道理,實(shí)在不行就走個(gè)流程,大家都是打工的,誰(shuí)沒(méi)事去故意針對(duì)你?
你只是在工作而已,犯不上因?yàn)楣ぷ魃系氖虑樽屪约翰婚_(kāi)心,有問(wèn)題就解決問(wèn)題,做好你認(rèn)為該做的事情就行了,要相信領(lǐng)導(dǎo)能坐在那個(gè)位置上成為領(lǐng)導(dǎo),大概率不是傻子 ~(如果真的是,建議你為了前途著想還是趕緊換一家公司吧)~,真正實(shí)干的人,肯定更容易得到機(jī)會(huì)與賞識(shí)
小結(jié)
本來(lái)只是想寫(xiě)怎么深入業(yè)務(wù)的,但后面感覺(jué)寫(xiě)著寫(xiě)著更像是職業(yè)發(fā)展指導(dǎo)了,就這樣吧
以上只是我目前個(gè)人的一些見(jiàn)解,畢竟經(jīng)驗(yàn)有限,所以可能有些觀點(diǎn)還不是太成熟,歡迎更多的討論
最后
聽(tīng)過(guò)很多道理卻依舊過(guò)不好這一生,同樣的,看過(guò)很多心靈雞湯,卻依舊不知道如何掙脫瓶頸,這個(gè)時(shí)候,我建議你換一個(gè)環(huán)境
不要埋頭苦干,借助于外力的作用,會(huì)更加輕松,當(dāng)身處于一個(gè)朝氣蓬勃的環(huán)境中時(shí),你哪怕是跟著團(tuán)隊(duì)的慣性也能持續(xù)往上走,巧的是,字節(jié)跳動(dòng)就是這么一家充滿(mǎn)干勁的公司(手動(dòng)狗頭)。。。
此處省略幾百字。。。
最后
如果你覺(jué)得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:
點(diǎn)個(gè)「在看」,讓更多的人也能看到這篇內(nèi)容(喜歡不點(diǎn)在看,都是耍流氓 -_-)
歡迎加我微信「huab119」拉你進(jìn)技術(shù)群,長(zhǎng)期交流學(xué)習(xí)...
關(guān)注公眾號(hào)「前端勸退師」,持續(xù)為你推送精選好文,也可以加我為好友,隨時(shí)聊騷。

