close
Inside 硬塞的網路趨勢觀察

“談開源精神:給一個舞台,我們一起改變社會” 與新的 1 篇文章 - Inside 網路趨勢行銷與開發

Link to Inside 硬塞的網路趨勢觀察

談開源精神:給一個舞台,我們一起改變社會

Posted: 21 Jul 2014 04:03 AM PDT

談開源精神:給一個舞台,我們一起改變社會

資料來源:COSCUP ‘ 14 新聞稿

COSCUP ‘14 開源人年會 2014 於上週末在中研院舉辦,會中除了介紹當前一些開源的技術以外,也討論了開源開放的精神。

對於非技術出身的讀者來說,第一次聽到開源這個名詞或許會覺得非常陌生,或者產生一種想法: 噢!開源就是它它在玩的東西啊!就大家寫寫程式碼自 High 一下,正常人不必知道啦!

「開源」是一種精神

的確,開源在一開始是為了對抗大公司的技術專利所產生。但開源是一種精神並不是軟體,利用開放的精神,將其所擁有的技術開放給其他人使用而不收取權利金,而演進成為一種合作開發的模式,在電腦科學的領域被廣泛運用。也因此,平常我們所認知的開源產品,大多是屬於技術性的。但隨著開源精神的推廣,慢慢的也出現非技術導向的產品像是:

  1. Wikipedia:Wikipedia是現代人獲取知識相當重要的來源之一,相信在這一點上可以不用多解釋。
  2. g0v:如果對於 g0v 覺得陌生,您或許對 「 Democracy at 4 am 」這個在太陽花學運期間,以全英文向國外播放台灣究竟發生了什麼事情的網站有所了解。g0v 在 4am.tw 的成立上也占有一席之地。其內部的專案也是以開源的精神來執行,其中包含共筆,以及程式的部分。

其它開源的例子包含了最近特斯拉開放專利,以及中國開發者 9 天完成 Swift 翻譯中文版都是大家較為熟悉的例子。

開源的特性,可以以「星星之火,可以燎原」一句話來比喻。一個好的點子,一個好的平台,我們就可以發揮與貢獻自己的力量為社會作出貢獻。因為其公開的特性,以及迅速聚集群眾的力量,開源的精神往往可以在很短的時間內做到一個人所做不到的事情。

開源的方式

說了這麼多開源精神的好處,如果我有一個想法,那該怎麼利用開源的方式將其實現?有什麼是該注意的地方?在 COSCUP ‘14 的會中有些演講提及了這些概念如下:

  1. 明確的目標
  2. 明確的定義任務
  3. 明確的定義規則

上述三點其實非常的直覺。首先要聚集眾人的力量,得有個明確的主題。以維基百科而言,他的主題就是:

The free encyclopedia that anyone can edit. ( 所有人都可以編輯的免費百科全書 )

假設有了主題之後,如果沒有明確的任務規劃那怎麼知道我們需要哪些方面的人才?又或者聚集了一堆人卻沒有人知道自己該做些什麼。因此我們需要明確的定義任務。

再來,人多了,意見也多了。如果沒有規則,整個產品就會因為缺乏中心思想或格式而雜亂無章。舉例而言,假設我們在編輯維基百科時,有一位作者堅持全部要使用粗體,若沒有相關規定來規範的話這不是會讓整個作品看起來很奇怪嗎?又或者說,假設我要利用開源的精神一起寫一份關於如何學習程式語言的心得,但是中間有作者決定要加一段台灣與中國之間的統獨議題,這跟我的題目有什麼關係?因此,在進行開源的計劃的時候,必須要能夠制定規則與管理。

如何開源?

那究竟該用什麼平台來進行開源的計劃?在這裡筆者介紹一個開源平台,你也可以使用它來建立屬於自己的開源計劃,像是開發程式碼或者平台寫作等。這個平台稱為 GitHub 是一個分散式的版本管理系統,它的好處在於很好的版本控制,以及分支系統。它可以建立不同的分支,分別代表不同的主題,而參與者可以在分支上工作之後經過管理員的認可就可以把他開發的部分匯流回主幹。而且如果有什麼地方出了錯,它可以回到先前的版本。除此之外,還可以建立『 Issue 』,有人提出了哪裡有問題,可以設立 『 Issue 』,開放計劃參與者解決。關於使用說明的部分,大家可以參考這裡

至於使用它的方式我們可以參考一個簡單的例子:中國開發者翻譯 Swift 語言中文版

