產品經理必懂的技術術語
產品經理在實際工作中經常會遇到一些“技術黑話”,這些技術語言讓非技術背景的產品經理們經常不知所云,帶來了一些溝通和理解的問題,這裡梳理了一些但不全的技術術語,以比較通俗的方式來解釋和介紹,希望對於非技術背景的產品經理們有所幫助。
1、類、物件、抽象和例項
在技術的世界裡,有一類程式語言叫面向物件程式設計,例如典型的面嚮物件語言Java。說到面向物件,不得不提的幾個概念是類、物件、抽象和例項。這些技術術語會經常在工程師的討論中出現,非技術背景的產品經理該如何理解這些概念呢?接下來具體介紹這些技術術語分別代表什麼意思。
首先介紹第一個概念“抽象”。我們說某一個概念聽起來非常抽象的意思是不具體的事物,對應的反義詞是具象。抽象在技術術語裡的意思是提煉出一個通用模板,然後基於模板做具象化的實現。例如,在現實世界中關於人的分類,會有男人、女人、老人和小孩,如果將這個具體的分類抽象出一個類別,得到的抽象結果就是人。所以,人就是一個抽象出來的分類,也就是技術術語裡面的“類”。在程式語言的世界中,通過程式語言描述現實世界中的事物時,使用的就是抽象的方法,將一類事物抽象成一個類,就得出了程式世界中的一個基本模型。
有了基本模型後,可以基於抽象出來的模型(類)產生很多具體的例項,也就是基於類例項化的具體物件。例如,將“人”這個類例項化為兩個物件,分別是男人和女人,也可以例項化為其他物件,例如小孩和老人,甚至可以例項化為具體的人,例如Maggie和Ryan。這一系列的過程如圖所示。

