pip 人格

問題

pip 團隊想要建立 pip 使用者人格,以促進更快速的使用者中心決策。

跳至建議

研究

根據提早訪問 pip 使用者的訪談,以及針對使用 Python 的不同社群進行的資料蒐集研究,我們預期有許多社群並非專業的軟體開發人員。舉例而言,SciPy 函式庫便被科學和工程社群廣泛用於數學分析、訊號和影像處理。

抱持這個前提,我們預期許多這些使用者在 pip 上會有不同的期待、挑戰和需求。

我們的假說是

  1. Python 使用者可區分為 3 種主要的使用者類型 - 軟體使用者、軟體建立者和軟體/套件維護者

  2. 大多數(超過 60%)會將自己定義為 Python 軟體使用者

  3. 少數會將自己定義為 Python 軟體維護者

使用者類型定義

在研究過程中,我們遇見了 Python 社群中不同的使用者類型。我們提出的 3 種 Python 使用者類型分別是

Python 軟體使用者

「我主要使用 Python 軟體作為工具,協助我完成想做的事。這可能是執行科學實驗、使用 Python 軟體製作音樂,或是分析使用 pip 安裝的數據。我不會為其他人撰寫 Python 軟體。」

Python 軟體建立者

「我使用 Python 軟體語言和 Python 軟體套件替其他人製作軟體,主要是其他人。一個例子是 - 為我的客戶建置網頁應用程式。為了建置這個網頁應用程式,我可能使用 Django 架構,以及多個 Python 套件和函式庫。」

Python 套件維護者

「我會花許多時間建立 Python 軟體套件和函式庫,供他人使用在他們製作的軟體中。我可能會製作 Python 套件和函式庫,然後將它們發佈在 pypi.org 或其他軟體存放庫。」

結果

在我們的研究中,我們發現這些使用者類型確實符合參與者對他們使用 Python 的感覺。參與者在被詢問時,並未指出有顯著差別的 Python 使用者類型。

這些使用者類型都是一種光譜。一些 Python 使用者在時間、經驗/訓練的積累下,開始需要重複使用程式碼,便開始製作自己的 Python 軟體。

將自己視為這些使用者類型之一並不妨礙使用者同時是另一種使用者類型。Python 使用者較可能是 Python 軟體製作人員,但很少是 Python 軟體維護人員。

大多數 (86%) 的參與者表示自己是 Python 軟體使用者。這範圍很廣,包括 a) 將 Python 軟體-SciPy、Scikit-Learn - 當成一種工具使用,而沒有意願或興趣做更多的事情,到 b) 更進階地使用 Python,包括修改他人的程式碼或腳本,甚至使用程式庫為自己的需求建立特定程式碼。

75% 的人表示自己是 Python 軟體製作人員,如同 Python 軟體使用者一樣,這範圍從撰寫基本腳本、程式碼到成為專業軟體開發人員。

40% 的人表示自己是 Python 軟體維護人員,維護人員的活動僅視為具備多年 Python 經驗、深入參與特定套件或應用程式或將其視為工作的一部分的人員才能執行。

我是 Python 軟體使用者

正如預期,幾乎所有參與者都表示自己是 Python 軟體使用者 (86%)。這是最基本的使用者類型,包括受過訓練的軟體開發人員和因為工作而接觸到 Python 的使用者。

非軟體開發人員使用者表示 Python 是一種把事情完成的程式語言 -

「幾乎所有人都屬於使用者(類別),那就是目標。這並不是一種為特定領域而設計的模糊語言,而是一種廣泛的通用語言,旨在把事情完成。它被許多不懂其他程式語言的人使用,他們只想要一種語言來完成正在執行的工作。」- 參與者 240312164

但是,「使用 Python 軟體」的意思取決於詢問對象而有所不同,參與者將自己視為處於某個範圍內的 Python 軟體使用者。

我是 Python 軟體使用者 回應數目
我同意 50
我不同意 4
我沒有意見 11
我非常同意 70
我非常不同意 4
總和 140

Pie chart with responses to question - I am a Python software user

範圍的下限

Python 軟體應用程式被有些人視為他們執行「實際」工作時使用的工具,像是科學家、資料分析師、工程師、記者。

在此,他們正在「使用」Python 應用程式如 SciPy、PsychPy、NumPy,來執行科學實驗、收集資料和分析資料,目的是建立知識以做出決策和找出下一步要做的行動。

這些使用者 1) 是 Python 軟體的新手,2) 在其專業領域中接觸到這些 Python 應用程式,並將其當成工具使用。

他們將 NumPy 或 SciPy 描述為一種 Python 軟體應用程式,類比於 Windows 使用者或 Mac 使用者。

這類使用者並非「受過古典程式設計訓練」的,這是其中一位參與者的自我定義。因此,他們可能沒有受過訓練,或者對於軟體相依關係等程式設計概念毫無所知。當他們需要處理複雜或令人困惑的錯誤訊息或說明時,他們會遇到問題且經常因此受阻。

光譜的高階

往「光譜的高階」邁進,以進階方式使用 Python 的 Python 使用者已經將 Python 用了很長一段時間,甚至長達好幾年。

同樣地,他們可能不是受過古典訓練的開發人員,不過透過接觸這方面,透過工作同事和他們自己的使用,他們開始進行實驗。這種實驗的形式包括修改他人的腳本、上課、閱讀書籍,如此一來,他們才能將程式碼用於其他目的。

這等於是製作軟體,他們可以使用這種軟體作為日常工作的一部分,但其他人也可以使用這種軟體。

我們請參與者說明此使用者光譜的進展,使用者和製造者有什麼不同?

