被低估的開源程式設計:忽視開源會影響你的職業生涯……
全文共3460字,預計學習時長9分鐘
圖源:unsplash
時至今日,很多人對於開源程式設計依然存在著誤解和低估,這無疑令人震驚。資深開發人員通常十分尊重和讚賞開源程式設計,但大多數初學者往往並不知道開源程式設計潛在的機遇。在網上尋找實習機會從而獲得報酬更具有吸引力,忽視開源的重要性似乎是可以被理解的。
雖然實習確實非常重要,我完全支援去實習,我自己也參加過一些實習,但忽視開源可能會對你的職業生涯造成影響。
自從幾個月前接觸了開源世界後,筆者就一直在研究它。如此簡短的一篇文章,或許無法把我從中學到的東西完全用文字表達出來,但我會盡力而為。首先,筆者會簡單介紹一下開源軟體到底是什麼。
什麼是開源
開源軟體與大多數人每天使用的軟體並沒有太大差異。事實上,如果你現在上網並嘗試找到所有流行開源軟體的列表,你會感到十分驚訝。例如,Mozilla Firefox、Ubuntu、WordPress、VLC媒體播放器等等。而它們與其他軟體的區別到底是什麼?是因為它們符合“開源”的條件,而其他流行的軟體不符合嗎?
很簡單,在於它們有一些預定義的特徵,這些特徵定義了我們一直討論的術語。
· 免費性:這可能是開源軟體最明顯的特徵。開源軟體對所有人都是免費的,無論是開發者、使用者還是所有者。它不會收取任何服務費用,如果它收費了,它便無法自稱開源。
· 透明性:這意味著所有使軟體執行的程式碼都可以在網際網路上免費瀏覽。你可以看到它,使用它,用它做你想做的任何事情。最重要的是,你可以參與其中,新增你自己的程式碼,然後把程式碼插入其中,從而改進軟體。
· 公平性:對許多人來說,這似乎是一個非常普遍的觀點,但實際上這是開源一個非常重要的方面。即將釋出的軟體將對所有人開放,不考慮他們的種姓、宗教、領土、性別或任何其他可能區分人與人的因素。軟體開放,人人平等。
· 免費進一步使用性:似乎與第二點的重複了?不同之處在於,這是從程式設計師的角度出發,任何程式設計師/開發人員都可以自由地使用開源軟體中編寫的程式碼,用於自己的個人用途或專案。任何功能、任何特性都可以按原樣使用,沒有任何法律問題。
圖源:unsplash
這就是開源實際意義的基本概述。瞭解這一切後,很明顯,終端使用者不會注意到開源軟體和非開源軟體之間的任何區別,除了前者更有可能是免費的。
參與開源的人員以及原因
很多人此刻都會想到這個問題。我們知道了這些軟體是完全免費的,最初做這個專案的開發者似乎並沒有得到任何報酬。那麼為什麼會有人願意把寶貴的時間投入到這件事上呢?還有,我在這篇文章開頭提到的機遇有哪些呢?
首先開源“付費”,而且報酬很高。人們通過開源賺錢的方式有很多種,但在我進一步談論金錢之前,我想指出一些其他的益處,這些益處比金錢更為重要:
· 知識、經驗:當然,能夠不斷從工作中獲取新的知識總是有幫助的,但遠不止如此。在我個人看來,對於一個初學者,獲得經驗的最好方式便是參與開源。人們會尋找實習機會,或者僅僅是簡單的付費專案,而這些專案大部分都在公司名下,他們希望從你身上獲得價值。
以筆者自身為例,雖然我參加過的每一次實習都有非常支援我的經理和學長,但參與其中一個依舊不是一件容易的事情。你會與大量的求職者競爭,競爭對手中很有可能出現有幾個月甚至幾年工作經驗的“老手”。
真正參與一個現實世界的專案變得很困難,而開源為此提供了完美的平臺。在這個平臺上,無論你投入多少工作,你始終是有價值的。壓力會比實習要小得多,而且學習經驗會好得多。正因為如此,這是獲得更多的經驗並參與更多的真實世界專案的最有效的方法。
圖源:unsplash
· 價值:在這個領域工作最重要的因素之一,你得到的價值將是驚人的。這些價值可以來自公司、個人、這些專案的所有者以及各種程式設計社群,擁有一個好的開源檔案終歸是一個很大的優勢。
· 專業網路:對於這件事情我經驗頗豐。在網上做專案時,你會和很多人合作,合作包括大量的交流。交流過程中,我們形成了很多專業的聯絡。在我活躍的LinkedIn聯絡人中,有來自倫敦和阿姆斯特丹的人,你永遠無法設想什麼時候你的專業網路會給你帶來怎樣的幫助。
· 機會:這一點與第二點密切相關。具體來說,是來自公司的價值。包括谷歌這樣的行業領袖在內,很多公司都非常關注開源,他們最負盛名的專案之一GSoC(Google Summer of Code)就完全基於開源。只有擁有一個好的開源檔案,並且參與的專案也是開源的,這樣才能夠進入公司,而這說明了目前這個領域在行業中的重要性。
GSoC並不是唯一,還有數百個有聲望的實習崗位在招收具有良好開源技能的人。Outreachy、MLH、Linux Foundation只是一些例子,窺一斑而知全豹,這些公司對開源的依賴直接反映了它的價值。
當然,你會得到報酬,認為開源無法帶來收入的想法是完全錯誤的。當你達到一定的水平,你就很有可能會從各種來源(實習,贊助商,公司付費)中獲得大量的收入。許多人都十分努力地建立系統,以確保人們不會因為系統無法提供資金而不願參與開源。就連我剛才提到的實習,他們付給實習生的工資都非常高,例如,Outreachy 3個月的津貼為6000美元。
我該如何開始呢?
這也曾是我困惑的問題,並且一直懷疑我所遵循的方式,直到我參與了第一個專案。答案就是:你只需要遵循你能想到的最直截了當的方法。然而,我們是否應該在知道如何做之前,瞭解所需的技能什麼?
不需要。直到現在,無論我說什麼,都會讓人覺得你需要擅長程式設計才能參與專案。當然,這是因為軟體是由程式碼組成的。但是問題在於,軟體不僅僅是由程式碼組成的。一個單一的軟體投放到市場會有許多方面:設計、內容、使用文件,甚至報告錯誤都是軟體的重要組成部分。這些都需要編碼嗎?不。你只需要做你已經擅長的事情,並積極參與到需要你的專案中。僅此而已。
不過,在這裡忽略程式設計是非常不公平的。一般來說,你並不需要學習一些新的技能。但作為一個程式設計師,參與開源確實有一些要求。
圖源:unsplash
· Git:Git是處理軟體的常規方式。它並不是一種軟體製作語言,只是一種檢查程式碼的助力工具。利用Git的強大功能,人們可以在程式碼中建立檢查點或建立分支,這意味著在保持先前版本完好無損的同時處理程式碼,以確保在需要時可以恢復原狀。
本質上,Git是軟體的版本控制系統,它並不是針對開發軟體,而是對於在開發軟體過程中與其他人合作來說,是極其重要的。此外,由於在參與開源時協作是最重要的,Git也變得同樣重要。
· Github:Github是所有開源託管發生的網站,它不是唯一的網站,但無疑是行業領袖。這基本上是Git的使用者介面版本,當緊密整合時,它就成為了完全承載協作的資源。因此,它在工作流程中和Git一樣重要。
· 程式語言:參與一個軟體,到最後,所有的東西都只是程式碼。因此,顯而易見,瞭解程式碼所用的語言是至關重要的。
要求僅此而已。對於大多數程式設計師,他們已經知道一些程式語言,所以需要的新技能就是Git和Github。好訊息是:學習它們非常容易,一兩天即可掌握天。在YouTube上找一個好的教程,就可以開始了。
整個過程中唯一困難的部分是找到一個可以參與的軟體。作為初學者,你可能需要一些時間來找到一個真正需要掌握的技能集(當然是在程式語言方面),而最好的辦法就是不斷尋找。你可以手動完成,或者可以在Github上尋找與“good-first-issue”標籤有問題的程式碼庫,那一定會帶你步入正途。
接下來呢?只需在系統上覆制程式碼,進行想要的更改,然後將程式碼放回網站。如何做到呢?這就是Git和Github的用武之地。當你學會了它們,做這些步驟就輕而易舉了。恭喜你,你已經參與了第一次開源,現在是一個開源開發者了!
圖源:unsplash
為什麼每天有4000萬人在“免費”做2800萬個專案?希望本文幫你找到了答案,也希望你會成為其中一員。
一起分享AI學習與發展的乾貨
歡迎關注全平臺AI垂類自媒體 “讀芯術”
(新增小編微信:dxsxbb,加入讀者圈,一起討論最新鮮的人工智慧科技哦~)