楠木軒

軟體工藝典範之作:Jupyter notebooks的隱藏力量

由 習國防 釋出於 科技

全文共1486字,預計學習時長5分鐘

圖源:unsplash

我們不得不承認,Jupyternotebook確實是一款非常棒的工具,它不僅加入了探索性資料分析功能,也開闢了整個軟體工藝界的典範。

現代軟體行業非常瞭解如何保持程式碼基礎整潔。為了進行結構化,程式碼基礎將首先被分為多個域,然後是服務或庫,接著它們被分為不同的程式包,最後被分成類或函式。

每一個過程中都會有用於拆分、設計應用程式介面(API)和通訊的多種模式,有整合新程式碼的程序和支援該程序的工具,有多種測試方法(和工具),還有用於發現不良設計的程式碼審查實踐和工具。

在程式碼投入生產之前,經驗豐富的軟體工程師會應用以上全部最佳實踐,因為忽視不良設計的風險確實存在——你可能會為了在系統中新增一些小功能而花費數週時間,而且修復bug的過程也會是一場噩夢。

問題是,不是所有的程式碼都值得投入生產。對企業來說,沒有直接或間接附加價值的程式碼最好不要生產。在生產過程中,無用的功能會產生兩個不好的影響:

· 為了遵循上述所有的最佳實踐,生產過程會非常昂貴,所以你就不能再實現其他功能了。

· 它增加了系統的複雜性,相當於增加了用於系統維護的運營成本,也使得進一步的改變難以實施。

有時候,檢驗創意是否符合客戶需求的唯一方法就是實施幾個計算機程式設計(MVP)。但更加簡單的辦法是透過研究進行假設,這也是Jupyter notebooks發揮作用的地方。

資料科學家的首要目標若是改進某一特定產品,那麼假設將成為其工作的主要內容。這是滿足特定需求(通常是客戶需求)的一種可行的方法。

假設可以分成更小的部分,比如研究、資料傳遞、分析和模型構建。最重要的一點是,假設有可能成功,也有可能失敗。失敗的原因可能是該假設完全沒有需求,或者它並沒有真正覆蓋需求,也可能是沒有足夠的資料來構建模型,或者客戶不願支付所需的價格,又或者因為其他的一些原因。

因此,你需要一種方法,既能讓你以低廉的價格去測試假設並很快得到反饋,又能迭代多個假設,直到你找到一個可行的解決方案,或宣佈該問題無法解決。

圖源:unsplash

假設你是一名保險推銷員,想向客戶推銷更多的旅遊保險,你會如何尋找合適的群體呢?是依據人口統計學資料(年齡/性別/家庭狀況/就業狀況)還是他們擁有的其他產品?還是基於他們的財務交易?或是基於他們的GPS資料(假設客戶擁有你的應用並共享該資料)?你會提出一定的折扣還是按正常價格出售?這些都是有待檢驗。

使用Jupyternotebook,可以對每個假設執行如下操作:

· 對客戶的資料進行探索性分析

· 隨機匯出部分受眾,以便將其傳遞給市場部進行活動

· 在該活動開始執行後,追蹤活動的資料並撰寫報告

· 建立一個基於規則或使用機器學習的簡單模型,以此將客戶基礎限制為你的目標受眾

不要圍繞模型構建服務,不要將其整合到CI/CD管道中,不要在客戶關係管理(CRM)中實施新的流程,也不要在此時向移動應用程式新增旅行保險小部件!

圖源:datacamp

實現單一假設所做的所有工作都應限制在1周左右,而且反饋週期也不應太長。你也要做好接收到差評的心理準備。將這些反饋記錄下來,然後進入下一個假設——畢竟扔掉一個筆記本比扔掉一個完全構建和整合的解決方案要容易得多。

如果你找到了能真正為產品增加價值的假設,就可以開啟IDE程式,開始編寫可用於生產的程式碼,我個人喜歡用PyCharm。

講真的,將時間投資在追趕業界最佳實踐上,十分值當。