旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢熱線:010-5367 2995
首頁 > 行業(yè)資訊 > 產(chǎn)品經(jīng)理須知的“技術(shù)黑話”

產(chǎn)品經(jīng)理須知的“技術(shù)黑話”

時(shí)間:2018-02-28來源:mwtacok.cn點(diǎn)擊量:作者:辛宇軒
時(shí)間:2018-02-28點(diǎn)擊量:作者:辛宇軒

1. 類、對(duì)象、抽象和實(shí)例

在技術(shù)的世界里,有一類編程語言叫面向?qū)ο缶幊?,例如典型的面向?qū)ο笳Z言Java。說到面向?qū)ο?,不得不提的幾個(gè)概念是類、對(duì)象、抽象和實(shí)例。這些技術(shù)術(shù)語會(huì)經(jīng)常在工程師的討論中出現(xiàn),非技術(shù)背景的產(chǎn)品經(jīng)理該如何理解這些概念呢?接下來具體介紹這些技術(shù)術(shù)語分別代表什么意思。

首先介紹第一個(gè)概念“抽象”。我們說某一個(gè)概念聽起來非常抽象的意思是不具體的事物,對(duì)應(yīng)的反義詞是具象。抽象在技術(shù)術(shù)語里的意思是提煉出一個(gè)通用模板,然后基于模板做具象化的實(shí)現(xiàn)。例如,在現(xiàn)實(shí)世界中關(guān)于人的分類,會(huì)有男人、女人、老人和小孩,如果將這個(gè)具體的分類抽象出一個(gè)類別,得到的抽象結(jié)果就是人。所以,人就是一個(gè)抽象出來的分類,也就是技術(shù)術(shù)語里面的“類”。在編程語言的世界中,通過程序語言描述現(xiàn)實(shí)世界中的事物時(shí),使用的就是抽象的方法,將一類事物抽象成一個(gè)類,就得出了程序世界中的一個(gè)基本模型。

有了基本模型后,可以基于抽象出來的模型(類)產(chǎn)生很多具體的實(shí)例,也就是基于類實(shí)例化的具體對(duì)象。例如,將“人”這個(gè)類實(shí)例化為兩個(gè)對(duì)象,分別是男人和女人,也可以實(shí)例化為其他對(duì)象,例如小孩和老人,甚至可以實(shí)例化為具體的人,例如Maggie和Ryan。這一系列的過程如圖所示。

從上述流程中可以看出,工程師做的工作就是根據(jù)產(chǎn)品需求將現(xiàn)實(shí)世界中的事物抽象成程序世界中的一個(gè)個(gè)類,然后根據(jù)需要實(shí)例化很多對(duì)象,不同對(duì)象間通過相互協(xié)作完成一個(gè)具體的產(chǎn)品功能。

非技術(shù)背景的產(chǎn)品經(jīng)理在工作中也可以試著以這種技術(shù)思維的方式定義產(chǎn)品需求,先從產(chǎn)品角色開始抽象出具體的類,然后分別定義這些角色在整個(gè)產(chǎn)品流程中需要完成哪些關(guān)鍵動(dòng)作,從而定義出具體的對(duì)象。這樣既有利于明確需求和用戶角色,也能培養(yǎng)非技術(shù)背景產(chǎn)品經(jīng)理的技術(shù)思維。

2. 工程師口中的“打印”是什么意思

在與工程師的配合中,你一定聽說過“打印”這個(gè)詞,通常場(chǎng)景是在調(diào)試產(chǎn)品問題或進(jìn)行開發(fā)測(cè)試時(shí)。工程師口中的“打印”和我們使用打印機(jī)打印文件究竟有什么區(qū)別呢?對(duì)非技術(shù)背景的產(chǎn)品經(jīng)理而言,聽到這個(gè)既熟悉又陌生的詞匯時(shí),該如何理解呢?

首先,“打印”這個(gè)詞在大多數(shù)場(chǎng)景下是指我們將文件或圖片通過打印機(jī)從計(jì)算機(jī)世界輸出到現(xiàn)實(shí)世界中,意味著一種結(jié)果的輸出。工程師口中的“打印”一詞,表示的是一種結(jié)果輸出,只是這種結(jié)果并不會(huì)輸出到現(xiàn)實(shí)世界,只是將程序運(yùn)行的結(jié)果“打印”到命令控制臺(tái)上。

工程師在編寫程序代碼時(shí),需要不斷測(cè)試程序片段運(yùn)行是否正確,例如編寫一個(gè)加法的程序片段,當(dāng)代碼編寫完成后,工程師需要測(cè)試加法程序是否運(yùn)行正確,所以會(huì)輸入兩個(gè)參數(shù)然后查看程序的運(yùn)行結(jié)果,程序運(yùn)行結(jié)果輸出到命令控制臺(tái)的過程就叫作“打印”。

