從零開始成為一名開源程序員,其實只需要八步
探索技術世界,是一件非常令人興奮的事情。你會發現有非常非常多的領域,等待你去學習,去深挖。如果有興趣參與和幫助創造更好的功能,加入到開源的隊伍當中,你知道要從哪里開始嗎?第一步該做什么?第二十步又是什么?
首先要明白,開源是開放的。這聽起來似乎是句廢話,但現實中有很多人恰恰就忘記它只是一個文化現象的描述,而不是一家500強公司的名字。不需要去面試或完成注冊表或注冊表單才能成為開源程序員。只需要做好程序,然后共享代碼。在理想情況下保證代碼能保持開放,不管它被如何使用。
就是這樣,你就是一名開源程序員!
那現在目標已經有了,過程要怎么樣呢?
第一步:找到和選擇自己的 Skill trees (技能樹)
玩過 RPG 游戲的人應該知道,這些游戲中會有“技能樹”的概念。 最開始的時候,會獲得基礎技能,然后不斷“升級”和獲得新技能,再用新技能獲取更新的技能……
成為一名程序員有點像往你的技能樹上不斷添加新技能的過程。 先得到一些基本的技能,持續練習直到它們進入第二階段,然后獲得新的技能。最終沿著你選擇的技能樹不斷進步。
在這個過程中你會遇到許多技能樹。就像開源有很多切入點,每個人都有自己獨特的優勢、才能和興趣。 但是,某些積累下來的悟到的心得技能有助于你成為一名偉大的程序員,并且它們是成功參與到開源項目的重要組成部分。
第二步:編程,從 Scripting 開始
POSIX 系統(如 Linux 和 BSD )的優點之一是每次使用電腦時,都有機會練習一些小編程。 如果不知道要從哪里開始學習編程,那么就從你的工作方式開始。找出自己每天需要重復執行的任務,開始自動執行。 這個步驟其實很簡單,例如批量轉換或調整照片,檢查電子郵件,甚至只是每天自動點擊啟動五個應用程序。反正不管是什么任務,花時間為自己的東西自動化。
如果你可以從終端做一些事情,那么它可以腳本化。 學習 bash 或 tsch ,讓系統 Scripting 引導你學習如何編寫代碼和告訴你系統如何工作。
第三步:找準自己的發展方向
從這里開始,你可以選擇繼續成為一個程序員,或者可以完全跨越到另一個不同的技能樹:系統管理。 這兩個職業有一些重疊,一個好的系統管理員應該有一點編程經驗,可以隨時準備好使用 Python、Perl 或類似的語言來開發獨特的解決方案,但程序員更偏向是一個日夜以代碼為伴的人。
第四步:學習別人的開源代碼
開源是學習編程技巧的好方法, 你可以查看其他人的代碼,借鑒別人的想法和技巧,從他們的錯誤中學習,積累自己的代碼經驗,如果你使用 Linux 或 BSD ,整個堆棧是開放的 - 只要是眼睛可以看到的,都是你可以采用的。
實際情況是,你可能不會去深挖項目的源代碼,而是從側面突然意識到自己意外地學會了代碼。 編程是一項艱苦的工作。 如果不是的話,所有人都去做了。
但又幸運的是,編程是邏輯化和結構化的。你不會深陷其中,因為越捅破它,就會越理解它。
理解如何控制和自動化電腦是一回事,但知道如何編寫其他人想要自動化的東西是你跨入編程領域的關鍵點。
第四步:選擇最適合自己的語言
所有編程語言的目的都是做同樣的事情:讓電腦計算。選擇一個你想做的、你想針對的行業中常用的語言,并考慮是否現有的資料和你的學習方式能讓自己更好地去理解它。
通過一點點研究,你會得到一個關于語言復雜性的參考,然后根據自己當前的水平嘗試最適合自己的。
選擇一種語言的另一種方法是觀察你的目標,找出朝著同樣的方向努力的其他人,然后看看他們在使用什么。如果你的目的是開發桌面工具,你可能會學 C 和 Vala 中的一個,或 C ++。
一旦你學會了一種編程語言,當你需要完成一些工作時,你會發現拿起另一種語言會比較容易。畢竟“語言”只是一套語法和規則,學會一個,在同一個理論上疊加新規則是相當微不足道的事情。
所以說,最主要目標是先去學習一門語言。選擇一個有意義的,或者最有吸引力的,或者你的朋友正在使用的,或者有你最能讀懂文檔的,然后集中注意力,專注去學習它。
第五步:了解開源背后的知識,如協議
不管是正在學習編程的新人,還是準備進入開源的老司機,在跳入這個新世界的大門之前,你需要了解什么是開源。
“Open”一詞不是商標,沒有委員會管轄要如何或何時才能使用這個詞。 然而,由 Debian Linux 已故的 Ian Murdock 共同創辦的開源計劃(Open Source Initiative)定義了開源的含義(允許軟件被自由使用、修改和共享的許可),正式認可和履行 licenses 才被認為是真正的 “Open”。
將其中一個許可證應用于你的代碼,你就是一個真正的開源程序員。 恭喜!
第六步:加入開源社區,了解開源項目運作
做開源項目最重要的就是人,如果沒有積極的貢獻者,項目就很容易停滯。
如果想加入一個開源社區,你需要成為這個社區的一部分。這通常包括訂閱郵件列表,加入 IRC 頻道,或跳到論壇,并從團隊的底部干起。任何成熟的社區都已經發展了足夠長的時間,他們看慣了潛在的成員來來去去,所以你必須明白,當你在準備改變他們的世界,讓他們都同意你的規劃之前,你必須先證明你不是鬧著玩的,不會在三個月后消失。如果你想把事情做大,就準備好足夠的時間吧。
如果你只是想借力,那也是可以被接受的。比如向項目提交小補丁,有時項目管理會認為這些都是好的,有時候會被拒絕。如果被拒絕的補丁對自己來說很重要,可以自己去維護它。因為它也是過程的一部分。
這些社區在哪里存在?這取決于項目。一些項目有專門的社區管理者,會在公共場所發布讓每個人看到。還有一些項目圍繞論壇、使用郵件列表,甚至是問題跟蹤等等。
此外,這里還有一個同樣重要的步驟,那就是看代碼!既然是開源,就務必去多找代碼查看。即使它仍然高于你的理解水平,但它會提供給你如何自己組織一個項目的經驗,以及目前這個項目可能需要的幫助方向。代碼是如何組織的?代碼有注釋嗎?風格是否整潔?多查看文檔,特別是 README、LICENSE 和 COPYING 文件。
不要低估開放代碼的承諾的重要性。這是你參與的原因,所以從各個角度去想想你可以從中學到什么,以及你要如何貢獻。
第七步:少說多寫,為開源項目做貢獻
作為一個開源程序員,想得多不如代碼敲的多。你需要告訴自己在做什么,愿意把時間花在項目上,并備份你的想法和編譯的東西。
為了做到這一點,你應該對項目本身做一些“家庭作業”來提高自己對它的熟悉度。包括學習一個項目怎么接受別人的提交,哪些分支是穩定的等等。
準備開始:
- 熟悉項目及其發展文化,并尊重它。
- 編寫補丁,bug 修復或一些小的功能,并提交。
- 如果你的工作被拒絕,不要灰心。 你的能力不會被拒絕,你做的工作會被評估,開發團隊會和你電話聯系。
- 如果你的工作被接受,改變就建立在認可之上。
- 不斷重復,并嘗試新的和更大的變化。
開源中沒有排行榜。只有你做的所有的正確的參與和貢獻,比如添加到 pool 中的想法,添加到 commits 中的 stash。
第八步:擴展新的技能,持續成長
不管是在任何環境中的編程最終總是會涉及到個人發展。 無論你是尋找新的方法來解決問題,尋找新的方法來優化代碼,還是學習一種新的語言,或學習如何更好地與其他人打交道,你永遠都不會想停止成長。 把自己開發的越全,項目就越有利。
成長,無論是個人和專業,最后呈現在一個 list 上,但它實際上持續整個過程。 成為開源程序員不像是一份穩定的政府工作,而更像是一個不斷分裂的過程。 學習,分享,再學習,分心去做一件其他的事情,然后學習更多。
以上就是關于開源的過程: open source,自由發展,每一個字的意義其實就是開源最終的意義。 所以快去找你的技能樹,選擇你最強的能力,支付你在這個過程中的學費(或時間、或金錢),升級,并參與!
來自:https://my.oschina.net/editorial-story/blog/824049