拓展資料圖1.jpg
從上述流程中可以看出,工程師做的工作就是根據產品需求將現實世界中的事物抽象成程式世界中的一個個類,然後根據需要例項化很多物件,不同物件間通過相互協作完成一個具體的產品功能。
非技術背景的產品經理在工作中也可以試著以這種技術思維的方式定義產品需求,先從產品角色開始抽象出具體的類,然後分別定義這些角色在整個產品流程中需要完成哪些關鍵動作,從而定義出具體的物件。這樣既有利於明確需求和使用者角色,也能培養非技術背景產品經理的技術思維。
2、工程師口中的“列印”是什麼意思
在與工程師的配合中,你一定聽說過“列印”這個詞,通常場景是在除錯產品問題或進行開發測試時。工程師口中的“列印”和我們使用印表機列印檔案究竟有什麼區別呢?對非技術背景的產品經理而言,聽到這個既熟悉又陌生的詞彙時,該如何理解呢?
首先,“列印”這個詞在大多數場景下是指我們將檔案或圖片通過印表機從計算機世界輸出到現實世界中,意味著一種結果的輸出。工程師口中的“列印”一詞,表示的是一種結果輸出,只是這種結果並不會輸出到現實世界,只是將程式執行的結果“列印”到命令控制檯上。
工程師在編寫程式程式碼時,需要不斷測試程式片段執行是否正確,例如編寫一個加法的程式片段,當代碼編寫完成後,工程師需要測試加法程式是否執行正確,所以會輸入兩個引數然後檢視程式的執行結果,程式執行結果輸出到命令控制檯的過程就叫作“列印”。
工程師在除錯問題程式的過程中,也會經常用到列印技術,將每一塊程式碼的執行結果輸出到控制檯,用來檢視具體問題出在哪個環節。因為程式碼的執行過程是不可見的,所以通過“列印”的方式能讓程式碼的執行過程和結果視覺化。
3、工程師口中的“寫死”是什麼意思
在與工程師討論產品需求或者工程師相互討論技術方案時,經常會聽到“寫死”這個術語。“寫死”這個詞嚴格來說不算一個標準的技術術語,而是工程師用來描述一種技術實現方案的說法。
例如,要設計一個下拉選擇框用來切換不同的城市,這個產品需求在技術層面有兩種實現方案,第一種是將城市資料放在伺服器端,客戶端通過請求資料介面將城市資料獲取回來再顯示在下拉列表中。第二種是將城市列表資料存放在客戶端,客戶端從本地讀取城市列表並展示在下拉列表中。
第一種方式是一種相對靈活的方案,當城市資料有變化時,只需要調整服務端的資料內容即可,客戶端不用做任何修改,但需要開發一個專門的資料介面獲取這部分資料。第二種方式就是工程師所說的“寫死”,將資料集寫死在本地,這樣可以省去資料介面的開發,也能快速實現想要的效果。
這兩種不同的實現方式在很多產品設計環節中都會體現,例如一些客戶端的文案或者圖片會經常變化,這時就不太適合將需要變化的資料“寫死”在本地,合理的方案是將變化的資料儲存在服務端,客戶端通過資料介面靈活地獲取這部分資料。
當然,也不是所有的資料都不適合“寫死”在本地,例如性別資料,無非就是男和女,不必專門為了它開發一個數據介面,我們得根據具體需求和使用場景判斷哪些資料應該寫死。
4、架構和框架
架構和框架是工程師經常提及的兩個技術概念,另外,在技術職能中還有架構師這一崗位。對非技術背景的產品經理而言,該如何理解和區分這兩個技術概念呢?通過一個例子就可以非常直觀地理解二者。在修建房屋時,會有一個總設計師負責設計整體藍圖和規劃,這個工作可以理解為是架構師的工作,而房屋設計結構和規劃本身是房屋的架構。
架構工作完成後就進入具體的施工環節,施工時可以選擇從頭開始一磚一瓦的加,也可以使用現有的房屋框架,基於成熟的房屋框架一層一層累加,後期只需要做整合和裝修工作即可使用現成的框架,既能降低施工難度,也能提高施工效率。
在技術領域,架構這個詞是對系統的結構設計和規劃,通常由經驗比較豐富的架構師或者高階工程師完成,架構的好壞直接決定了後期系統的穩定性和可擴充套件性。框架則是指利用現有的成熟技術框架簡化開發過程,例如針對企業級應用的開發框架J2EE,就提供了很多現成的元件來降低開發的複雜度,如今很多系統的開發都會使用一些比較成熟的開發框架替代純自主開發,這樣既能保證系統質量,也能提高開發效率。
5、控制元件和元件
任何一個網頁或者App產品都是由大量的輸入框、按鈕、文字展示框構成的,產品中的這些最小介面元素組成單元就叫作控制元件。一個按鈕是一個控制元件,一個輸入框也是一個控制元件。如圖所示為幾個基本控制元件(輸入框、文字展示框和按鈕)。

拓展資料圖2.jpg
元件是一種功能更全面的升級版控制元件,或者可以把元件理解成多個控制元件的組合。例如,Android和iOS開發中經常使用的Tab元件,如圖所示。