參與翻譯的網友首先需要在 GitHub 專案上認領章節,認領成功便可開始翻譯。在某章翻譯完成後,管理者將翻譯完成的內容合併起來,通過 Gitbook 轉換成在線頁面並更新到 GitHub。

開源即免費?

的確,以一個使用者的角度而言,開源對我們是非常的方便。因為我們可以免費的使用開源的計劃中所開放部分的成果。但對於其他想要建立一個開源計劃的人,往往會因為認為其無法收取權利金而認定開源計劃是一個無法從事商業行為的活動。關於這點其實並不完全正確。

我們以開放源碼軟體( Open Source Software )來舉例。其實你或許不知道,開放源碼軟體定義的起源其實是希望這類軟體可以順利商業化。若軟體經過了開放源碼促進會的審核通過後,便可以標明這個服務標章,消費者反而會因為開放源碼軟體的特性而提高購買的興趣。1

國外的大公司如 Google、Red Hat 與 Rackspace 都有以開放源碼軟體成功獲利的商業模式的例子。以 Rackspace 舉例,其所提供的雲端運算服務,就是以開放源碼軟體 OpenStack 為基礎,但以服務為其盈利模式。

除此之外,開放源碼軟體還有其他的盈利應用模式,註如:嵌入式硬體販售模式以及雙重授權模式2

結語

其實對於個體創作者而言,開源的平台 GitHub 會記載著每一個參與者的貢獻度。你所作過的努力並不會白費。以軟體工程師為例,其實在找工作的時候,參加過開發開放源碼軟體的經驗,絕對是讓你大大加分!

從菜鳥到搖滾巨星,工程師職業生涯的 11 個階段

Posted: 21 Jul 2014 03:04 AM PDT

從菜鳥到搖滾巨星,工程師職業生涯的 11 個階段

本文轉自合作媒體伯樂在線 -- LieGroup。原文作者 Jeffery Way The 11 Phases of a Web Developer's Career (As Illustrated by Memes

程式設計師的職業生涯是一段充滿起伏的有趣經歷。考慮到其陡峭的學習曲線,完全可以預見你將經歷挫折、啟蒙、驕傲自大這幾個時期,以及穿插其間的各種心路歷程。在這篇文章中讓我們輕鬆一下,看看一系列搞笑 gif 圖來回顧其中的每一個階段。

階段 1-菜鳥

初入職場的日子,我們都充滿熱情。在此期間,你毫無頭緒,根本不知道該做什麼。就像魚兒離開了水,每一行程式對你來說都是個謎。Doctype?哈?見鬼,這個

到底是做什麼用的?第一個階段令人生畏、讓人提心吊膽,卻又刺激人心。到底有多少種該死的語言要學啊?

