來(lái)源:北大青鳥(niǎo)總部 2023年07月03日 15:38
在互聯(lián)網(wǎng)行業(yè)中,最重要的人員莫過(guò)于研發(fā)工程師,有了程序員的代碼,才能跑起來(lái)應(yīng)用,提供產(chǎn)品和服務(wù)給到用戶(hù)。而我們程序員哥哥們又愛(ài)又恨的便是產(chǎn)品經(jīng)理了,產(chǎn)品經(jīng)理就是給程序員提需求的人,通過(guò)原型圖繪制出整個(gè)功能的雛形、用戶(hù)使用路徑,然后交由程序員去實(shí)現(xiàn)。
不過(guò)現(xiàn)在的互聯(lián)網(wǎng)產(chǎn)品經(jīng)理從業(yè)者大部分是非技術(shù)出身,有心理學(xué)專(zhuān)業(yè)、新聞專(zhuān)業(yè)、廣告專(zhuān)業(yè)等等的人員加入,在他們與研發(fā)工程師進(jìn)行交流時(shí),往往就會(huì)出現(xiàn)GAP了。產(chǎn)品經(jīng)理覺(jué)得這個(gè)需求很簡(jiǎn)單啊,我只是想要手機(jī)屏保隨著天氣變化,我只是想增加個(gè)搜索功能,我只是想做個(gè)條件過(guò)濾,幾行代碼就可以搞定了,而到了程序員這邊,這個(gè)需要改動(dòng)底層架構(gòu),那個(gè)需要兼容歷史版本,最后這個(gè)需要改變數(shù)據(jù)結(jié)構(gòu),起碼得一周以上才能搞完了,哪里這么簡(jiǎn)單呢?于是乎程序員和產(chǎn)品經(jīng)理開(kāi)始廝殺起來(lái),整個(gè)需求從開(kāi)發(fā)到上線(xiàn)的過(guò)程不是你死就是我活,場(chǎng)面一度很慘烈,像這樣的例子數(shù)不勝數(shù)。
今天我們就給大家介紹一下作為互聯(lián)網(wǎng)產(chǎn)品經(jīng)理必須要懂的一些技術(shù)知識(shí),它能幫助你在自己設(shè)計(jì)需求時(shí)初步就能評(píng)估需求實(shí)現(xiàn)的難度,結(jié)合技術(shù)想出更多的可行解;它也能幫助你在需求評(píng)審、項(xiàng)目排期時(shí),更好的與開(kāi)發(fā)溝通,了解到這個(gè)需求是不是真的做不了,實(shí)現(xiàn)成本很高(免得被開(kāi)發(fā)一句“做不了”就懟回去了);它還能幫助你在用戶(hù)驗(yàn)收測(cè)試時(shí)比較準(zhǔn)確的描述出問(wèn)題。
互聯(lián)網(wǎng)產(chǎn)品經(jīng)理必備的知識(shí)我們可以從需求的產(chǎn)生到上線(xiàn)這條線(xiàn)來(lái)介紹,在需求設(shè)計(jì)及評(píng)審?fù)曛?,第一階段是開(kāi)發(fā);第二階段是聯(lián)調(diào);第三階段是測(cè)試;第四階段是上線(xiàn)。
在開(kāi)發(fā)階段,我們要懂的第一個(gè)知識(shí)便是代碼倉(cāng)庫(kù)與分支。無(wú)論前端、后端、測(cè)試這三個(gè)角色都會(huì)涉及到,前后端基于代碼分支進(jìn)行開(kāi)發(fā),測(cè)試基于代碼分支進(jìn)行測(cè)試。那么分支是什么呢?分支就是我們的代碼版本記錄,它存在代碼倉(cāng)庫(kù)里,有新項(xiàng)目開(kāi)發(fā)時(shí)就新建一個(gè)代碼倉(cāng)庫(kù),開(kāi)發(fā)新需求時(shí)就在倉(cāng)庫(kù)里建立一個(gè)分支,每次在本地寫(xiě)了代碼后,就通過(guò)分支提交。程序員們約定俗成的使用master分支來(lái)存放生產(chǎn)環(huán)境的代碼,比如我的APP現(xiàn)在有瀏覽、下單、支付功能,我想新開(kāi)發(fā)用戶(hù)注冊(cè)功能,那我就需要在master分支上切出來(lái)一個(gè)feature分支,這時(shí)候feature分支包含了master分支的代碼,也就包含了瀏覽、下單、支付功能,我再在feature上寫(xiě)了用戶(hù)注冊(cè)的代碼,這時(shí)候feature分支就包含了注冊(cè)、瀏覽、下單、支付功能了。測(cè)試人員使用feature分支進(jìn)行測(cè)試,測(cè)試通過(guò)之后,再把feature分支的代碼改動(dòng)部分合并到master分支,進(jìn)行新版本的發(fā)布,這時(shí)候master分支就包含了注冊(cè)、瀏覽、下單、支付功能了。所有的新功能開(kāi)發(fā)從master切出分支,開(kāi)發(fā)完成后合并到master發(fā)布,這樣就保證用戶(hù)看到的功能是一致的了。目前業(yè)內(nèi)常用的代碼開(kāi)發(fā)管理工具是GitHub、GitLab。作為產(chǎn)品經(jīng)理,當(dāng)程序員和我們討論在哪個(gè)分支做開(kāi)發(fā)時(shí),你只需要告訴他我希望用戶(hù)能使用的功能有哪些就可以了,開(kāi)發(fā)人員會(huì)根據(jù)產(chǎn)品經(jīng)理希望上線(xiàn)的需求選擇在什么版本上去做開(kāi)發(fā),產(chǎn)品經(jīng)理也可以根據(jù)本片段講解的分支知識(shí)來(lái)佐證想法。
在開(kāi)發(fā)階段,我們要懂的第二個(gè)知識(shí)便是前端開(kāi)發(fā)。作為產(chǎn)品經(jīng)理,我們能感受到的就是前端頁(yè)面,通過(guò)整個(gè)的布局、交互來(lái)感受這個(gè)功能如何傳遞給到用戶(hù)。而在和前端工程師打交道時(shí)最長(zhǎng)聽(tīng)到的名詞莫過(guò)于組件了。在了解組件之前,我們先了解下前端頁(yè)面是如何生成的(本篇介紹web前端開(kāi)發(fā))。我們的用戶(hù)都是基于瀏覽器來(lái)瀏覽網(wǎng)頁(yè),所以前端開(kāi)發(fā)也是基于瀏覽器引擎去做的。假設(shè)我們現(xiàn)在要開(kāi)發(fā)淘寶的首頁(yè),這時(shí)候前端工程師會(huì)給它做一個(gè)布局,將整個(gè)屏幕規(guī)劃一下,哪些是橫著、哪些是豎著;在布局規(guī)劃好之后,給頁(yè)面寫(xiě)內(nèi)容,在哪個(gè)地方查看什么品類(lèi)的衣服,哪些地方放男裝,女裝,顏色、字體、大小怎么樣;最后再處理用戶(hù)點(diǎn)擊后是去進(jìn)行支付環(huán)節(jié),如何成功完成支付,全完事后通過(guò)瀏覽器訪(fǎng)問(wèn),底層瀏覽器引擎去DOM渲染,就加載出來(lái)頁(yè)面了。在搭架子階段使用HTML和CSS語(yǔ)言就可以搭建起來(lái)模型,而用戶(hù)可以去點(diǎn)擊做什么操作使用JavaScript技術(shù)可以實(shí)現(xiàn),用戶(hù)操作后可以得到什么結(jié)果就通過(guò)后端接口可以返回。
劃重點(diǎn),在前端開(kāi)發(fā)中的兩個(gè)字段便是組件和接口??赡苡械漠a(chǎn)品經(jīng)理同學(xué)在和前端打交道時(shí),總聽(tīng)他們提起這個(gè)組件不支持啊,后端接口沒(méi)有到位啊之類(lèi)的,但對(duì)于組件和接口還很陌生。我們先來(lái)看看組件是什么?當(dāng)前端在去開(kāi)發(fā)一個(gè)產(chǎn)品時(shí),需要寫(xiě)很多的頁(yè)面,每個(gè)頁(yè)面的元素總有一些是共通的,比如都需要按鈕、下拉列表、搜索、幫助提示、輸入框等等,如果每個(gè)頁(yè)面的這些內(nèi)容都去重新寫(xiě)一遍,代碼很冗余,前端也很累。于是聰明的前端同學(xué)便把這些可以復(fù)用的部分抽象出來(lái),專(zhuān)門(mén)寫(xiě)了支持這個(gè)功能的html、css、js代碼,以后在其他模塊要使用時(shí),直接引用這個(gè)組件庫(kù)就好了。介紹完了組件,我們?cè)賮?lái)看看接口是什么?我們知道一個(gè)產(chǎn)品只有前端,那是無(wú)法完成用戶(hù)流程的,只能看看點(diǎn)點(diǎn),不能更進(jìn)一步了,因此需要后端來(lái)去實(shí)現(xiàn)業(yè)務(wù)的邏輯,并通過(guò)接口把信息發(fā)回給前端做反饋。比如在電商購(gòu)買(mǎi)場(chǎng)景中,用戶(hù)瀏覽看到nike的鞋子不錯(cuò),選中了藍(lán)色、37碼的AJ,這時(shí)候需要前端把這些商品信息通過(guò)接口傳遞給到后端,后端接收到這些參數(shù)后,通過(guò)把參數(shù)套進(jìn)自己寫(xiě)的函數(shù)里,一步步的實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的增刪改查,也就是支付、下訂單、減庫(kù)存,最后返回前端交易的結(jié)果,前端再處理返回給用戶(hù)。
開(kāi)發(fā)結(jié)束了,就進(jìn)入到了聯(lián)調(diào)階段。在聯(lián)調(diào)階段,主要做的事情就是前后端聯(lián)同起來(lái)看看,雙方寫(xiě)的前后端代碼能否交流,數(shù)據(jù)格式是否符合預(yù)期?數(shù)據(jù)能否傳遞給到后端?是不是正確實(shí)現(xiàn)了功能。聯(lián)調(diào)介紹后,研發(fā)把他們的代碼開(kāi)發(fā)分支提交,告訴測(cè)試人員可以測(cè)試了,測(cè)試人員就去找到對(duì)應(yīng)的測(cè)試分支進(jìn)行測(cè)試。
在測(cè)試的時(shí)候,最重要的兩個(gè)便是打包和環(huán)境了。所謂打包就是把程序員寫(xiě)的代碼通過(guò)打包工具編譯成為運(yùn)行環(huán)境可以識(shí)別的產(chǎn)物,在前端開(kāi)發(fā)中會(huì)把代碼寫(xiě)在很多文件里,把文件轉(zhuǎn)化成html代碼時(shí),需要引入js代碼,這樣會(huì)使得每次請(qǐng)求都需要加載頁(yè)面,從而導(dǎo)致性能損耗增加,通過(guò)把各種前端資源打包成一個(gè)整體,頁(yè)面請(qǐng)求只需要一次就可以完成,提高了性能。前端代碼的事情說(shuō)完了,就該聊后端的事情了,后端的代碼要運(yùn)行起來(lái)需要一個(gè)環(huán)境,環(huán)境包含機(jī)器、操作系統(tǒng)、運(yùn)行要用的數(shù)據(jù)庫(kù)、其他軟件、業(yè)務(wù)代碼運(yùn)行的工具(如tomcat容器、Docker容器),后端代碼開(kāi)發(fā)完成之后,會(huì)把代碼通過(guò)構(gòu)建工具編譯成一個(gè)jar包或鏡像文件,放在對(duì)應(yīng)的環(huán)境里去運(yùn)行。測(cè)試人員在環(huán)境里把前后端的包部署上去,再通過(guò)瀏覽器就可以訪(fǎng)問(wèn)新開(kāi)發(fā)的功能進(jìn)行測(cè)試驗(yàn)收了。
測(cè)試通過(guò)后,就進(jìn)入到了上線(xiàn)階段。上線(xiàn)階段主要參與人員就是研發(fā)和運(yùn)維了。研發(fā)把代碼分支內(nèi)容合并到master分支,打包。運(yùn)維在服務(wù)器(可以是自己買(mǎi)的,也可以是在阿里云騰訊云華為云等租用的)上部署包運(yùn)行起來(lái)需要的環(huán)境,包含操作系統(tǒng)、數(shù)據(jù)庫(kù)等等軟件,部署好了之后,用戶(hù)再次訪(fǎng)問(wèn)產(chǎn)品頁(yè)面時(shí)就是最新開(kāi)發(fā)的內(nèi)容了。此后如果用戶(hù)在使用產(chǎn)品時(shí)打不開(kāi)頁(yè)面了、使用緩慢了,直接反饋給到運(yùn)維人員,運(yùn)維人員排查如果是機(jī)器資源問(wèn)題,就申請(qǐng)新的機(jī)器,再部署一套服務(wù),滿(mǎn)足更多的用戶(hù)可以訪(fǎng)問(wèn);如果是業(yè)務(wù)問(wèn)題,就反饋給到測(cè)試人員和研發(fā)人員進(jìn)行解決。
本文介紹了產(chǎn)品經(jīng)理在工作全流程中需要和技術(shù)打交道的內(nèi)容,看完之后是不是收獲滿(mǎn)滿(mǎn)啊?其實(shí)在產(chǎn)品經(jīng)理的世界主要是概念層(關(guān)注目標(biāo))、范圍層(關(guān)注功能)、結(jié)構(gòu)層(關(guān)注交互設(shè)計(jì)&信息架構(gòu))、框架層(關(guān)注界面設(shè)計(jì)&導(dǎo)航設(shè)計(jì)&信息設(shè)計(jì))、表現(xiàn)層(關(guān)注視覺(jué)設(shè)計(jì)),而技術(shù)人員的世界主要是邏輯層(關(guān)注業(yè)務(wù)流程&功能模塊)、實(shí)現(xiàn)層(關(guān)注具體實(shí)現(xiàn)函數(shù))、接口層(關(guān)注功能&頁(yè)面&模塊之間交互的通道)、數(shù)據(jù)層(關(guān)注數(shù)據(jù)庫(kù)執(zhí)行結(jié)果)、架構(gòu)層(關(guān)注技術(shù)架構(gòu)&調(diào)用關(guān)系&技術(shù)規(guī)范)。處于不同世界的人在互聯(lián)網(wǎng)產(chǎn)品這有了交集,如何才能協(xié)作的更好呢?那便是多了解彼此一些,技術(shù)人員在交流的時(shí)候淺顯易懂,產(chǎn)品經(jīng)理也多了解技術(shù)知識(shí),明白技術(shù)人員在表達(dá)什么?他們的工作邏輯是怎么樣?這會(huì)幫助雙方都工作愉快噢~