拓展資料圖3.jpg
大部分產品都設計為底部有幾個模組,點選不同的底部按鈕可以在不同的模組之間切換,實現展示和切換的就是Tab元件,它包含了頁面容器展示、按鈕等一系列功能,將這些細粒度的控制元件組合到一起來完成複雜功能,這就是元件。
6、程序與執行緒
工作中經常會聽到工程師討論程序和執行緒。例如,涉及一些複雜功能的技術實現方案時,工程師會說現在已經同時開了幾個執行緒在處理。程序和執行緒究竟是什麼?它們之間有什麼關係呢?本節主要介紹程序和執行緒的概念。
當我們點選手機螢幕上的一個App按鈕(啟動一個產品)時,系統會為這個產品的執行分配系統資源(例如CPU和儲存空間),分配好資源後,產品會在這個資源區域執行應用程式。這裡所說的執行應用程式就是程序,也可以理解為每一個正在執行的App都是一個程序。
例如,我們在手機上使用微信或者微博,就有分別屬於微信和微博的系統程序。一旦關閉應用程式或因為系統資源緊張而自動關閉在後臺執行的應用程式,程序就會被終止,同時對應的程序所佔用的系統資源也會被釋放。
相比於程序,執行緒是一個更小的執行單元,一個執行中的應用程式是一個程序,一個程序中可以存在多個執行緒,每一個子任務都可以理解為是執行中的一個執行緒。我們以微博為例,執行中的微博是一個系統程序,可以上傳照片釋出微博,也可以上傳視訊釋出微博。
使用者上傳照片的任務在一個獨立的執行緒中執行,上傳視訊的任務也在一個獨立的執行緒中執行,並且這兩個任務可以同時執行互不影響,這種方式叫非同步執行緒處理,即可以並行互不干擾完成各自的子任務。當然,還有一種執行緒處理方式叫同步執行緒,即子任務是按照一定的順序完成的。
產品之所以能同時完成很多功能,就是因為執行緒的存在,尤其是涉及需要網路請求的一些功能時,例如使用者在微信中釋出朋友圈後有可能立馬去重新整理朋友圈,這時可能剛剛釋出的內容還沒有上傳成功,所以在技術實現時會用兩個執行緒分別處理髮布和獲取新資訊的子任務。這樣做既能保證使用者體驗,也能保證系統資源被合理地分配和利用。
7、什麼是“指令碼”
“指令碼”這個詞在工程師口中出現的頻率比較高。當需要對資料庫進行批量處理時,工程師會說“跑一個指令碼統一處理一下”;當需要查詢某一資料報表時,工程師會說“用一個指令碼批量查詢”。
指令碼也是一種被計算機執行的程式,為什麼叫指令碼呢?可以把指令碼理解成拍戲用的劇本,劇本里會按照角色及對白把要拍的戲清晰地列出來,導演和演員會嚴格按照劇本表演。指令碼就是一種面向計算機的劇本,是一個可被計算機執行的檔案,檔案裡是一系列計算機指令,這些指令會按照順序被計算機解析並執行。
例如需要對資料庫中所有使用者資料新增一個數據項,一個一個新增顯然是不可能的,通過一個批量操作一次性地完成是效率最高的做法,此時就會用到指令碼。通過指令碼寫一個新增資料項的命令,然後執行指令碼,所有的資料就會被批量執行同樣的操作。圖14-4所示是在Mac電腦環境下使用命令列執行的一個查詢某一資料夾下所有檔案的命令。

拓展資料圖4.jpg
在第3行執行了一個名為“ls”的命令,這個命令的作用是列出當前資料夾下的所有檔案或子資料夾的名稱,第4行到第5行是當前資料夾下所有檔案或子資料夾的名稱。如果把“ls”命令單獨寫成一個檔案,這個包含一條指令的檔案就是一個指令碼檔案。實際應用中,指令碼檔案通常會由多個指令組合而成,經過計算機的解析和執行來完成一個複雜的處理任務。
8、同步處理和非同步處理
同步和非同步是開發技術中的兩個概念,計算機通過解析和執行程式完成相應的操作。在程式執行過程中會涉及同時處理多個任務或者同一時間只處理一個任務的情況。在前面的章節中我們介紹過什麼是程序和執行緒,一個程序中包含多個執行任務的執行緒。
以使用者登入為例,登入任務是在一個登入執行緒中執行的,登入任務執行過程中除了驗證使用者名稱和密碼是否正確外,還需要處理其他子任務,例如從伺服器獲取使用者資訊,更新本地快取資訊等。這些子任務通常會在新開闢的子執行緒裡執行。執行登入的執行緒可以稱為主執行緒,執行獲取使用者資訊的執行緒稱為子執行緒。
在一個登入操作過程中分別執行兩個任務,這個過程就叫作非同步處理。非同步處理不會造成執行緒阻塞,相當於各自處理各自的任務。如果所有的任務都在一個執行緒中處理,那就會出現資源佔用過多和響應時間過長的情況,例如我們在使用一些安卓APP時偶爾會出現應用程式閃退的情況,這有可能是因為出現了執行緒死鎖。
同步處理比較好理解,就是同一時間只執行一個簡單任務,任務處理完後再執行第二個任務,同步處理適用於一些順序執行的任務,例如流水線處理就是典型的同步處理,流水線上的一個環節處理完成後再處理下一個環節的任務。
我和朋友做了一款小程式理論塢 · 打造屬於你自己的理論庫 ;有很多關於互動的術語、心理學、管理學的定律和理論,大家可以掃描下面小程式碼快速體驗!


長按識別二維碼 關注公眾號【設計謎】獲取更多知識