不過,你最大的優勢或許就是你不知道水有多深(譯者註:原文 ""you have no idea how deep the rabbit hole goes",典故出自《愛麗絲夢遊仙境》中 ​​愛麗絲掉進了一個深不見底的兔子洞)。學習 HTML 只是向前邁出的一小步。

階段 2-起步

雖然花了些功夫,你最終還是學到了足夠的知識,邁出了你進入程式世界的第一步。儘管第一階段完全是「我該怎樣 / 該從哪裡開始?」的懵懂狀態,到了第二階段你已開始慢慢地建立自己的技能體系。當然,CSS 定義樣式的語法對你來說依然陌生,但至少你能夠在剛買的程式編輯器中改動一下程式,並在瀏覽器中看看改動的效果。那真是一種美妙的感覺!

階段 3-極度沮喪

想像一下你在洞穴裡迷路,打著手電照亮每一個隧道以尋找出路。每走一步,你都希望看到一絲光亮。不幸的是,我們這一行的學習曲線非常陡峭。我只能很抱歉地說,那一絲光亮不會持續很長時間。你必須做好在這個階段花費數百小時的準備。當你絕望地試圖搞清楚那些讓你抓狂的東西是什麼意思的時候,你需要不斷,不斷,不斷地閱讀技術書籍。

如果你覺得太過沮喪而難以承受,請平復一下心情,想想我們每一個人都曾在職業生涯的這個階段或那個階段有過和你一樣的感受。你不是一個人在戰鬥。堅持下去,不久之後你就將到達「頓悟」階段。

階段 4-頓悟時刻

「頓悟」那一刻是世界上最棒的感覺之一:一瞬間,突然,你「搞定了」「哦哦哦,現在我終於明白了」。拿我自己來說,我發現程式中的重大突破通常出現在夜裡,此時其他人正在睡夢之中。當我讀了八遍程式之後,原本捉摸不透的地方,現在至少有點兒清楚了。

這個階段,你學的所有技術和語言都開始派上用場了。

階段 5-脆弱的程式

如同之前的階段,「脆弱」階段也相當漫長。在這一階段,你成功地構建了應用程序並實現了預想的結果,但是底層程式無法應對客戶需求的突然改變。此時,你編寫的方法長達幾十行,而測試的觀念尚未在你腦海中形成。

但至少你在做一些實際的東西了。就目前來說,請將你在 GitHub 上的 pull 請求侷限於書寫檔案和改正拼寫錯誤。不要低估了這些工作能給他人帶來的幫助。

階段 6-模仿

模仿階段很重要。模仿你心目中的大神編寫的程式——甚至是一行行地複製他們的程式,除此之外沒有什麼更好的辦法來學習恰當的程式技巧了。別灰心,每種帶有藝術性的職業生涯都少不了模仿階段。幸運的是,GitHub 讓這種無聲的崇拜比以往更容易了。當然,複製程式只能幫到你這麼多,但它開了個好頭。模仿那些能夠啟發你的人,最終,你將開始形成自己的風格。

階段 7-自以為是

此時,你終於開始陷入這樣一種境地:你當然還有巨大的改進空間,但自信心也在快速膨脹-或許太快了!人們常說,在頭幾年裡,你還不足以認清自己有多無知!

在這個階段,避免衝動讓自己變得太驕傲自大。驕傲自大對任何人都沒好處,只會讓未來更出色的你在回顧過去時連連搖頭。當你想要在 GitHub、Reddit 或者 StackOverflow 中留下嘲諷性的評論「大哥,學學怎麼寫程式吧」的時候,千萬別這麼做。不久以前你自己也曾是個十足的菜鳥。請傳遞正能量,而不是打擊別人。我們在同一條戰線上,只是處於不同的階段。

階段 8-學習 Vim

如果你曾觀察過與你共事的開發者,驚訝於他在程式編輯器中操作的速度,那麼他有可能是在用 Vim。儘管 Vim 的學習曲線十分陡峭,但一旦你精通了它,你的工作流程在旁觀者看來也將如魔術一般神奇。

這是你開始掌控你的程式技術和工作流程的階段,合適的工具跟技術一樣重要。

階段 9-當程式成為藝術

儘管要花上數千小時,但終有一天,你看著自己的程式,閱讀起來就像操作命令行那樣輕鬆,你會意識到它簡直就跟藝術品一樣。你的程式有版本控制、良好的抽象、完美的可測試性、可伸縮性,而且易於閱讀。在你職業生涯的某個階段,你可能曾陶醉於自己能夠寫出神秘、令人困惑但能正常運行的程式。但是,利用程式語言中每一個可能的技巧和隱藏特性,或者只是為了炫耀自己的聰明才智而把複雜的邏輯簡化為一行程式,這些都不是成熟開發者的標誌。相反,它展現的是一個自以為是的開發者,完全不為將來的程式維護者著想。

當程式的可讀性和它實現的功能對你來說同樣重要時,程式就變成了藝術。到了這個階段,你就是在為人類而不是為機器編寫程式。

階段 10—經驗豐富

當程式成為一種本能,你就到達了職業生涯的下一個階段。此時你不再思考語言和框架層面的東西,而僅僅是發現問題並從你的開發工具箱中選擇正確的工具來提供解決方案。一個經驗豐富的開發者懂得西部牛仔式的單槍匹馬蠻幹為何很少是正確的道路。與項目組所有成員討論每一個新特性、準備白板、編寫故事(譯者註: story)、生成測試,這些都是在開始寫第一行實際程式前完成的工作。

至此,你已成為一個成熟、思慮周全、其他人都願意與你共事的開發者。恭喜!

階段 11——搖滾巨星

很少有人能達到這個階段。搖滾巨星階段是職業生涯的巔峰。除了日常工作,你經常在研討會上發言,成為無數開源專案背後的領軍人物;你要抽時間通過郵件列表參與到 web 的未來發展並為之貢獻力量,同時還要在 IRC 上幫助新人。你是那種以編寫編譯器和解析器為樂的人。

別人稱呼你為搖滾巨星或是忍者,但你厭惡這類標籤。你比其他任何人都清楚——學無止境!

arrow
arrow
    全站熱搜

    投機客的行銷世界 發表在 痞客邦 留言(0) 人氣()