产品经理要懂的「技术那些事」
本文由作者?Alto?于社區發布
產品經理是否要懂技術?要懂到什么程度?
非技術背景如何與研發溝通?工程師口中的“黑話”到底是什么意思?
本文是書籍《產品經理必懂的技術那點事兒》的筆記,剛好能解答以上問題,適合對技術基礎知識不太了解的朋友,建議收藏~
01
產品思維與技術思維的對比
02
技術思維在產品設計中的應用
03
核心觀點簡單一覽
1、產品經理為什么要懂技術?
1)當談到一些技術專有名詞時,不至于“一臉懵逼”。
2)當談論一些技術實現方式(如:Html5應用與Native應用)時,有些參與感!
3)當產品出問題時,知道是客戶端問題還是服務端問題?
4)知道技術邊界在哪里,不至于“天馬行空”。
5)避免設計好的產品在開發評審時遇到研發人員的挑戰(接口不匹配、結構調整過大…)
……
2、產品思維與技術思維
產品思維先行,技術思維是確保產品能成為現實的有力前提和必要工具,優秀的產品往往是扎實的技術基礎和良好的用戶體驗相結合的產物,是產品思維和技術思維的結合體!
產品思維:從用戶價值出發,在滿足商業戰略和業務目標的同時尋求產品路徑滿足用戶需求;
技術思維:從功能和工程實現出發,在滿足產品需求的同時需求可復用技術架構和低開發成本;
3、產品經理對技術要懂到什么程度?
1)產品經理需要的是“技術思維”,而非“技術能力”。
2)會寫代碼不是目的,能判斷功能復雜度才是目標。
3)技術思維是一種嚴謹的邏輯思維,強調遍歷與窮舉。
4、非技術背景產品經理如何與研發溝通?
1)成為溝通組織者,而不是命令或質問方。
2)明確問題,協同參與方聚焦解決方案達成一致。
3)遇到不懂的技術問題,多引導和轉移,多請教和理解。
懂用戶比懂產品重要,懂產品比懂技術重要;
考慮對數據數據結構和接口的影響,考慮工作量和兼容性;
4、從技術角度判斷產品需求的參考原則
1)做新需求比改老需求相對容易。
2)業務邏輯越復雜,對應的技術解決方案就越復雜。
3)對原有產品方案做需求變更,會涉及到新老版本數據兼容問題。
4)產品的幾句話,可能意味著研發幾天的工作量。
5、技術思維在產品設計中的應用
1)如何判斷客戶端技術實現難度?
界面復雜度、布局方式(適配問題)、原生控件or自定義控件…
2)功能調整時需要考慮什么?
功能和界面變化、數據結構調整、新版本和舊版本的兼容性以及過渡方案…
04
整體知識架構
*在公眾號后臺回復“技術”,即可獲得高清大圖
05
普及一些簡單常見的概念!
1. 類、對象、抽象和實例
在技術的世界里,有一類編程語言叫面向對象編程,例如典型的面向對象語言Java。說到面向對象,不得不提的幾個概念是類、對象、抽象和實例。這些技術術語會經常在工程師的討論中出現,非技術背景的產品經理該如何理解這些概念呢?接下來具體介紹這些技術術語分別代表什么意思。
首先介紹第一個概念“抽象”。
我們說某一個概念聽起來非常抽象的意思是不具體的事物,對應的反義詞是具象。抽象在技術術語里的意思是提煉出一個通用模板,然后基于模板做具象化的實現。例如,在現實世界中關于人的分類,會有男人、女人、老人和小孩,如果將這個具體的分類抽象出一個類別,得到的抽象結果就是人。
所以,人就是一個抽象出來的分類,也就是技術術語里面的“類”。在編程語言的世界中,通過程序語言描述現實世界中的事物時,使用的就是抽象的方法,將一類事物抽象成一個類,就得出了程序世界中的一個基本模型。
有了基本模型后,可以基于抽象出來的模型(類)產生很多具體的實例,也就是基于類實例化的具體對象。例如,將“人”這個類實例化為兩個對象,分別是男人和女人,也可以實例化為其他對象,例如小孩和老人,甚至可以實例化為具體的人,例如Maggie和Ryan。這一系列的過程如圖所示。
從上述流程中可以看出,工程師做的工作就是根據產品需求將現實世界中的事物抽象成程序世界中的一個個類,然后根據需要實例化很多對象,不同對象間通過相互協作完成一個具體的產品功能。
非技術背景的產品經理在工作中也可以試著以這種技術思維的方式定義產品需求,先從產品角色開始抽象出具體的類,然后分別定義這些角色在整個產品流程中需要完成哪些關鍵動作,從而定義出具體的對象。這樣既有利于明確需求和用戶角色,也能培養非技術背景產品經理的技術思維。
2. 工程師口中的“打印”是什么意思
在與工程師的配合中,你一定聽說過“打印”這個詞,通常場景是在調試產品問題或進行開發測試時。工程師口中的“打印”和我們使用打印機打印文件究竟有什么區別呢?對非技術背景的產品經理而言,聽到這個既熟悉又陌生的詞匯時,該如何理解呢?
首先,“打印”這個詞在大多數場景下是指我們將文件或圖片通過打印機從計算機世界輸出到現實世界中,意味著一種結果的輸出。工程師口中的“打印”一詞,表示的是一種結果輸出,只是這種結果并不會輸出到現實世界,只是將程序運行的結果“打印”到命令控制臺上。
工程師在編寫程序代碼時,需要不斷測試程序片段運行是否正確,例如編寫一個加法的程序片段,當代碼編寫完成后,工程師需要測試加法程序是否運行正確,所以會輸入兩個參數然后查看程序的運行結果,程序運行結果輸出到命令控制臺的過程就叫作“打印”。
工程師在調試問題程序的過程中,也會經常用到打印技術,將每一塊代碼的執行結果輸出到控制臺,用來查看具體問題出在哪個環節。因為代碼的運行過程是不可見的,所以通過“打印”的方式能讓代碼的運行過程和結果可視化。
3. 工程師口中的“寫死”是什么意思
在與工程師討論產品需求或者工程師相互討論技術方案時,經常會聽到“寫死”這個術語。“寫死”這個詞嚴格來說不算一個標準的技術術語,而是工程師用來描述一種技術實現方案的說法。
例如,要設計一個下拉選擇框用來切換不同的城市,這個產品需求在技術層面有兩種實現方案,第一種是將城市數據放在服務器端,客戶端通過請求數據接口將城市數據獲取回來再顯示在下拉列表中。第二種是將城市列表數據存放在客戶端,客戶端從本地讀取城市列表并展示在下拉列表中。
第一種方式是一種相對靈活的方案,當城市數據有變化時,只需要調整服務端的數據內容即可,客戶端不用做任何修改,但需要開發一個專門的數據接口獲取這部分數據。第二種方式就是工程師所說的“寫死”,將數據集寫死在本地,這樣可以省去數據接口的開發,也能快速實現想要的效果。
這兩種不同的實現方式在很多產品設計環節中都會體現,例如一些客戶端的文案或者圖片會經常變化,這時就不太適合將需要變化的數據“寫死”在本地,合理的方案是將變化的數據存儲在服務端,客戶端通過數據接口靈活地獲取這部分數據。
當然,也不是所有的數據都不適合“寫死”在本地,例如性別數據,無非就是男和女,不必專門為了它開發一個數據接口,我們得根據具體需求和使用場景判斷哪些數據應該寫死。
4. 架構和框架
架構和框架是工程師經常提及的兩個技術概念,另外,在技術職能中還有架構師這一崗位。對非技術背景的產品經理而言,該如何理解和區分這兩個技術概念呢?通過一個例子就可以非常直觀地理解二者。在修建房屋時,會有一個總設計師負責設計整體藍圖和規劃,這個工作可以理解為是架構師的工作,而房屋設計結構和規劃本身是房屋的架構。
架構工作完成后就進入具體的施工環節,施工時可以選擇從頭開始一磚一瓦的加,也可以使用現有的房屋框架,基于成熟的房屋框架一層一層累加,后期只需要做整合和裝修工作即可使用現成的框架,既能降低施工難度,也能提高施工效率。
在技術領域,架構這個詞是對系統的結構設計和規劃,通常由經驗比較豐富的架構師或者高級工程師完成,架構的好壞直接決定了后期系統的穩定性和可擴展性。框架則是指利用現有的成熟技術框架簡化開發過程,例如針對企業級應用的開發框架J2EE,就提供了很多現成的組件來降低開發的復雜度,如今很多系統的開發都會使用一些比較成熟的開發框架替代純自主開發,這樣既能保證系統質量,也能提高開發效率。
5. 控件和組件
任何一個網頁或者App產品都是由大量的輸入框、按鈕、文本展示框構成的,產品中的這些最小界面元素組成單元就叫作控件。一個按鈕是一個控件,一個輸入框也是一個控件。如圖所示為幾個基本控件(輸入框、文本展示框和按鈕)。
大部分產品都設計為底部有幾個模塊,點擊不同的底部按鈕可以在不同的模塊之間切換,實現展示和切換的就是Tab組件,它包含了頁面容器展示、按鈕等一系列功能,將這些細粒度的控件組合到一起來完成復雜功能,這就是組件。
6. 進程與線程
工作中經常會聽到工程師討論進程和線程。例如,涉及一些復雜功能的技術實現方案時,工程師會說現在已經同時開了幾個線程在處理。進程和線程究竟是什么?它們之間有什么關系呢?本節主要介紹進程和線程的概念。
當我們點擊手機屏幕上的一個App按鈕(啟動一個產品)時,系統會為這個產品的運行分配系統資源(例如CPU和存儲空間),分配好資源后,產品會在這個資源區域運行應用程序。這里所說的運行應用程序就是進程,也可以理解為每一個正在運行的App都是一個進程。
例如,我們在手機上使用微信或者微博,就有分別屬于微信和微博的系統進程。一旦關閉應用程序或因為系統資源緊張而自動關閉在后臺運行的應用程序,進程就會被終止,同時對應的進程所占用的系統資源也會被釋放。
相比于進程,線程是一個更小的執行單元,一個運行中的應用程序是一個進程,一個進程中可以存在多個線程,每一個子任務都可以理解為是運行中的一個線程。我們以微博為例,運行中的微博是一個系統進程,可以上傳照片發布微博,也可以上傳視頻發布微博。
用戶上傳照片的任務在一個獨立的線程中運行,上傳視頻的任務也在一個獨立的線程中運行,并且這兩個任務可以同時運行互不影響,這種方式叫異步線程處理,即可以并行互不干擾完成各自的子任務。當然,還有一種線程處理方式叫同步線程,即子任務是按照一定的順序完成的。
產品之所以能同時完成很多功能,就是因為線程的存在,尤其是涉及需要網絡請求的一些功能時,例如用戶在微信中發布朋友圈后有可能立馬去刷新朋友圈,這時可能剛剛發布的內容還沒有上傳成功,所以在技術實現時會用兩個線程分別處理發布和獲取新信息的子任務。這樣做既能保證用戶體驗,也能保證系統資源被合理地分配和利用。?
7. 什么是“腳本”
“腳本”這個詞在工程師口中出現的頻率比較高。當需要對數據庫進行批量處理時,工程師會說“跑一個腳本統一處理一下”;當需要查詢某一數據報表時,工程師會說“用一個腳本批量查詢”。
腳本也是一種被計算機執行的程序,為什么叫腳本呢?可以把腳本理解成拍戲用的劇本,劇本里會按照角色及對白把要拍的戲清晰地列出來,導演和演員會嚴格按照劇本表演。腳本就是一種面向計算機的劇本,是一個可被計算機執行的文件,文件里是一系列計算機指令,這些指令會按照順序被計算機解析并執行。
例如需要對數據庫中所有用戶數據添加一個數據項,一個一個添加顯然是不可能的,通過一個批量操作一次性地完成是效率最高的做法,此時就會用到腳本。通過腳本寫一個新增數據項的命令,然后執行腳本,所有的數據就會被批量執行同樣的操作。
8. 同步處理和異步處理
同步和異步是開發技術中的兩個概念,計算機通過解析和運行程序完成相應的操作。在程序執行過程中會涉及同時處理多個任務或者同一時間只處理一個任務的情況。在前面的章節中我們介紹過什么是進程和線程,一個進程中包含多個執行任務的線程。
以用戶登錄為例,登錄任務是在一個登錄線程中執行的,登錄任務執行過程中除了驗證用戶名和密碼是否正確外,還需要處理其他子任務,例如從服務器獲取用戶信息,更新本地緩存信息等。這些子任務通常會在新開辟的子線程里執行。執行登錄的線程可以稱為主線程,執行獲取用戶信息的線程稱為子線程。
在一個登錄操作過程中分別執行兩個任務,這個過程就叫作異步處理。異步處理不會造成線程阻塞,相當于各自處理各自的任務。如果所有的任務都在一個線程中處理,那就會出現資源占用過多和響應時間過長的情況,例如我們在使用一些安卓APP時偶爾會出現應用程序閃退的情況,這有可能是因為出現了線程死鎖。
同步處理比較好理解,就是同一時間只執行一個簡單任務,任務處理完后再執行第二個任務,同步處理適用于一些順序執行的任務,例如流水線處理就是典型的同步處理,流水線上的一個環節處理完成后再處理下一個環節的任務。
9.原生開發(Native)和網頁開發(H5)
Native是利用原生控件進行開發的意思,所謂原生控件就是操作系統自帶的UI控件,例如Android和iOS操作系統本身提供的按鈕、輸入框、列表控件等。Native開發的優勢是體驗較好,而不足是每次更新應用需要重新發布新版本。
H5是利用HTML和CSS等技術進行網頁開發,網頁運行在瀏覽器中,所以只要有瀏覽器環境,H5就能運行。比如在Android和iOS應用中可以繼承瀏覽器組件,然后在APP中直接訪問H5頁面。H5開發的優勢是可靈活更新,不需要發布新版本,而不足是體驗相對于Native來說沒有那么好。
10.數據接口(API)及數據傳輸格式(XML、JSON)
API全稱應用程序接口,是客戶端與服務端之間的通信接口,比如登錄功能,發起方式客戶端,調用服務端開放的登錄接口,然后進行數據傳輸和驗證,期間完成數據請求和數據響應。API是服務端開放出來的應用能力,例如登錄接口、支付接口、分享接口等。舉一個形象的例子,接口就是墻壁上的插頭,有兩口的也有三口的,這項能力是由電網對外開放的能力。
JSON和XML都是數據傳輸格式,客戶端向服務端發起請求后,需要將客戶端的數據傳輸給服務端,而JSON和XML就是扮演數據載體的角色,JSON和XML是一種數據格式,好比兩種不同格式的信紙,同一種數據內容分別可以以這兩種不同的格式來進行傳輸。
11.什么是SDK(軟件開發包)?
SDK全稱是軟件開發包,常見的比如百度地圖SDK、微信支付SDK等。SDK是軟件開發商封裝自己的一些基礎服務后,對外提供的一種軟件開發工具包。目的在于省去第三方應用開發者的開發成本,使用現成的軟件能力來服務于自己的產品。
例如百度地圖SDK,提供了完整的地圖展示、導航、定位等功能。作為第三方開發者,只需要調用SDK里的接口來使用這些服務即可,不需要自己從頭開始來開發這些功能,極大的降低了開發成本,而對于SDK廠商來說,擴展了自己的生態圈,也豐富了用戶群。
12.什么是URL?
url是統一資源定位符,對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。互聯網上的每個文件都有一個唯一的URL,它包含的信息指出文件的位置以及瀏覽器應該怎么處理它。
基本URL包含模式(或稱協議)、服務器名稱(或IP地址)、路徑和文件名,如“協議://授權/路徑?查詢”。
第一部分——模式/協議(scheme):它告訴瀏覽器如何處理將要打開的文件。最常用的模式是超文本傳輸協議(Hypertext Transfer Protocol,縮寫為HTTP),這個協議可以用來訪問網絡。
第二部分——文件所在的服務器的名稱或IP地址,后面是到達這個文件的路徑和文件本身的名稱。服務器的名稱或IP地址后面有時還跟一個冒號和一個端口號。它也可以包含接觸服務器必須的用戶名稱和密碼。路徑部分包含等級結構的路徑定義,一般來說不同部分之間以斜線(/)分隔。詢問部分一般用來傳送對服務器上的數據庫進行動態詢問時所需要的參數。
↘好文推薦:
字節跳動如何做教育?| 詳解
美團王慧文,王興14年的帶刀護衛
詳解微信「看一看」多模型內容策略與召回
點個“在看”吧
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的产品经理要懂的「技术那些事」的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线上分享 | 数据产品经理:如何突破现状
- 下一篇: 产品治理体系:产品顶层框架