工程師在調(diào)試問題程序的過程中,也會(huì)經(jīng)常用到打印技術(shù),將每一塊代碼的執(zhí)行結(jié)果輸出到控制臺(tái),用來查看具體問題出在哪個(gè)環(huán)節(jié)。因?yàn)榇a的運(yùn)行過程是不可見的,所以通過“打印”的方式能讓代碼的運(yùn)行過程和結(jié)果可視化。

3. 工程師口中的“寫死”是什么意思

在與工程師討論產(chǎn)品需求或者工程師相互討論技術(shù)方案時(shí),經(jīng)常會(huì)聽到“寫死”這個(gè)術(shù)語。“寫死”這個(gè)詞嚴(yán)格來說不算一個(gè)標(biāo)準(zhǔn)的技術(shù)術(shù)語,而是工程師用來描述一種技術(shù)實(shí)現(xiàn)方案的說法。

例如,要設(shè)計(jì)一個(gè)下拉選擇框用來切換不同的城市,這個(gè)產(chǎn)品需求在技術(shù)層面有兩種實(shí)現(xiàn)方案,第一種是將城市數(shù)據(jù)放在服務(wù)器端,客戶端通過請(qǐng)求數(shù)據(jù)接口將城市數(shù)據(jù)獲取回來再顯示在下拉列表中。第二種是將城市列表數(shù)據(jù)存放在客戶端,客戶端從本地讀取城市列表并展示在下拉列表中。

第一種方式是一種相對(duì)靈活的方案,當(dāng)城市數(shù)據(jù)有變化時(shí),只需要調(diào)整服務(wù)端的數(shù)據(jù)內(nèi)容即可,客戶端不用做任何修改,但需要開發(fā)一個(gè)專門的數(shù)據(jù)接口獲取這部分?jǐn)?shù)據(jù)。第二種方式就是工程師所說的“寫死”,將數(shù)據(jù)集寫死在本地,這樣可以省去數(shù)據(jù)接口的開發(fā),也能快速實(shí)現(xiàn)想要的效果。

這兩種不同的實(shí)現(xiàn)方式在很多產(chǎn)品設(shè)計(jì)環(huán)節(jié)中都會(huì)體現(xiàn),例如一些客戶端的文案或者圖片會(huì)經(jīng)常變化,這時(shí)就不太適合將需要變化的數(shù)據(jù)“寫死”在本地,合理的方案是將變化的數(shù)據(jù)存儲(chǔ)在服務(wù)端,客戶端通過數(shù)據(jù)接口靈活地獲取這部分?jǐn)?shù)據(jù)。

當(dāng)然,也不是所有的數(shù)據(jù)都不適合“寫死”在本地,例如性別數(shù)據(jù),無非就是男和女,不必專門為了它開發(fā)一個(gè)數(shù)據(jù)接口,我們得根據(jù)具體需求和使用場(chǎng)景判斷哪些數(shù)據(jù)應(yīng)該寫死。

4. 架構(gòu)和框架

架構(gòu)和框架是工程師經(jīng)常提及的兩個(gè)技術(shù)概念,另外,在技術(shù)職能中還有架構(gòu)師這一崗位。對(duì)非技術(shù)背景的產(chǎn)品經(jīng)理而言,該如何理解和區(qū)分這兩個(gè)技術(shù)概念呢?通過一個(gè)例子就可以非常直觀地理解二者。在修建房屋時(shí),會(huì)有一個(gè)總設(shè)計(jì)師負(fù)責(zé)設(shè)計(jì)整體藍(lán)圖和規(guī)劃,這個(gè)工作可以理解為是架構(gòu)師的工作,而房屋設(shè)計(jì)結(jié)構(gòu)和規(guī)劃本身是房屋的架構(gòu)。

架構(gòu)工作完成后就進(jìn)入具體的施工環(huán)節(jié),施工時(shí)可以選擇從頭開始一磚一瓦的加,也可以使用現(xiàn)有的房屋框架,基于成熟的房屋框架一層一層累加,后期只需要做整合和裝修工作即可使用現(xiàn)成的框架,既能降低施工難度,也能提高施工效率。

在技術(shù)領(lǐng)域,架構(gòu)這個(gè)詞是對(duì)系統(tǒng)的結(jié)構(gòu)設(shè)計(jì)和規(guī)劃,通常由經(jīng)驗(yàn)比較豐富的架構(gòu)師或者高級(jí)工程師完成,架構(gòu)的好壞直接決定了后期系統(tǒng)的穩(wěn)定性和可擴(kuò)展性??蚣軇t是指利用現(xiàn)有的成熟技術(shù)框架簡(jiǎn)化開發(fā)過程,例如針對(duì)企業(yè)級(jí)應(yīng)用的開發(fā)框架J2EE,就提供了很多現(xiàn)成的組件來降低開發(fā)的復(fù)雜度,如今很多系統(tǒng)的開發(fā)都會(huì)使用一些比較成熟的開發(fā)框架替代純自主開發(fā),這樣既能保證系統(tǒng)質(zhì)量,也能提高開發(fā)效率。