參與者談到「你是在進行可重複使用的東西,還是使用工具來達成一次性的任務?」

「我沒有受過古典軟體開發訓練,比較有統計分析的經驗。我不知道這是一個可讓任何人上傳套件並成為維護者的地方。」- 參與者 _240396891(使用 Python 進行網路流量分析/解析或機器學習的應用研究實驗室資料科學家)

「首先,我使用我用 Python 寫的軟體,從 Pip 中使用 Python 函式庫。我使用 Django、Flask、類似 Request 的函式庫。」- 參與者 240302171

「我不是受過古典訓練的程式設計師,所以這是我學習的絕佳方式,而且可以隨時掌握最新技術。在某些情況下,由於我並非受過古典訓練的程式設計師,因此這會造成影響,對於哈希的使用方式,我有合理的知識,但如果我想變更 Python 的哈希,我就必須研讀相關書籍。我可以在其他地方找到資訊。」- 參與者 240312164(使用 Python 進行電腦模擬、設計實驗方法的核子物理學家)

我是 Python 軟體製造者

對於某些 Python 使用者來說,成為「Python 軟體製造者」是自然的進展,尤其是擁有軟體開發訓練的使用者,無論這類訓練是在職訓練、個人學習或正式教育。這類訓練對於了解基本的程式設計概念至關重要。

正如前面所討論的,某些參與者自我認定為「進階」的 Python 使用者,使用 Python 軟體來修改或建立其他軟體。這些使用者很有可能會進階成為軟體製造者。

有 55% 認同自己是軟體製造商的參與者,擁有 5 到 20 多年的 Python 經驗。只有 18% 的軟體製造商擁有不到 2 年的經驗。

Pie chart with responses to question - I am a Python software maker

我們沒有詢問這些參與者他們建立的軟體「品質」,但除了專業軟體開發者以外,這些使用者的看法是他們並不是軟體開發者。

我是 Python 軟體使用者 回應數目
我同意 50
我不同意 9
我沒有意見 14
我非常同意 56
我非常不同意 10
總和 140

建立軟體和先前定義相同為「您正在開發可重複使用的事項嗎?還是您使用工具來達成一次性任務?」

「我使用 Python 軟體和函式庫來開發我正在開發的這款產品,其基礎建構在 Python、React、D3,且一切都建構在 Python 上。雲端資源是 Python,測試也是 Python。」- 參與者 240315927 (建立一個基於 Python 的資料分析應用程式的專業 IT 開發者)

「我使用 Python 開發軟體。我的日常工作就是使用 python 開發軟體。主要是 Django 網頁設計。我受雇於一家零售公司,撰寫計算訂單,在其他庫存管理系統建立資料。資料分析。」- 參與者 240393825

「我寫過軟體,有時是出於商業和個人因素。有一段時間我開發一個 django 網站專案,而這個專案是數千人所使用。我不認為我的任何實際專案都是基於。」

「大部分是為了系統管理員,自動化。[喜歡] 使用 python 而不是 shell 腳本。我使用 WordPress 網站管理伺服器。我寫了一個腳本來更新這些網站、郵件管理員清單和 sql DB 管理,以及不同的公用程式。」- 參與者 240313542

「我使用 Python 開發事物,例如供資料科學家和軟體工程師使用的產出。我開發軟體來觀察模式並分析素材。我想我是製造商,因為有其他人正在使用,而他們是同事。通常是非技術的同事。我產生產出,讓資料易於理解。而他們使用結果或將之封裝在 flask 應用程式。或分析圖表。」- 參與者 240426799

我是 Python 軟體維護人員

Python 軟體/封裝維護人員使用者類型似乎需要大量時間和經驗,領域經驗,因為軟體可能是非常具體的(例如 SciKit Learn、SciPy 等),技術/編碼經驗和社群經驗。您需要花時間在擔任其他工作後,才能成為一位維護人員。

對於大型專案,似乎需要有核心程式碼貢獻者和維護人員。維護人員不總是撰寫程式碼,他們在技術架構和技術設計方面的參與度可能高於撰寫程式碼。

軟體維護人員的角色方面沒有被廣泛提及的是社群管理方面。

Pie chart with responses to question - I am a Python software maintainer

我是 Python 封裝維護人員 回應數目
我同意 39
我不同意 24
我沒有意見 20
我非常同意 18
我非常不同意 38
總和 140

「您可以在累積一定程度經驗後成為維護人員。」- 參與者 240278297

「要成為套件維護員,你必須花很多時間修正問題,例如:你的套件在 Github 上,你得查看問題、檢視公關、編寫說明文件。套件維護員是深入參與專案的人員。他們處理更多支援電話,針對問題思考更多,以將套件送入多個環境。這正是 Python 社群的好處,我試著使用一個 Python 套件,但說明文件中有一個問題。我說,有更好的方法可以執行這個範例。他們回答並說:「太棒了,你要做嗎?」我對進行套件維護沒興趣,我沒時間做,如果有特定的問題,我會關注它。多做一些(事)會很好。」- 參與者 240278297(專業 Python 軟體開發人員)

「我是 scikit-learn 的核心開發人員,花時間編寫程式碼。嚴格來說,寫程式碼是我最少做的事,我大部分時間都在檢閱他人的程式碼。有很多 API 設計工作可以轉譯為編寫程式碼。我可能會寫程式碼,也可能不會。我時不時參與持續整合。[…] 我是最近 2 次發布的發布經理。有不同的維護員類型,寫程式碼的維護員,但是你確實需要核心開發人員寫程式碼。但要成為維護員並建立社群,則與溝通、公關和指導人員有關。」- 參與者 240306385(SciKit-Learn 核心維護員)

建議