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