5.  控件和組件

任何一個(gè)網(wǎng)頁或者App產(chǎn)品都是由大量的輸入框、按鈕、文本展示框構(gòu)成的,產(chǎn)品中的這些最小界面元素組成單元就叫作控件。一個(gè)按鈕是一個(gè)控件,一個(gè)輸入框也是一個(gè)控件。如圖所示為幾個(gè)基本控件(輸入框、文本展示框和按鈕)。

組件是一種功能更全面的升級(jí)版控件,或者可以把組件理解成多個(gè)控件的組合。例如,Android和iOS開發(fā)中經(jīng)常使用的Tab組件,如圖所示。

大部分產(chǎn)品都設(shè)計(jì)為底部有幾個(gè)模塊,點(diǎn)擊不同的底部按鈕可以在不同的模塊之間切換,實(shí)現(xiàn)展示和切換的就是Tab組件,它包含了頁面容器展示、按鈕等一系列功能,將這些細(xì)粒度的控件組合到一起來完成復(fù)雜功能,這就是組件。

6. 進(jìn)程與線程

工作中經(jīng)常會(huì)聽到工程師討論進(jìn)程和線程。例如,涉及一些復(fù)雜功能的技術(shù)實(shí)現(xiàn)方案時(shí),工程師會(huì)說現(xiàn)在已經(jīng)同時(shí)開了幾個(gè)線程在處理。進(jìn)程和線程究竟是什么?它們之間有什么關(guān)系呢?本節(jié)主要介紹進(jìn)程和線程的概念。

當(dāng)我們點(diǎn)擊手機(jī)屏幕上的一個(gè)App按鈕(啟動(dòng)一個(gè)產(chǎn)品)時(shí),系統(tǒng)會(huì)為這個(gè)產(chǎn)品的運(yùn)行分配系統(tǒng)資源(例如CPU和存儲(chǔ)空間),分配好資源后,產(chǎn)品會(huì)在這個(gè)資源區(qū)域運(yùn)行應(yīng)用程序。這里所說的運(yùn)行應(yīng)用程序就是進(jìn)程,也可以理解為每一個(gè)正在運(yùn)行的App都是一個(gè)進(jìn)程。

例如,我們?cè)谑謾C(jī)上使用微信或者微博,就有分別屬于微信和微博的系統(tǒng)進(jìn)程。一旦關(guān)閉應(yīng)用程序或因?yàn)橄到y(tǒng)資源緊張而自動(dòng)關(guān)閉在后臺(tái)運(yùn)行的應(yīng)用程序,進(jìn)程就會(huì)被終止,同時(shí)對(duì)應(yīng)的進(jìn)程所占用的系統(tǒng)資源也會(huì)被釋放。

相比于進(jìn)程,線程是一個(gè)更小的執(zhí)行單元,一個(gè)運(yùn)行中的應(yīng)用程序是一個(gè)進(jìn)程,一個(gè)進(jìn)程中可以存在多個(gè)線程,每一個(gè)子任務(wù)都可以理解為是運(yùn)行中的一個(gè)線程。我們以微博為例,運(yùn)行中的微博是一個(gè)系統(tǒng)進(jìn)程,可以上傳照片發(fā)布微博,也可以上傳視頻發(fā)布微博。

用戶上傳照片的任務(wù)在一個(gè)獨(dú)立的線程中運(yùn)行,上傳視頻的任務(wù)也在一個(gè)獨(dú)立的線程中運(yùn)行,并且這兩個(gè)任務(wù)可以同時(shí)運(yùn)行互不影響,這種方式叫異步線程處理,即可以并行互不干擾完成各自的子任務(wù)。當(dāng)然,還有一種線程處理方式叫同步線程,即子任務(wù)是按照一定的順序完成的。

產(chǎn)品之所以能同時(shí)完成很多功能,就是因?yàn)榫€程的存在,尤其是涉及需要網(wǎng)絡(luò)請(qǐng)求的一些功能時(shí),例如用戶在微信中發(fā)布朋友圈后有可能立馬去刷新朋友圈,這時(shí)可能剛剛發(fā)布的內(nèi)容還沒有上傳成功,所以在技術(shù)實(shí)現(xiàn)時(shí)會(huì)用兩個(gè)線程分別處理發(fā)布和獲取新信息的子任務(wù)。這樣做既能保證用戶體驗(yàn),也能保證系統(tǒng)資源被合理地分配和利用。

