學習永無止境,作為一名在學習道路上不斷行走的程序員,想要得到更多的挑戰就得向比自己更優秀的人看齊,不斷進步......
作者 | Chen Ravid
譯者 | 彎月,責編 | Elle
過去的12個月里,我一直在和開源開發者打交道。在以前的工作中,我們團隊也曾使用過開源代碼庫,但那時我只是一個從 git 上克隆代碼的陌生人,這一次真正見到了這些代碼庫背后的開發者。這次旅程對我有很大的啟發。
嚴格來說,我自己不是開發人員。雖然我也會編寫代碼,但是相信我你并不想閱讀我的代碼,更不用說運行了。我更擅長做產品方面的工作。作為產品經理和企業家,多年來我曾與許多軟件開發人員一起工作。在這期間,我對開發人員以及他們的工匠精神產生了深深的欽佩之情。然而,開源開發人員,尤其是那些從頭建立開發項目以及長期維護項目的開發人員,對我而言他們一直是個謎。這些開發人員日復一日,年復一年心甘情愿貢獻出所有的空閑時間,創建出一個又一個錯綜復雜的軟件,他們深深地觸動了我。
我想不出還有哪個行業有類似的情況發生,過去的一年真的讓我感觸良多。我不知道這些項目的背后都有怎樣的人在默默無聞地奉獻,但我可以告訴你,這一年我沒有虛度光陰。
他們不僅僅是聰明
開發人員非常聰明。這一點無需多說。編寫代碼是一項極其復雜的任務。雖然從用戶的角度來看,有些任務非常基本,但也需要付出大量的腦力勞動,對于非程序員來說,很顯然如果沒有足夠的技術力的話,這些工作會讓你手足無措。我總說與開發人員一起工作既有收獲,也有很多艱辛,因為你需要與這個星球上最聰明(1%)的人打交道。他們的要求很嚴格,有時只是為了聽懂開發人員向你解釋的某個復雜的概念,就會讓我頭昏腦脹。
然而,開源開發人員有過之而無不及。許多軟件開發人員花了大量時間來處理一層層交代下來的任務。在許多情況下,開發人員在任務的制定上沒有太多發言權。開發人員可以游刃有余地處理好任務,卻很少有機會了解這些任務背后的原因。
開源開發人員不僅擁有熟練的編程技術,而且還需要深謀遠慮并通過系統性的觀點來決定做什么、怎么做,以及最重要的是為什么要這么做。雖然看起來微不足道,但背后的原因才是軟件項目最重要的部分。如果建立項目的動機不夠強大,那么整個項目都會廢掉。通常,參與項目創建的開源開發人員都非常清楚項目背后的原因非常重要,只不過他們無法坐視不理。他們必須行動起來,他們必須寫出代碼。擁有緊迫的使命感,對項目背后的原因有著深刻的理解,同時又具備高超的技術力和強大的好奇心,這樣的人才實在是寥寥無幾。
他們充滿激情
很多人偶爾也會感受到我上述提到的使命感。很多時候,我們拿定了主意,卻很少有人愿意投入時間和精力付諸實際行動。保持開源項目的長期運作需要極大的熱情。只有真正對解決問題有熱情的人才能忍受漫長而乏味的歲月,長年累月地創建和維護實用、穩定、生產級的項目。
解決問題的熱情是許多開源開發人員的動力。無論是創建項目的開發人員,還是維護項目的開發人員,熱情都是他們的動力源泉。通常,在日常工作中遇到的某個問題時,他們就會思考“為什么沒有解決這個問題的方法?”一般情況下,“有問題”和“我要解決這個問題,并為其他所有人提供解決方案”之間存在很大的鴻溝,只有極少數人能夠跨越。在解決了最初遇到的問題后,熱情會推動他們繼續探索,開發更多功能,并一直努力向前。他們沒有老板,沒有JIRA任務票,沒有截止日期,也沒有客戶等他們交付產品。他們有的只有激情。
他們堅持不懈
我出生在以色列。許多人稱之為“創業的國度”,因為除了硅谷以外,以色列的人均創業公司比例是世界第一。我認為這與以色列人從出生起就被灌輸的企業家精神有關。但是,除了Waze、Wix、Fiverr 和 Mobileye 之類的成功案例之外,以色列還有很多“想做企業家”的人。這可能也不是以色列獨有的現象,但作為當地人,我可以告訴你我遇到過很多這樣的人。有一個好主意,但僅限于紙上談兵的人很多,真正能夠付諸實踐,堅持下去的人卻很少。制作出色的產品需要很長的時間。大量的時間。僅有一個想法還不夠,你還需要堅持不懈地努力。
開源開發人員和維護人員就有這種長期從事某個項目的毅力。任何產品在0.0.0.1版本都不可能做到完美。通過堅持不懈的努力,打造出實用的產品需要付出時間、辛苦的工作和自律。當我和一些開發人員坐在一起,查看最早的版本時,他們都會笑出聲來。他們通過堅持不懈的努力,將一些雜亂的功能變成了復雜的項目,并應用到了成百上千的商業中。
他們是編程界的無名英雄
我曾與一名開發人員回顧了他早期的一些嘗試,我想了解他的項目如何從100行的代碼,經過3年的努力,發展成了如今這個龐大的 Vue 組件庫。原來,他開發的許多功能和組件都來自一些早期的用戶發來的請求。他告訴我,當聽說有人在使用他的代碼時,他感到非常高興,同時他也感到自己有義務幫助他們,并滿足他們的請求。
與其他專業比較起來,除了從事慈善工作的志愿者外,我想不出還有哪個專業的人會用自己辛苦積累起來的專業知識和珍貴的業余時間來幫助其他人從事與自己無關的商業項目。沒錯,上述我提到的這名開發人員正在幫助其他開發,雖然這些開發并沒有直接利用他的代碼賺錢,但是他們所在的公司在直接利用他的代碼賺錢,試想一下有哪位律師愿意為其他律師免費起草合同?
我希望在其他領域也能看到這種無私奉獻和分享知識的人類,而不僅僅是編程界。如果我們可以用代碼拯救世界,那么我敢肯定,開源開發人員將一馬當先引領潮流。
他們沒有得到應有的回報
開發人員為開源做貢獻并不是為了錢。就目前來看,他們沒有任何回報。多虧了上述我提到的理由,他們才愿意這樣無私地奉獻。我們多么幸運啊!然而,在采訪了數十位開源開發人員之后,我發現事情有點不太對頭。開源開發人員承擔了過量的工作,卻沒有得到相應的報酬,有時甚至被人忽視,他們也開始慢慢意識到自己受到不公待遇的嚴酷現實。
如今開源非常普遍,然而卻很少有人認真想到開源背后默默付出的開發人員。各個商業軟件公司使用了大量開源組件。開源確實無處不在。據我的了解,當今開發的90%的商業軟件都依賴于開源組件或系統。這些組件如此普遍,人們甚至不假思索就開始使用。
如果你正在構建某個商業軟件,而且使用了開源組件,那么你是否曾經想過那些背后的個人或團隊,他們花費了無數的時間和不眠之夜,幫助你成功地構建了軟件,并為你節省了數月的工作?沒錯,我們中的一些人也做出了貢獻,但是只有極少數人從頭開發了供他人使用的代碼。
如果我們希望開源長期發展,那么就需要理解這些開源代碼背后的人并沒有得到應有的報酬。實際上,他們根本沒有獲得任何回報。如果開發人員花費大量時間修復bug、開發新功能、支持新框架,卻無法得到任何形式的補償,那么他們可能堅持不了太久。我親眼目睹很多開源項目被拋棄,因為開發人員沒有足夠的時間或資源來維持開發工作。他們需要修復的bug太多,需要付出大量努力才能繼續開發更多功能,還需要為適應即將出現的新技術而處理安全問題。開源開發人員從來沒有金錢上的要求,但是如果他們無法獲得維持下去所需的資源,那么我們所有人都將蒙受損失。
總結
開源是一件不可思議的事情。有時,我感覺開源就像日常生活中的用電一樣。人人都在使用,但是卻沒人去想如果有一天它消失了,我們會怎樣。如今的開源無處不在、免費、豐富,這完全歸功于擁有上述罕見品質的人才,還需要天時地利人和。
在我看來,軟件行業需要為開源的長期發展做打算,考慮如何確保開源開發人員有足夠的動力維護項目,并確保下一代開發人員還會創建新項目。如果我們不能為開發人員提供良好的發展條件,那么即便是最聰明、最富熱情,最執著和最無私的人也無法堅持到底,也許他們會把自己的開源代碼變成私有。
作者:Chen Ravid,xscode的合伙創始人。
原文:https://medium/swlh/5-things-i-learned-about-open-source-developers-a38f26ae79ae


