產品經(jīng)理在實際工作中經(jīng)常會遇到一些“技術黑話”,這些技術語言讓非技術背景的產品經(jīng)理們經(jīng)常不知所云缺猛,帶來了一些溝通和理解的問題,這里梳理了一些但不全的技術術語,以比較通俗的方式來解釋和介紹宏粤,希望對于非技術背景的產品經(jīng)理們有所幫助。
1灼卢、類绍哎、對象、抽象和實例
在技術的世界里鞋真,有一類編程語言叫面向對象編程崇堰,例如典型的面向對象語言Java。說到面向對象涩咖,不得不提的幾個概念是類海诲、對象、抽象和實例檩互。這些技術術語會經(jīng)常在工程師的討論中出現(xiàn)特幔,非技術背景的產品經(jīng)理該如何理解這些概念呢?接下來具體介紹這些技術術語分別代表什么意思闸昨。
首先介紹第一個概念“抽象”蚯斯。我們說某一個概念聽起來非常抽象的意思是不具體的事物薄风,對應的反義詞是具象。抽象在技術術語里的意思是提煉出一個通用模板拍嵌,然后基于模板做具象化的實現(xiàn)遭赂。例如扛芽,在現(xiàn)實世界中關于人的分類织鲸,會有男人瞻坝、女人笛求、老人和小孩畔濒,如果將這個具體的分類抽象出一個類別扬绪,得到的抽象結果就是人别凹。所以芍锚,人就是一個抽象出來的分類炫惩,也就是技術術語里面的“類”僻弹。在編程語言的世界中,通過程序語言描述現(xiàn)實世界中的事物時他嚷,使用的就是抽象的方法蹋绽,將一類事物抽象成一個類,就得出了程序世界中的一個基本模型筋蓖。
有了基本模型后卸耘,可以基于抽象出來的模型(類)產生很多具體的實例,也就是基于類實例化的具體對象粘咖。例如蚣抗,將“人”這個類實例化為兩個對象,分別是男人和女人瓮下,也可以實例化為其他對象翰铡,例如小孩和老人,甚至可以實例化為具體的人讽坏,例如Maggie和Ryan锭魔。這一系列的過程如圖所示。
從上述流程中可以看出路呜,工程師做的工作就是根據(jù)產品需求將現(xiàn)實世界中的事物抽象成程序世界中的一個個類迷捧,然后根據(jù)需要實例化很多對象,不同對象間通過相互協(xié)作完成一個具體的產品功能胀葱。
非技術背景的產品經(jīng)理在工作中也可以試著以這種技術思維的方式定義產品需求漠秋,先從產品角色開始抽象出具體的類,然后分別定義這些角色在整個產品流程中需要完成哪些關鍵動作抵屿,從而定義出具體的對象庆锦。這樣既有利于明確需求和用戶角色,也能培養(yǎng)非技術背景產品經(jīng)理的技術思維晌该。
2肥荔、工程師口中的“打印”是什么意思
在與工程師的配合中,你一定聽說過“打印”這個詞朝群,通常場景是在調試產品問題或進行開發(fā)測試時燕耿。工程師口中的“打印”和我們使用打印機打印文件究竟有什么區(qū)別呢?對非技術背景的產品經(jīng)理而言姜胖,聽到這個既熟悉又陌生的詞匯時誉帅,該如何理解呢?
首先右莱,“打印”這個詞在大多數(shù)場景下是指我們將文件或圖片通過打印機從計算機世界輸出到現(xiàn)實世界中蚜锨,意味著一種結果的輸出。工程師口中的“打印”一詞慢蜓,表示的是一種結果輸出亚再,只是這種結果并不會輸出到現(xiàn)實世界,只是將程序運行的結果“打印”到命令控制臺上晨抡。
工程師在編寫程序代碼時氛悬,需要不斷測試程序片段運行是否正確,例如編寫一個加法的程序片段耘柱,當代碼編寫完成后如捅,工程師需要測試加法程序是否運行正確,所以會輸入兩個參數(shù)然后查看程序的運行結果调煎,程序運行結果輸出到命令控制臺的過程就叫作“打印”镜遣。
工程師在調試問題程序的過程中,也會經(jīng)常用到打印技術士袄,將每一塊代碼的執(zhí)行結果輸出到控制臺悲关,用來查看具體問題出在哪個環(huán)節(jié)。因為代碼的運行過程是不可見的娄柳,所以通過“打印”的方式能讓代碼的運行過程和結果可視化坚洽。
3、工程師口中的“寫死”是什么意思
在與工程師討論產品需求或者工程師相互討論技術方案時西土,經(jīng)常會聽到“寫死”這個術語讶舰。“寫死”這個詞嚴格來說不算一個標準的技術術語需了,而是工程師用來描述一種技術實現(xiàn)方案的說法跳昼。
例如,要設計一個下拉選擇框用來切換不同的城市肋乍,這個產品需求在技術層面有兩種實現(xiàn)方案鹅颊,第一種是將城市數(shù)據(jù)放在服務器端,客戶端通過請求數(shù)據(jù)接口將城市數(shù)據(jù)獲取回來再顯示在下拉列表中墓造。第二種是將城市列表數(shù)據(jù)存放在客戶端堪伍,客戶端從本地讀取城市列表并展示在下拉列表中锚烦。
第一種方式是一種相對靈活的方案,當城市數(shù)據(jù)有變化時帝雇,只需要調整服務端的數(shù)據(jù)內容即可涮俄,客戶端不用做任何修改,但需要開發(fā)一個專門的數(shù)據(jù)接口獲取這部分數(shù)據(jù)尸闸。第二種方式就是工程師所說的“寫死”彻亲,將數(shù)據(jù)集寫死在本地,這樣可以省去數(shù)據(jù)接口的開發(fā)吮廉,也能快速實現(xiàn)想要的效果苞尝。
這兩種不同的實現(xiàn)方式在很多產品設計環(huán)節(jié)中都會體現(xiàn),例如一些客戶端的文案或者圖片會經(jīng)常變化宦芦,這時就不太適合將需要變化的數(shù)據(jù)“寫死”在本地宙址,合理的方案是將變化的數(shù)據(jù)存儲在服務端,客戶端通過數(shù)據(jù)接口靈活地獲取這部分數(shù)據(jù)调卑。
當然曼氛,也不是所有的數(shù)據(jù)都不適合“寫死”在本地,例如性別數(shù)據(jù)令野,無非就是男和女舀患,不必專門為了它開發(fā)一個數(shù)據(jù)接口,我們得根據(jù)具體需求和使用場景判斷哪些數(shù)據(jù)應該寫死气破。
4聊浅、架構和框架
架構和框架是工程師經(jīng)常提及的兩個技術概念,另外现使,在技術職能中還有架構師這一崗位低匙。對非技術背景的產品經(jīng)理而言,該如何理解和區(qū)分這兩個技術概念呢碳锈?通過一個例子就可以非常直觀地理解二者顽冶。在修建房屋時,會有一個總設計師負責設計整體藍圖和規(guī)劃售碳,這個工作可以理解為是架構師的工作强重,而房屋設計結構和規(guī)劃本身是房屋的架構。
架構工作完成后就進入具體的施工環(huán)節(jié)贸人,施工時可以選擇從頭開始一磚一瓦的加间景,也可以使用現(xiàn)有的房屋框架,基于成熟的房屋框架一層一層累加艺智,后期只需要做整合和裝修工作即可使用現(xiàn)成的框架倘要,既能降低施工難度,也能提高施工效率十拣。
在技術領域封拧,架構這個詞是對系統(tǒng)的結構設計和規(guī)劃志鹃,通常由經(jīng)驗比較豐富的架構師或者高級工程師完成,架構的好壞直接決定了后期系統(tǒng)的穩(wěn)定性和可擴展性泽西〔芰澹框架則是指利用現(xiàn)有的成熟技術框架簡化開發(fā)過程,例如針對企業(yè)級應用的開發(fā)框架J2EE尝苇,就提供了很多現(xiàn)成的組件來降低開發(fā)的復雜度,如今很多系統(tǒng)的開發(fā)都會使用一些比較成熟的開發(fā)框架替代純自主開發(fā)埠胖,這樣既能保證系統(tǒng)質量糠溜,也能提高開發(fā)效率。
5直撤、控件和組件
任何一個網(wǎng)頁或者App產品都是由大量的輸入框非竿、按鈕、文本展示框構成的谋竖,產品中的這些最小界面元素組成單元就叫作控件红柱。一個按鈕是一個控件,一個輸入框也是一個控件蓖乘。如圖所示為幾個基本控件(輸入框锤悄、文本展示框和按鈕)。
組件是一種功能更全面的升級版控件嘉抒,或者可以把組件理解成多個控件的組合零聚。例如,Android和iOS開發(fā)中經(jīng)常使用的Tab組件些侍,如圖所示隶症。
大部分產品都設計為底部有幾個模塊,點擊不同的底部按鈕可以在不同的模塊之間切換岗宣,實現(xiàn)展示和切換的就是Tab組件蚂会,它包含了頁面容器展示、按鈕等一系列功能耗式,將這些細粒度的控件組合到一起來完成復雜功能胁住,這就是組件。
6刊咳、進程與線程
工作中經(jīng)常會聽到工程師討論進程和線程措嵌。例如,涉及一些復雜功能的技術實現(xiàn)方案時芦缰,工程師會說現(xiàn)在已經(jīng)同時開了幾個線程在處理企巢。進程和線程究竟是什么?它們之間有什么關系呢让蕾?本節(jié)主要介紹進程和線程的概念浪规。
當我們點擊手機屏幕上的一個App按鈕(啟動一個產品)時或听,系統(tǒng)會為這個產品的運行分配系統(tǒng)資源(例如CPU和存儲空間),分配好資源后笋婿,產品會在這個資源區(qū)域運行應用程序誉裆。這里所說的運行應用程序就是進程,也可以理解為每一個正在運行的App都是一個進程缸濒。
例如足丢,我們在手機上使用微信或者微博,就有分別屬于微信和微博的系統(tǒng)進程庇配。一旦關閉應用程序或因為系統(tǒng)資源緊張而自動關閉在后臺運行的應用程序斩跌,進程就會被終止,同時對應的進程所占用的系統(tǒng)資源也會被釋放捞慌。
相比于進程耀鸦,線程是一個更小的執(zhí)行單元,一個運行中的應用程序是一個進程啸澡,一個進程中可以存在多個線程袖订,每一個子任務都可以理解為是運行中的一個線程。我們以微博為例嗅虏,運行中的微博是一個系統(tǒng)進程洛姑,可以上傳照片發(fā)布微博,也可以上傳視頻發(fā)布微博皮服。
用戶上傳照片的任務在一個獨立的線程中運行吏口,上傳視頻的任務也在一個獨立的線程中運行,并且這兩個任務可以同時運行互不影響冰更,這種方式叫異步線程處理产徊,即可以并行互不干擾完成各自的子任務。當然蜀细,還有一種線程處理方式叫同步線程舟铜,即子任務是按照一定的順序完成的。
產品之所以能同時完成很多功能奠衔,就是因為線程的存在谆刨,尤其是涉及需要網(wǎng)絡請求的一些功能時,例如用戶在微信中發(fā)布朋友圈后有可能立馬去刷新朋友圈归斤,這時可能剛剛發(fā)布的內容還沒有上傳成功痊夭,所以在技術實現(xiàn)時會用兩個線程分別處理發(fā)布和獲取新信息的子任務。這樣做既能保證用戶體驗脏里,也能保證系統(tǒng)資源被合理地分配和利用她我。
7、什么是“腳本”
“腳本”這個詞在工程師口中出現(xiàn)的頻率比較高。當需要對數(shù)據(jù)庫進行批量處理時番舆,工程師會說“跑一個腳本統(tǒng)一處理一下”酝碳;當需要查詢某一數(shù)據(jù)報表時,工程師會說“用一個腳本批量查詢”恨狈。
腳本也是一種被計算機執(zhí)行的程序疏哗,為什么叫腳本呢?可以把腳本理解成拍戲用的劇本禾怠,劇本里會按照角色及對白把要拍的戲清晰地列出來返奉,導演和演員會嚴格按照劇本表演。腳本就是一種面向計算機的劇本吗氏,是一個可被計算機執(zhí)行的文件芽偏,文件里是一系列計算機指令,這些指令會按照順序被計算機解析并執(zhí)行牲证。
例如需要對數(shù)據(jù)庫中所有用戶數(shù)據(jù)添加一個數(shù)據(jù)項哮针,一個一個添加顯然是不可能的关面,通過一個批量操作一次性地完成是效率最高的做法坦袍,此時就會用到腳本。通過腳本寫一個新增數(shù)據(jù)項的命令等太,然后執(zhí)行腳本捂齐,所有的數(shù)據(jù)就會被批量執(zhí)行同樣的操作。圖14-4所示是在Mac電腦環(huán)境下使用命令行執(zhí)行的一個查詢某一文件夾下所有文件的命令缩抡。
在第3行執(zhí)行了一個名為“l(fā)s”的命令奠宜,這個命令的作用是列出當前文件夾下的所有文件或子文件夾的名稱,第4行到第5行是當前文件夾下所有文件或子文件夾的名稱瞻想。如果把“l(fā)s”命令單獨寫成一個文件压真,這個包含一條指令的文件就是一個腳本文件。實際應用中蘑险,腳本文件通常會由多個指令組合而成滴肿,經(jīng)過計算機的解析和執(zhí)行來完成一個復雜的處理任務。
8佃迄、同步處理和異步處理
同步和異步是開發(fā)技術中的兩個概念泼差,計算機通過解析和運行程序完成相應的操作。在程序執(zhí)行過程中會涉及同時處理多個任務或者同一時間只處理一個任務的情況呵俏。在前面的章節(jié)中我們介紹過什么是進程和線程堆缘,一個進程中包含多個執(zhí)行任務的線程。
以用戶登錄為例普碎,登錄任務是在一個登錄線程中執(zhí)行的吼肥,登錄任務執(zhí)行過程中除了驗證用戶名和密碼是否正確外,還需要處理其他子任務,例如從服務器獲取用戶信息潜沦,更新本地緩存信息等萄涯。這些子任務通常會在新開辟的子線程里執(zhí)行。執(zhí)行登錄的線程可以稱為主線程唆鸡,執(zhí)行獲取用戶信息的線程稱為子線程涝影。
在一個登錄操作過程中分別執(zhí)行兩個任務,這個過程就叫作異步處理争占。異步處理不會造成線程阻塞燃逻,相當于各自處理各自的任務。如果所有的任務都在一個線程中處理臂痕,那就會出現(xiàn)資源占用過多和響應時間過長的情況伯襟,例如我們在使用一些安卓APP時偶爾會出現(xiàn)應用程序閃退的情況,這有可能是因為出現(xiàn)了線程死鎖握童。
同步處理比較好理解姆怪,就是同一時間只執(zhí)行一個簡單任務,任務處理完后再執(zhí)行第二個任務澡绩,同步處理適用于一些順序執(zhí)行的任務稽揭,例如流水線處理就是典型的同步處理,流水線上的一個環(huán)節(jié)處理完成后再處理下一個環(huán)節(jié)的任務肥卡。
我和朋友做了一款小程序理論塢 · 打造屬于你自己的理論庫?溪掀;有很多關于交互的術語、心理學步鉴、管理學的定律和理論揪胃,大家可以掃描下面小程序碼快速體驗!