你們周圍有在 GitHub 、博客上很活躍,但工作收入並不是很好的碼農嗎?

我就見過這麼一些人,github上有不少項目,雖然規模都很小,主要是一些工具型的腳本之類,但看起來也是用了心的,技術博客也常更新,內容不錯,但好像工作要麼就是在一些二線城市非主流公司里做著傳統it行業,要麼就是在北京的小互聯網公司之間頻繁地更換工作,甚至一度失業(比如在博客上寫的「求機會,可隨時入職」等)。而一些在BAT等拿著高薪的互聯網技術大拿甚至沒有github帳號。
如果你們周圍也有,那麼怎麼解釋並接受這種現象?從所有人都是經濟逐利人的角度來看,維護博客和github項目費水費電,卻並不能從職業收入上得到相應的等價回報,還有意義嗎?


相信很多人的答案已經回答了題主的問題:
開源社區活躍,名氣大的人和實力不一定匹配,在社區上默默無聞的人,能力未必不強。

提兩個個人的觀點:

1.不要強行博客或者Github
沒含金量的博客不能給你的簡歷帶來任何加分,反而會使得你為了維護博客消耗大量的時間。收到的簡歷上如果有博客或者Github鏈接,我都會去看看,不幸的是偶爾會在上面發現一些很熟悉的代碼,呵呵,欺負我讀書少么?技術類的博客,如果寫錯了,可能對別人會造成很大的影響和麻煩,在下筆之前,希望一定慎重。

2.牛人大多在開源社區上都不活躍
寫博客或者Github的目的無非就是兩方面:興趣,名利。維護博客和Github需要大量的時間投入,牛人大部分在公司內部也是技術骨幹,把時間花在工作上帶來的回報遠遠大於在開源社區上消耗時間。即使發文章那很多也都是在內網,讓同事和Leader看到不是對自己升職加薪更有利?在社區上活躍的牛人,只是很少的一部分。

前兩天在培訓課上遇到了一位Android開發者K,K在開源社區較活躍,名氣很大,業務能力也非常強,在我司內部都是一流的Android開發者。當時問了他一個問題:對於你來說,名氣有沒有用?他沒有回答,但反問我:你看我們的Leader和專家有多少能在百度上搜到?這確實是個很有意思的問題,我們群里很多人在開源社區上都很活躍,技術也都不錯,但從來沒人把自己當大牛,因為深知和@Oasis Feng這類真正的大牛比還差的很遠,而Feng的知乎關注者卻比我都要少的多。
曾經有個國內挺出名的的開發者社區找到我,希望重點去推我,他們給我開了很多條件,但我想都沒想就拒絕了,因為自己的技術還遠達不到那種教導別人的程度。現在這個社會想出名不難,但如果能力和名聲不匹配,帶來的反而是負面影響。在開源社區上活躍我認為更多是給了一個彼此認識的機會,包括同行,獵頭,創業者等等很多有意思的人,跟他們之間的交流能給你帶來各方面的提高,也可能會帶給你各種各樣的機會,這和知乎的作用是類似的。但最終還是要看個人的能力,名聲和能力對等只是最理想的情況,如果你寫博客目的只是為了高薪,恐怕會讓你失望了。

最後非常感謝曾經帶我入門的張興業、農民伯伯等博主,前人栽樹後人乘涼,說的就是他們吧。


我在 GitHub 算是比較活躍吧, 還有一起維護 React 中文社區,幫助推廣幾個小眾的函數式編程語言社區,在 GitHub 和 Twitter 上追最新的技術以及做技術試驗,也在 SegmentFault 維護博客傳播和整理一下學到的新東西。

我想說的是活躍在社區跟工作能力強並不是對等的兩件事,活躍能拓展人脈, 有知識才能在社區交流, 這只是門檻的條件. 做兩件事情, 日常的工作還有最終的目標大部分是不同的.

參與社區需要對社區的進展保持關注,還要跟進一些不成熟的東西,傳播別人的聲音,以及有新想法跟一些動手能力。目標是促進新的技術在社區當中流通, 被更多需要的人看到, 這有點像是做廣告搞營銷. 同時自己也去參與到發掘新技術的圈子當中去, 探索新東西.

而工作當中更多是要對代碼的穩定性,團隊的任務推進, 技術選型的方向, 技術棧的長遠規劃, 在這些方面有經驗和能力。這些並不是在社區當中活躍就能學好的。而且公司對新技術的需求只是某些時間某些場景, 從社區當中獲取的技術知識在公司可能只能用很小一部分.

那麼,參與社區的意義在哪裡,
首先, 如果能緊跟社區,至少技術棧不會過時或者太差,技術交流和熟悉程度還是過關的。
其次, 編程領域的書籍和經典,不能覆蓋所有業務場景的細節, 參與社區會有不少收穫.
另外, 或者說有一些偏執,不想被前沿的技術拋棄, 不想錯過最新奇精妙的新發明。

