為什麼開發者擔心將程式碼公佈
本文作者Matthew Mombrea是Cypress North的創始人、軟體工程師、科技愛好者,在這篇文章裡介紹了開發者為什麼害怕將程式碼公佈的四點原因。程式碼公佈不是什麼壞事,不僅能夠促進交流、提高開發者的個人技能,還能提升軟體質量。(以下為編譯)
從開原始碼或者是公佈程式碼裡獲得的利益是無法估量的。也很難想象,在今天的程式設計世界裡,如果沒有免費的類庫、程式碼片段和技術教程的話,那會帶來多少麻煩。可是,為什麼大多數開發者如此擔心將他們的程式碼公佈出來呢?其實對於這個問題,沒有明確標準的答案,下面所提到的四點原因主要是代表那些絕大多數反對程式碼公佈者的觀點:
1. 我的程式碼還不夠好
這是最常見的反應,也許是出於謙虛的態度。幾乎每個公佈程式碼的開發者在一開始都會有這樣的感受。對於開發者來說,軟體是一種在表達能力上非常個性化的表現形式。解決問題的方案是多種多樣的,但是你所選擇的解決方式可以代表你的個性和技術水平。
從另一個角度來看,有多少開發者沒有看過別人的程式碼?有多少開發者沒借鑑過別人的基礎程式碼?估計開發者大部分時間都是在看別人的程式碼來完善自己的程式碼程式。甚至有的時候,當你在看別人的程式碼的時候,發現程式碼裡有問題或者解決方案是無效的,你可能會認為這個開發者一定是笨蛋!或許你會出於好意提醒那個開發者如何修改這個問題,併為他節省了很多時間,但結果呢,你得到的回報可能連一句謝謝都沒有。這也許就是為什麼大多數開發者不願意公開自己的程式碼,怕被指出錯誤後覺得沒面子。事實上,只要儘自己的力量把工作做好,為那些需要程式碼的人提供你的程式碼,幫助別人在程式開發過程中獲得好處,大部分人還是會感謝你的。
2. 不希望別人非議自己的軟體程式
的確,這是另一個很自然的回答。現在網際網路就像是一個大熔爐,什麼樣的開發者都有,有的喜歡藏起來使用匿名,有的程式設計師喜歡背地裡搞點小手段。現在很多開發者素質不是很高,總是喜歡把任何事都搞得像是在競賽一樣,別人有點小的成就了,他就開始以不同的方式在那裡挑三揀四、追毛求疵,說些風涼話。在這裡不得不說,看過外文網站的人估計都會有這樣的感覺:文章下面的評論內容基本上是比較乾淨的、積極的,不像在國內的網站上,把別人的文章當成是打口水仗的戰場。不過這可能是大的環境所導致的。於是乎,有些程式設計師在這樣的環境下不得不變得具有防禦意識,更加任性,與此同時,自我意識更加強烈。
不過事實是這樣的,作為一個程式設計師,必須要有能夠接受批評的心胸。同時,還要能夠甩掉心理包袱,把批評當作是一種動力。換句話說,建設性的批評能夠幫助開發者快速成長,節省時間去經歷更多的經驗教訓。
3. 事關安全問題
安全的確是不可忽視的大事,任何需要公佈的東西都要考慮到是否會暴露敏感資訊或是訪問協議等等。如果你認為我們談論的東西和安全或敏感資料加密有關的話,這裡建議你在開發過程中儘可能早些時間公開程式碼。通過這種方式,將你設計的安全保密方法公佈出來,如果你的方法經不起推敲的話,肯定會有一些專業知識豐富的專家幫助你解決問題:儘早的查出程式策略裡的漏洞,或者是你根本沒注意到的錯誤。
最後,總結別人所提供的方式方法,你所獲得的就是一個更安全的最終產品。任何安全措施,只要能夠被瞭解程式碼的外人輕輕鬆鬆破解的話都不是安全程式碼。可以想想OAuth 2.0的安全事例,它的開放設計和編碼都是借鑑外部思想和安全方法的。
4. 擁護自己的技術思想
也許大多數人對現在這個網路世界不是很信任,因此公眾對於這方面的擔憂達到了一個荒謬的高度。就像有些人大聲跟你說:我有一個巨好的想法嗎想知道嗎?不過沒有NDA(保密協議)我是不會輕易告訴你的。事實上,沒人會偷你的想法,你所做的事情可能已經存在了,或者別人已經開始做了(甚至是開源的)。
這裡並不建議你將整個專案的開發方案和整個商業模式進行開源處理。這裡只是建議將可以共享並能更好的使用的元件和類庫進行開源。這裡以Square為例,Square是一個快速發展且很有價值的公司,它已經向外界公佈了一個龐大的程式碼庫。可能在外人看來這會阻礙它在核心業務上的前進步伐,但是,它所公佈的特定程式碼是不可重複使用的。Square所釋出的程式碼對於很多人來說,它改善了Android和iOS軟體質量。作為回報,來自世界各地的開發者免費為Square的類庫貢獻改善措施。
結論
將自己的程式碼公之於眾聽起來很嚇人,實際上你獲得的好處比失去的東西要多的多。別人看了你的程式碼之後,你的程式碼一定會比被看之前好很多,你接受批評的能力也會有所改善,同時,別人也能從你的分享過程中獲得很多好處和啟發。
原文:IT World
相關文章
- 當我們擔心人工智慧時,我們擔心什麼?人工智慧
- 為什麼銀行機構不再擔心採用雲端計算?
- 如何不用那麼擔心成為一個壞程式設計師程式設計師
- 為什麼初創公司應該將程式碼開源
- 為什麼我認為就算人工智慧可以全面替代人類我們也無需擔心人工智慧
- 能否將TopThink每次的程式碼或功能更新公佈出來?
- Java 開發者的程式設計噩夢,為什麼你的程式碼總有 bug??Java程式設計
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 為什麼開發者首選 iOS ?iOS
- 為什麼你需要將程式碼遷移到ASP.NET Core 2.0?ASP.NET
- 駁“低程式碼開發取代程式設計師”論 為什麼專業開發者也需要低程式碼?程式設計師
- 為什麼要做程式碼審計?
- 什麼是程式設計?大道之行也,“程式設計”為公程式設計
- Stack Overflow:僅12%程式設計師擔心被AI取代 62%開發者在使用AI工具程式設計師AI
- 為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?程式設計師
- 3 * 0.1 == 0.3將會返回什麼?為什麼?
- 我為什麼選擇成為獨立開發者
- 智慧打底褲:再也不用擔心尺碼了
- 為什麼開發者應該摒棄敏捷?敏捷
- 為什麼糟糕的開發者更有成效
- 為什麼開發者總是選昏招
- 降本增效——券商們為什麼必須佈局小程式?
- 程式碼之間為什麼要加空格?
- 為什麼我要公開程式碼和想法
- 為什麼我要垂直對齊程式碼
- 你構建的程式碼為什麼這麼大
- 為什麼很多人工作都不開心?
- JavaScript黑客是這樣竊取比特幣的,Vue開發者不用擔心!JavaScript黑客比特幣Vue
- 庫克:我不擔心AI會思考,而是擔心人類失去自己的思想AI
- 為什麼我要豎向對齊程式程式碼
- 雲原生時代,為什麼基礎設施即程式碼(IaC)是開發者體驗的核心?
- 再也不用擔心網頁編碼的坑了!網頁
- Firefox2尚未公佈 開發者已為新版本運籌帷幄(轉)Firefox
- 為什麼開發者對PHP又愛又恨PHP
- 熊貓燒香案主犯編出防毒程式 警方將公佈下載防毒
- 為什麼你寫的程式碼糟透了?
- 為什麼程式碼評審(code reviews)很重要View
- 用程式碼解釋為什麼要用 '單例'單例