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

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

時間:2018-02-28來源:lb577.com點擊量:作者:辛宇軒
時間:2018-02-28點擊量:作者:辛宇軒

1. 類、對象、抽象和實例

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5.  控件和組件

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

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

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

6. 進程與線程

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

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

例如,我們在手機上使用微信或者微博,就有分別屬于微信和微博的系統(tǒng)進程。一旦關(guān)閉應(yīng)用程序或因為系統(tǒng)資源緊張而自動關(guān)閉在后臺運行的應(yīng)用程序,進程就會被終止,同時對應(yīng)的進程所占用的系統(tǒng)資源也會被釋放。

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

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

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

7. 什么是“腳本”

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

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

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

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

8. 同步處理和異步處理

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

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

在一個登錄操作過程中分別執(zhí)行兩個任務(wù),這個過程就叫作異步處理。異步處理不會造成線程阻塞,相當(dāng)于各自處理各自的任務(wù)。如果所有的任務(wù)都在一個線程中處理,那就會出現(xiàn)資源占用過多和響應(yīng)時間過長的情況,例如我們在使用一些安卓APP時偶爾會出現(xiàn)應(yīng)用程序閃退的情況,這有可能是因為出現(xiàn)了線程死鎖。

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



 

預(yù)約申請免費試聽課

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

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

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

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

網(wǎng)站地圖