---
手機寫的答案, 電腦上調整了下段落和結構.


把博客地址、github賬號貼出來,我去捐贈點兒水電費。
---------------------------------------
題主知道維基百科嗎?上一張圖:

維基百科的alexa排名在QQ、Twitter、淘寶之上,但是維基百科卻不賺一分錢。這是維基百科的捐贈說明:馬上捐款 - Donate

來自維基百科創辦者Jimmy Wales的個人呼籲

維基百科是全球第五大網站,每月為4.5億用戶提供服務,頁面瀏覽數以十億計。

商業本無過,廣告亦非惡。但它們不屬於這裡。不屬於維基百科。

維基百科與眾不同,它像一座圖書館或者一座公園,它像一座思想的殿堂,它是我們思考、學習並與人分享知識的地方。

在維基百科初創時,我完全可以讓它成為一家刊登廣告的營利性公司,但是我決定做與眾不同的事情。我們一直致力於保證其精簡和節流。我們完成我們的使命,避免鋪張浪費。

如果讀到這封信的人都願意捐出¥50,那麼我們籌款一天就可維持一年的開銷。但並不是每個人都有能力或者有意願捐款。這可以理解。好在每一年都會剛好有足夠多的人願意伸出援手。

今年,請您考慮捐獻¥50, ¥75, ¥100或任何您力所能及的金額,來保障和維持維基百科的運作。

感激不盡!

吉米·威爾士

維基百科創始人

---------------------------------
我感覺題主好像在說我啊:github上有不少項目,規模都很小,技術博客也常更新,在一些二線城市非主流公司里,……真是躺著也中槍啊。

而且,在 Github Rank (China) 和 GitHuber.info 排行榜的前20名裡面還能看到我。

自從我大學退學時,就有一個理想:30歲之前達到年薪30萬。現在也已經20大幾了,已經在奔三的路上。

一二年時,寫了一篇博文「代碼之謎(零)- 其實,你不懂代碼」,僅僅幾天訪問量就達到了十多萬。後來圖靈的陳老師找到我,讓我把代碼之謎系列整理出書。

期間也有不少北京的公司開價30萬、40萬挖我去,當然,我沒去。(我在天津)

我們都經歷過貧窮,都曾經和貧窮抗爭過,因此,眼裡不免會盯著財富。盯著自己的,盯著別人的。

其實,真正怕窮的,不是因為沒有錢,而是因為沒有賺錢的能力。

在初上大學時,我是如此的害怕貧窮,有時周末去打好幾份工。為了省幾十塊錢,曾經睡著公園的長椅上。平時不怎麼去上課,白天去圖書館看書,晚上給別人做網站賺外快。

大二大年,雖然我考了全班第一,但是由於偏科而沒有拿到獎學金。(學校規定,獎學金的條件是單科成績不能低於多少分)我馬列思想不及格。

但是我沒往心裡去,因為我學到的,比失去的要多的多。

後來在大學又待了一段時間後,退學了。

雖然往事不堪回首,但都已經過去。

當一個人正確的認識了自己,知道自己的能力,清楚自己能幹什麼,不能幹什麼,就不會在害怕,不會迷茫了。

記得在二零一一年,虧了十幾萬。當時絲毫沒有害怕,找了一些朋友借了錢,繼續重新來。

現在回答你最後一個問題:

從所有人都是經濟逐利人的角度來看,維護博客和github項目費水費電,卻並不能從職業收入上得到相應的等價回報,還有意義嗎?

我們真正追求的不是財富,而是創造財富的能力。這種財富屬於全世界,全人類。


我也算是博客和github比較活躍的人吧,工資也比不上一線互聯網公司,我來說說我的看法。

我認真寫博客和分享代碼的原因如下:

(1) 首先價值觀里有一種分享精神在,感覺好的東西和經驗不分享出來會覺得很可惜甚至很難受。再加上網上看到很多大牛分享得更加徹底更加無私,也被深深感動。

(2) 由於不是在加班瘋狂的一線互聯網公司,因此業餘時間比較多,這個時間與其打遊戲看肥皂劇,不如寫點東西出來,提高自己也留下一筆財富。

(3) 自我宣傳。BAT等大公司的人,不用任何博客github代碼別人都會默認認為很牛,而我們,公司本身不能作為我們的名片,那就只好通過努力,自己打造屬於自己的名片。有了這個名片,我能更加容易地結實業界大牛,也能更好地被別人認可,更好地找到下一份工作。

(4) 說和寫,是一種真正掌握一個知識點和技術的有效手段,實踐才會真正發現問題,因此很多時候博客和開源代碼是用來提高自己的手段,並不是為了追求收入。

所以我覺得,工資高不高與寫博客/維護開源項目,是兩碼事,沒有太多必然聯繫。


Github 和博客活躍並代表不了什麼。