7. 什么是“腳本”

“腳本”這個(gè)詞在工程師口中出現(xiàn)的頻率比較高。當(dāng)需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行批量處理時(shí),工程師會(huì)說“跑一個(gè)腳本統(tǒng)一處理一下”;當(dāng)需要查詢某一數(shù)據(jù)報(bào)表時(shí),工程師會(huì)說“用一個(gè)腳本批量查詢”。

腳本也是一種被計(jì)算機(jī)執(zhí)行的程序,為什么叫腳本呢?可以把腳本理解成拍戲用的劇本,劇本里會(huì)按照角色及對(duì)白把要拍的戲清晰地列出來,導(dǎo)演和演員會(huì)嚴(yán)格按照劇本表演。腳本就是一種面向計(jì)算機(jī)的劇本,是一個(gè)可被計(jì)算機(jī)執(zhí)行的文件,文件里是一系列計(jì)算機(jī)指令,這些指令會(huì)按照順序被計(jì)算機(jī)解析并執(zhí)行。

例如需要對(duì)數(shù)據(jù)庫(kù)中所有用戶數(shù)據(jù)添加一個(gè)數(shù)據(jù)項(xiàng),一個(gè)一個(gè)添加顯然是不可能的,通過一個(gè)批量操作一次性地完成是效率最高的做法,此時(shí)就會(huì)用到腳本。通過腳本寫一個(gè)新增數(shù)據(jù)項(xiàng)的命令,然后執(zhí)行腳本,所有的數(shù)據(jù)就會(huì)被批量執(zhí)行同樣的操作。圖14-4所示是在Mac電腦環(huán)境下使用命令行執(zhí)行的一個(gè)查詢某一文件夾下所有文件的命令。

在第3行執(zhí)行了一個(gè)名為“ls”的命令,這個(gè)命令的作用是列出當(dāng)前文件夾下的所有文件或子文件夾的名稱,第4行到第5行是當(dāng)前文件夾下所有文件或子文件夾的名稱。如果把“ls”命令單獨(dú)寫成一個(gè)文件,這個(gè)包含一條指令的文件就是一個(gè)腳本文件。實(shí)際應(yīng)用中,腳本文件通常會(huì)由多個(gè)指令組合而成,經(jīng)過計(jì)算機(jī)的解析和執(zhí)行來完成一個(gè)復(fù)雜的處理任務(wù)。

8. 同步處理和異步處理

同步和異步是開發(fā)技術(shù)中的兩個(gè)概念,計(jì)算機(jī)通過解析和運(yùn)行程序完成相應(yīng)的操作。在程序執(zhí)行過程中會(huì)涉及同時(shí)處理多個(gè)任務(wù)或者同一時(shí)間只處理一個(gè)任務(wù)的情況。在前面的章節(jié)中我們介紹過什么是進(jìn)程和線程,一個(gè)進(jìn)程中包含多個(gè)執(zhí)行任務(wù)的線程。

以用戶登錄為例,登錄任務(wù)是在一個(gè)登錄線程中執(zhí)行的,登錄任務(wù)執(zhí)行過程中除了驗(yàn)證用戶名和密碼是否正確外,還需要處理其他子任務(wù),例如從服務(wù)器獲取用戶信息,更新本地緩存信息等。這些子任務(wù)通常會(huì)在新開辟的子線程里執(zhí)行。執(zhí)行登錄的線程可以稱為主線程,執(zhí)行獲取用戶信息的線程稱為子線程。

在一個(gè)登錄操作過程中分別執(zhí)行兩個(gè)任務(wù),這個(gè)過程就叫作異步處理。異步處理不會(huì)造成線程阻塞,相當(dāng)于各自處理各自的任務(wù)。如果所有的任務(wù)都在一個(gè)線程中處理,那就會(huì)出現(xiàn)資源占用過多和響應(yīng)時(shí)間過長(zhǎng)的情況,例如我們?cè)谑褂靡恍┌沧緼PP時(shí)偶爾會(huì)出現(xiàn)應(yīng)用程序閃退的情況,這有可能是因?yàn)槌霈F(xiàn)了線程死鎖。

同步處理比較好理解,就是同一時(shí)間只執(zhí)行一個(gè)簡(jiǎn)單任務(wù),任務(wù)處理完后再執(zhí)行第二個(gè)任務(wù),同步處理適用于一些順序執(zhí)行的任務(wù),例如流水線處理就是典型的同步處理,流水線上的一個(gè)環(huán)節(jié)處理完成后再處理下一個(gè)環(huán)節(jié)的任務(wù)。



 

預(yù)約申請(qǐng)免費(fèi)試聽課

填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ mwtacok.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