Github和博客每天 Commit 學習心得,一年過後仍然停留在初級水平的人又不是沒見過。為啥?因為他連著一年讀了6套《21天精通XXX》,對!是6套,21天是騙人的!

Github和博客每天 Commit XX教程,獲得幾千個 Star,5年後仍然停留在中級水平的人也不是沒見過。整天寫基礎教程能有什麼提高呢?

Github 放個 Awesome list 也能獲得幾千個 Star 啊?但跟 repo 主有什麼關係呢?


長期刷github、寫博客,收入中等,比不上國內一線、二線互聯網公司。
Github地址: phodal (Fengda Huang) · GitHub,博客 狼和鳳凰 - 全棧工程師。

刷Github的目的:

  • 驅使自己養成天天寫代碼的習慣
  • 讓代碼變得更好,如CI、測試覆蓋率
  • 能實現自己的各種idea,並撰寫博客介紹
  • 在學習理論的基礎上能將一些理論用於實踐

博客最近刷得比較少,我寫博客的理由:

  • 經常搜索東西的時候會搜到別人的博客,所以也應該分享自己的心得,才不會愧疚
  • 看到每天有那麼多人訪問,自然會有成就感了(每天pv大概500左右)
  • 可以多練練SEO
  • 為以後做點鋪墊

說一下BAT的人到一定水平的人都很忙是不會有那麼多時間玩這個的,通常會關注項目上的事,大牛嘛,拿的工資高幹的活也應該多才是。而國外Github玩得比較好的,除了一些大公司的開源項目,剩下的都是小公司的。小公司需要有自己的競爭力,所以需要不斷重用現有的代碼。如Ruby on Rails、Django,以及現在的Ionic框架都是這樣產生的。

還有比較深層次的原因: 為了提高程序員影響力

之前寫過這樣的一篇文章叫《如何提高影響力》,我在裡面大概說到:

每個人都可以是一個品牌,對於一個程序員來說,我們的ID就是我們的品牌。而構成品牌的有多個要素:

  • 博客
  • Github
  • Weibo(or Twitter)
  • StackOverflow(or SegmentFault, Zhihu)

在某種時候,博客、Github都更像是個人的平台。如Weibo、知乎、SegmentFault、CSDN等等的開發者社區,也可以為自己的博客、Github帶來流量,而這一些都是互相促進的。如果我們在其中的一個網站上表現得很好的話,那麼在另外一個網站上我們也很容易聚集同樣的粉絲。


身邊忽悠帝居多T_T,而且越演越烈。

在github上有料但在二線公司工作的程序員總比在微博上轉新聞從來不寫代碼的一線公司工作的架構師某專家好的多吧,至少人家為社會做了創造性的貢獻而不是轉發新聞。


會有這樣的現象並不奇怪,商業精神和開源精神本身就有衝突。一些律師平常談話都是按小時收費,一旦有了這樣的經驗,就不太願意免費給別人諮詢了。

同樣,一些程序員技術很高,他們的選擇是把時間分配給工作,用時間換金錢,這並不奇怪。然而,有些程序員,他們對編程充滿熱愛,技術提高,被人認可,是他們很看重的。那麼,如果溫飽沒有問題,家庭沒有負擔的話,他們很可能不會太在意薪酬的事情。

能每天做自己愛做的事情才是最重要的,不過如果能做出一個漂亮的開源項目,我想最終他們想找工作時,找到一個不錯的工作還是不難的。(向Max Howell致敬)


假定題主不是 HR

科學的做法是,收集中國所有程序員的工資情況,然後統計 GitHub 指標達到一定標準的中國程序員的工資,分別算個平均,看哪個高。而不是印象流:

我就見過這麼一些人,github上有不少項目,雖然規模都很小,主要是一些工具型的腳本之類,但看起來也是用了心的,技術博客也常更新,內容不錯,但好像工作要麼就是在一些二線城市非主流公司里做著傳統it行業,要麼就是在北京的小互聯網公司之間頻繁地更換工作,甚至一度失業


有在github、博客上很活躍,但工作收入並不是很好的碼農嗎?

有的。

這個問題引申出一個有趣的話題:對於程序員來說,在 github 和博客活躍 VS 拿高薪,這兩件事有什麼樣的聯繫?

一個事實:在 github 和博客活躍的程序員,平均薪資更高一些

這個結論是根據我的公司的用戶數據得出的。

我們做程序員拍賣,優秀的程序員通過我們的審核,獲得拍賣跳槽的機會。Github 主頁是我們審核程序員的依據之一。

雖然看起來很像打廣告,但我發誓真的不是打廣告,只是交代我得出結論的背景。。。

我們怎麼判斷程序員是否優秀、是否在求職市場搶手:

1. 玩不玩 Github,不是審核通過的必要條件。我們有很多優秀的程序員用戶,是不玩 Github 也不寫博客,但不妨礙人家任職 BAT 一年賺幾十萬。

結論1:不玩 Github 不寫博客,照樣可以拿高薪。

結論2 :如果你是一個應屆生,那麼 Github 活躍和寫技術博客,會對你求職很有幫助。

我這裡有一個真實的榜樣案例可供參考:有一個非常優秀的女性工程師,還沒有畢業,來我們網站申請拍賣。

我至今對她印象很深,原因如下:

  1. 這是一位非常優秀的女性工程師,這在大多數從業者都是男性的編程屆,很容易給人留下深刻印象。
  2. 她在知乎 github 都有幾千關注者,github 顯示她有非常棒的個人項目
  3. 她當時還沒有畢業,來我們這兒申請拍賣。原則上我們是只通過兩年工作經驗以上、一線互聯網公司的程序員通過申請的,但依然通過她的申請,因為她確實很優秀
  4. 她做了一個網站,我是其忠實用戶,所以對她印象非常深刻

以上這個例子,是想說明:一個在求職市場上找工作的程序員,如果想受歡迎,必然要有一個「籌碼」讓招聘方留下深刻的第一印象。

比如上面這位未畢業的工程師,我第一眼注意到她的簡歷就是那十分具有含金量的 github 主頁。

對於已經工作的人來說,這個籌碼可以是「8 年開發經驗」、「 BAT 從業經歷」。

而對於應屆生來說:一個有含金量的 Github 主頁和技術博客,就是一個很好的籌碼。

結論 3:在 github 和博客活躍的程序員,平均薪資更高一些

我們曾經做過一個統計,我們平台上拿到 offer 的程序員,有 Github 或技術博客的程序員平均年薪是 22 萬,沒有的則平均年薪是 18 萬。兩者平均年薪相差 4 萬

上圖來自一份很有趣的數據報告,詳情見我的專欄文章:

數據說話:怎樣的程序員最搶手? - 程序員的自我修養 - 知乎專欄

當然,這個數據只區分了有沒有 github 和技術博客。

至於具體是否活躍和薪資:我剛剛抽取了幾十份數據手工計算,活躍的比不活躍的確實平均薪資要高一些,這也也符合我的經驗印象。

至於所有數據,計算起來是一項大工程,等我有時間會跑一下數據分析,再和大家分享。

但是!

在 github 活躍、寫技術博客的程序員平均工資高一點,這個結論是對的。

但這並不是因果關係。如果一個人說:我在 github 活躍、經常寫技術博客,所以我一定能拿高薪。——這樣的說法百分之百錯!

這就好比:社會富裕階層中,喜歡聽古典音樂的人更多一些。而我也喜歡古典音樂,唱片買了很多,音樂會的票根也攢了一盒子,但我依然是個窮人。因為聽古典音樂並不是導致富裕的原因。

說到這裡,我補充一個很有意思的案例

有個應屆生程序員,聽過互聯網公司在面試時會參考 github、技術博客,就去臨時刷了很好看的 github 主頁和博客主頁。

但後來這個應屆生根本就沒有通過簡歷篩選,你們猜原因是怎樣的?

github 主頁一片綠,都是刷提交刷出來的。

技術博客上都是抄襲的。博客上雖然表面顯示這些博文都是他在大學四年一篇篇發表的,其實不然,全都是臨時抱佛腳搬運的,只不過他通過技術手段偽造了每篇博客文章的發布時間

HR 看到這份簡歷存疑,發給技術 leader 看,技術 leader 經驗豐富,很快便瞧出端倪。

事情的結果就是:這家公司此後再也不會錄用這個人,因為公司不錄用不誠信的人

------------------

結論四:在 github 活躍、寫技術博客,也是有好處的:了解新技術趨勢、擴大自己的社交影響力

擴大社交影響力,對自己求職跳槽是很有幫助的。

補充案例,這樣的案例我聽過不止一個——程序員通過在 github 上和技術博客上認識的朋友內推,跳槽去了更好的公司。

------------------------------------------

觀點五: 矽谷的優秀程序員更喜歡在 github 活躍、熱衷於維護技術博客,我國 90 後程序員群體在向這個趨勢靠攏

國內很多程序員大牛是不玩 github 也不寫技術博客,可能是因為工作忙沒時間,可能是沒有興趣。

但從矽谷的情況看,多數優秀程序員都喜歡在 github 活躍、熱衷於維護技術博客。我國 90 後程序員群體,在向這個趨勢靠攏。

最後推薦我另一個回答:如何成為在矽谷受歡迎的程序員? - luckystar 的回答

下面這個回答中的工程師 Feross Aboukhadijeh,就是一個在矽谷受歡迎的工程師的代筆,文章第三部分記錄了他活躍於 github 的事迹,第四部分則翻譯了他學習編程的經驗,原文便來自他常常更新的博客。

在工作中,我常常和矽谷地區的工程師交流,時常討論這樣一個話題:什麼樣的工程師,在矽谷是極受歡迎的?

90 後矽谷工程師 Feross Aboukhadijeh 是一個極好的學習榜樣。他並非扎克伯克那樣的矽谷明星,但作為普通矽谷工程師的一員,他的事例對於大多數程序員來說,都是「踮起腳能觸及」的學習榜樣。他的經歷不僅僅對嚮往矽谷的工程師有幫助,對所有在北上廣深杭工作的程序員,都有極好的啟發。

下面分成四個部分來闡述,第四部分是 Feross 分享他如何學習編程的經歷。

一、建立自己的個人品牌

在水平相同的情況下,擁有更高社交影響力的程序員,在職場中佔有更大的優勢和更多的機會:想換工作時擁有更多的選擇,與同行中的佼佼者學習交流的機會,還總有人邀請你加入他的創業團隊當 CTO —— 不一定要做出改變的決定,但有更多的機會和見識總是好的。

和 Fenng 編程能力相當的工程師,很難有和他一樣的影響力,這是建立個人品牌的魅力。你不必擔心說:我沒有 Fenng 那麼好的文筆,也錯過微信公眾平台的發展紅利期。條條大路通羅馬,只要願意在網路上分享,你就離成為下一個 Fenng 近了一步。

一些方法可以幫你事半功倍,比如建立你在網上的個人主頁。它可以是獨立博客的 about 頁面,也可以是你的 about.me | your personal homepage 賬戶。然後在你的微博、知乎、微信、github、V2EX、技術社區的主頁上放上它的鏈接。就像涓涓細流匯成大河一樣。

讓我們看看 90 後矽谷工程師 Feross 的做法。他在 Github 上擁有 2300 名關注者,8390 名推特粉絲,在問答社區 Quora 有 12500 名關注者。他在這些網站主頁上都附上了個人主頁:feross.org.

從 Github、Twitter、Quora 吸引來的網路訪客,在這裡開始了解他:畢業於斯坦福,在 Facebook、Intel、Quora 工作過,還有他的項目經歷、他的愛好等信息。

二、什麼樣的簡歷是「完美矽谷求職簡歷」

個人品牌影響力 = 能力水平 × 傳播度

經驗豐富、能力突出的工程師,如果不善於在網路上分享,「酒香也怕巷子深」。前一部分便敘述了對此的解決方法。但自身能力才是根本,如果技能不夠,再傳播無濟於事。

簡歷是求職的第一步。作為一個程序員拍賣平台的運營,我閱讀過數以萬計的簡歷,但 Feross 的簡歷是我見過的最完美之一。在這裡貼上一部分:

這份簡歷有兩點非常出色:

1. 完美的版式

HR 每天要看不計其數的簡歷,眼花繚亂的狀態下能看到這樣美觀清晰的簡歷,簡直是一種視覺享受。

一份能被 HR 和技術負責人看懂的簡歷,才是真的好簡歷。這種看懂包含兩方面:一是簡歷結構清晰、信息充足但不冗雜,二是要讓不懂技術的 HR 也能從簡歷中清楚地讀懂你的經歷和項目經驗。在這兩方面,Feross 的簡歷都堪稱完美。

特別要強調後一點。在互聯網公司里,HR 要對技術有一點了解是必須的。但無奈有的程序員簡歷寫得深澀難懂,甚至不是同方向的其他技術人員都看不懂,更遑論 HR 了。「HR 水平不夠看不懂簡歷,不是我的責任。」永遠不要有這樣的想法。

2. 從這份簡歷透露出的經歷

斯坦福畢業的教育背景、知名矽谷公司的工作/實習經歷、創辦過公司並被雅虎收購、豐富的項目經驗、有影響力的事迹,還有 Organizations、Hackathon Wins、Awards 等加分大殺器。這樣的簡歷就是「完美矽谷求職簡歷」。

比如 Projects 中的 Youtube Instant,我們從鏈接中得知 Feross 的光輝事迹:

Feross 在斯坦福上大三的時候,Google 推出了一項新功能 Google Instant,可以實時顯示搜索結果。Feross 覺得也可以為 YouTube 開發一個服務,讓 YouTube 實時顯示視頻。於是他用 3 個小時完成了 Youtube Instant 網站。
有一百萬人在 10 天內訪問了這個網站。Feross 因此收到了來自 Youtube CEO 的 offer,還有 Engadget、TechCrunch、NY Times 等一票知名媒體報道了這事。

三、善用 Github

Github 對於程序員來說,是一種生活方式。越來越多的公司在招聘時,技術負責人會關注求職者的 github。我所在的公司 100offer,也鼓勵用戶在填寫簡歷時附上自己的 github 主頁。

這是 Feross 的 github:

當然,為了表面好看去刷提交次數或者 star,是沒有意義的。善用 github,對求職、精進自己的代碼水平、擴大在同行中的影響力,都有非常好的正面作用。

四、Feross Aboukhadijeh 是如何學習編程的

Feross Aboukhadijeh 在自己的博客上記錄了自己學習編程的經歷(此鏈接為原帖地址), 同時發表在 Quora 上獲得了四位數的贊同。現在全文翻譯如下:

我是怎麼學習編程的——別人常常問我這個問題,特別是在我建立了 Youtube Instant 網站並被很多媒體報道之後。在這裡我決定分享我的經歷。

一句以概之:我學習編程的方法,就是大量創建網站。

我在很小的年紀就開始學習編程,學習的方法就是創建大量的網站。下面我將介紹幾個自己創建的網站,其中最早的一個,是我在 11 歲的時候開發的。我希望讀者能從我的敘述中了解到:如果你想學好編程,做大量的練習性項目是非常重要的。

學習一種技術最好的方法就是練習、練習、練習。我知道的所有優秀的程序員都非常享受編程——編程是一件讓他們樂在其中的事情,所以他們大量編程甚至常常到達廢寢忘食的程度。學會如何編程——還有如何做好這件事——並不需要有超出常人的能力。只要你願意動手開始做就行。

下面就是我如何學習編程的故事:

一、我的第一個網站

在我十一二歲的時候,我決定給自己做一個網站。我記不清那時為什麼想到要做一個網站,只記得這樣我便開始做了。於是,我開始在網路上搜索關於網頁、瀏覽器、HTML 工作原理的知識。雖然在這過程中,我發現網上很多信息已經過時了,甚至是明顯的錯誤(例如為 IE 和 Netscape 瀏覽器分別建立網站),但這個過程讓我覺得非常有趣,學到了很多新知識。


儘管在網路上得到的信息質量層差不齊,我最終還是完成了一個簡單的網站,我稱之為「Feross的網站」。我用 Frontpage 開發了它,那是一個很棒的所見即所得的HTML 編輯器。我用很常見的語法,比如粗體和斜體對網站做修改,在編輯器里即時查看這些 HTML 標記的效果。這是個非常有效的學習方法。


這是我的第一個網站的截屏,現在它已經不存在了。

這個截圖不能完全反映網站的狀況:事實上,網站上的每個元素都在動,有閃爍的動畫,還有聲音。我在網站的每個網頁上都放了不同的 MIDI 格式的歌曲,並且全是自動播放,無法把它們停下來,除非把電腦設成靜音。哈,在當時這是很流行的網頁設計風格。


過了幾年後,我重新設計了這個網站,使它變得更美觀。我在網上找了一些免費的網站模板並使用它們,還用微軟的畫圖工具修改圖片。

雖然我在建立網站的過程中大量依賴現成的模板,但這仍然不失為一個學習 HTML 和Web 瀏覽器的好方法。「Feross的網站」除了用來收集我小時候的一些視頻外,沒有其它用處,所以不久後我便對它失去了興趣。

我第一個真正的項目


在我 9年級,也就是我 14 歲的時候,我和朋友們都沉迷於在 Newgrounds 和 eBaumsWorld 等網站上觀看 flash 視頻和動畫(這是2005年之前,那時 YouTube 還沒有出現)。我每天花大量的時間泡在這些網站上,所以我熟知所有最棒的視頻和遊戲。

我產生了一個想法:如果我做一個網站,收集所有我喜歡的 flash 動畫、視頻、遊戲,那真是一件非常酷的事情。於是我便做了 FreeTheFlash 網站,它是這樣的:

感謝我在開發「Feross的網站」過程中學到的 HTML 知識,同時我還使用了Macromedia 公司——也就是現在的 Adobe——製作的 Dreamweaver 編輯器,通過這個軟體,我可以在網站重複的頁面上使用同一套模板。

過了一段時間,我想到可以讓網站動起來我聽說可以用一種叫做 PHP 的編程語言來做(動態的)網站,而不是只用靜態的 HTML。於是,我花了 20 美元在 Amazon 上買了一本書,叫做《PHP and MySQL for Dynamic Web Site》。我通過學習,使用 PHP 和 MySQL 重新設計了網站,同時還對它進行了新的美化:

在我讀高中的時候,我對 FreeTheFlash 網站的開發持續了2年。這是我第一次嘗試做一個「真正的」網站。對於一個初手來時,這個網站是成功的——在 2006 年,它獲得了 60 萬人次的訪問,以及 300 萬的頁面瀏覽量。FreeTheFlash 讓我感受到,做出一個成功的產品並看大量的人使用它,是一件多麼自豪的事情。從此,我決定做出更大更好的網站。

我的第二個網站


在中學時期,我在計算機課上做了很多筆記。在我 11 年級的時候,我決定把這些筆記放到網上,讓那些不喜歡看課本的學生使用。我做了一個叫做 StudyNotes 的網站。在開發過程中,我使用了 PHP 和一種叫做 Joomla 的內容管理系統。我也嘗試使用 Drupal,但最後發現它太複雜了。

還是這一年,我為我的學校的 Key 俱樂部建立了一個網站。


在這段時間裡,我花了很多時間泡在 WebmasterWorld 論壇里,這裡有很多網站站長和 SEO專家,他們推測 Google 的演算法,討論 AdSense 技巧,調試網站問題等。

大量的學習和閱讀


在我進入斯坦福大學後,我學習了大量的計算機課程,諸如 CS106X 和 CS107,我還提前學習了一些 CS106 課程。


我把所有的課餘時間都花在閱讀設計、編程、瀏覽器和 JavaScript 等領域的資料,平均每天 4-5 個小時。


我在讀些什麼?五花八門,什麼都有。其中有大部分,是我敬仰的設計師和程序員寫的博客。

一件意義重大的事


那是 2010 年的夏天,我在 Facebook 實習的時候,因為和一個朋友打賭,我開發了 YouTube Instant 網站,它可以讓人們實時搜索 YouTube 上的視頻。這個網站在建成後的 10 天里獲得了一百萬用戶的訪問量,甚至連 YouTube 的 CEO 都表示願意給我一個 offer。你可以點擊 這個鏈接 閱讀媒體們對這件事的報道。


我很清楚地明白,YouTube Instant 的成功歸功於好時機和幸運。

繼續前進

我發現有很多人使用 YouTube Instant 來聽音樂視頻,這讓我想到了另一種使用YouTube API 的好方法。浴室我和朋友 Jake Becker 在 2011 年的前 3 個月里開發了 Instant.fm,它能讓人們輕鬆地向朋友分享音樂播放列表。通過這個項目,我們學到了很多新東西。

在這個項目里,我學到的技術:

  • jQuery
  • CSS (以及 Modernizr 和 YepNope,幫助人們解決跨瀏覽器問題)
  • Python
  • Tornado
  • Git GitHub
  • Last.fm API
  • YouTube API
  • 團隊合作

還有其它一些我們學到的東西:

  • Nginx
  • Supervisor
  • SQLAlchemy
  • Apache Ant

動手去做

我詳細敘述了我從 11 歲開始做的東西,就是希望能告訴你:如果你想學習編程,你需要動手開始做!現在就去做,不要找任何借口。


動手做是最好的學習方法。


把編程語言書從頭讀到尾是一件很枯燥的事,常常讀到一半你就堅持不下去了。但如果你打算做一個項目,你會在做的過程中明白自己應該學習哪些知識,這是學習知識更有效的途徑。

計算機課程


大學裡的計算機課程,是另一種十分有效的學習編程的方法。那些好的計算機課程,都十分強調學習計算機科學領域裡的重要概念,而不是局限於教會某個特定的語言。這可以幫助那些沒有接受過正規教育的人在自學時開闊眼界。


我還清晰地記得,在斯坦福大學裡我上的第一堂計算機課(那是一堂關於 C++ 的課程)。當時我還在想「變數前怎麼可能不帶 $ 符號呢?」——因為那時我只使用過PHP :-) 我用了很長一段時間,才改掉在變數前加 $ 的習慣。

在 IT 公司工作

另外一個提高編程水平的方法,就是去 IT 公司實習,比如 Facebook 或者 Quora。最近的兩個夏天裡,我就是在這兩個公司里工作。你可以從優秀的同事那裡學會如何更好得編程,如何閱讀和理解他人的代碼,如何在大項目中進行團隊合作。

還是那句話——比什麼方法都管用——學習編程最好的方法就是做項目練習。我是不是已經重複這句話無數次了 :-)

如何學會編程:

  • 做 side projects
  • 看編程書
  • 做 side projects
  • 上計算機課
  • 做 side projects
  • 讀編程類博客
  • 做 side projects

這就是我能給出的最棒的建議。


Happy hacking!


---------------------------------------------


如果想去矽谷工作,我的其他兩個回答應該有幫助,可以看看:


中國程序員怎麼去 Facebook 工作? - luckystar 的回答


IT 民工去美國通過 H1B 移民到底靠不靠譜? - luckystar 的回答


寫個人項目本身就是自娛自樂,把它當做賺取名利或者變現的工具實在是本末倒置了。

我寫一個東西,做一個項目,一般來說因為「我認為這個東西有必要存在」,或者「我認為這個東西應當寫成這樣」。一言以蔽之,就是「源於信仰」。如果我作為開源項目寫一個東西,目的必然要大於錢這件小事。

上次看到一個sb(名字不提了),說實習期間做項目的方向必須是就業的方向,否則就業會出問題。我想問您家境有多貧苦,非得把什麼東西都扯到錢上面。我這邊分到圖形學方向的同學,畢業之後搞web的,搞底層的,一抓一大把。

還是那句話,生活是生活,工作是工作。


有,@王貓貓 無業求包養中…


我周圍有很多沒有github,沒有博客,工資也不高的人。

他們技術可能並不差,在他們熟悉的領域遊刃有餘,但是僅限於此!
他們不關心新技術,新產品,不參加社區,不去寫開源項目。
他們只有輸入,沒有輸出。
他們是Eclipse的忠實粉絲,哪怕Android Studio已經更新到1.3了……
他們只使用最基本的bash,連alias都不會設置,更別說zsh,命令永遠是自己敲,一行一行的,ctrl+r都不知道…

這樣的人,我看著很捉急的……


——————————
update

關於寫博客,我是持支持的態度的.
技術分低中高,不同的級別幫助不同的人,哪怕你的文章中幫助了一個人,那也比爛在肚子里好很多!
所以我是主張寫東西的,一方面寫東西可以讓你的知識體系更加完善,考慮的問題也更廣;一方面是可以幫助他人;再一方面就是可以討論,發現自己的不足,知識經過討論,你的理解和記憶就越深……


維護博客和github項目費水費電,但是沒有應有的回報。 題主你問得太功利了, 就個人而言,在github收到一個issue(無論是建議還是bug) 或是一個 pull request能讓我興奮起來,我修業務代碼的bug根本不會有這種激情。我相信並不是我預感了這個PR或者是issue能讓我發達或是得利吧。 這種心理有點類似朋友圈炫富、炫旅遊的人的那種心理,然而顯然沒什麼意義。

公司里一般更在乎業務優秀者(和你呆在公司的時間肯定有關係的), 如果一個人在github上可以順利維護類似react、angular、nativescript這種涉及上下游領域非常廣的項目,或者像coolwanglu/pdf2htmlEX · GitHub 這種專業度較高的項目, 他的業務能力或問題解決能力肯定不會弱。 否則你都說了都是一些小工具、資源收集、小組件之類的,這些可能會給維護者本人帶來一些名(肯定會有利,這種軟實力很難在早期看到成效), 但是無法讓公司看到 無法取代 的 個人價值, 也無法讓大公司的其它員工信服。

另外: 我旁邊的組就有沒有github賬號(或籍籍無名), 但是技術能力炸天的同事, 所以不要以有沒有github和博客來斷定一個人技術水平。並且這些員工在內部的技術影響力和培訓分享 方面的貢獻也是很高的, 所以公司給與優厚的回報也無可厚非。


題主是在說我嘍


除非是準備專門做營銷號,否則「維護博客和github項目」是娛樂,不是工作。我們在工作上逐利,然後用得到的利益來支撐自己做一些有樂趣的事,比如養貓,遊戲,或者不用管天殺的產品經理提啥需求,一心研究一下自己感興趣的腳本寫法。至於工作,當然能找到合適的更好,一時半會兒沒找到,也不應該因為這個,就開始把寫博客變成賣博客吧……


這些人寫的東西每天都被菜鳥,還沒入門的人參考呢。


我呀我呀(雖然我現在還是學生。
GitHub:mthli (李明亮) · GitHub

電腦是華碩K46,電腦配置可參考:【華碩K46EI3317CM-SL】報價
13年初花4900買的,到現在兩年多了,沒有升級過任何配置。
我目前是搞Android的,Chrome和IntelliJ IDEA只能開一個,同時開卡的要死。
手頭有兩台手機,Nexus 4前幾天正面扛地上屏幕碎掉鳥。
現在只能用Galaxy Nexus。兩台手機入手總共花費1600塊錢。
至今為止開發的軟體只收到過兩個人共21塊錢的捐贈,相當於我一天的伙食費。

我真是窮死了。相信有很多同學也和我差不多吧。
可能有的人會問我為啥不去接點活賺錢呢?
因為我自己想做的東西實在太多了,即使那些都是不賺錢的玩意兒。
當然我也知道錢是很好的東西啊,沒有錢的限制也是很大的。
我相信總有一天我會變得很有錢的。


一類人
時間成本太高(收入高但是生活成本也高,需要大量時間投入在當下)
活著太累
以至於忙著賺錢維持生活(生存)沒有時間刷github

另一類人
太有錢且太有時間
忙著享受生活
以至於沒有興趣刷github

只有處於兩種人的中間狀態才會去刷github吧。
二線城市,平淡工作,生活壓力不大,收入不多。題主你想想是不是挺符合你的描述的。


感覺是在說我呀。。。

就是因為收入不高,所以在網上找點虛擬的成就感。

我要是有錢,周末肯定唱歌擼串把妹看電影了。

怎麼會無聊到周末窩在家,上知乎刷存在感。。。

痛哭。


推薦閱讀:

中國程序員怎麼去 Facebook 工作?
BAT 穩定工作和創業之間如何抉擇?
培訓出來的程序員一無是處嗎?
熬夜加班對身體的損害可以通過跑步等運動彌補嗎?

TAG:博客 | 程序員 | GitHub | BAT百度、阿里巴巴、騰訊 | 碼農轉型 |