有在github、博客上很活跃,但工作收入并不是很好的码农吗?
有的。
这个问题引申出一个有趣的话题:对于程序员来说,在 github 和博客活跃 VS 拿高薪,这两件事有什么样的联系?
一个事实:在 github 和博客活跃的程序员,平均薪资更高一些
这个结论是根据我的公司的用户数据得出的。
我们做程序员拍卖,优秀的程序员通过我们的审核,获得拍卖跳槽的机会。Github 主页是我们审核程序员的依据之一。
(虽然看起来很像打广告,但我发誓真的不是打广告,只是交代我得出结论的背景。。。)
我们怎么判断程序员是否优秀、是否在求职市场抢手:
1. 玩不玩 Github,不是审核通过的必要条件。我们有很多优秀的程序员用户,是不玩 Github 也不写博客,但不妨碍人家任职 BAT 一年赚几十万。
结论1:不玩 Github 不写博客,照样可以拿高薪。
结论2 :如果你是一个应届生,那么 Github 活跃和写技术博客,会对你求职很有帮助。
我这里有一个真实的榜样案例可供参考:有一个非常优秀的女性工程师,还没有毕业,来我们网站申请拍卖。
我至今对她印象很深,原因如下:
以上这个例子,是想说明:一个在求职市场上找工作的程序员,如果想受欢迎,必然要有一个「筹码」让招聘方留下深刻的第一印象。
比如上面这位未毕业的工程师,我第一眼注意到她的简历就是那十分具有含金量的 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
- 团队合作
还有其它一些我们学到的东西:
动手去做我详细叙述了我从 11 岁开始做的东西,就是希望能告诉你:如果你想学习编程,你需要动手开始做!现在就去做,不要找任何借口。
动手做是最好的学习方法。
把编程语言书从头读到尾是一件很枯燥的事,常常读到一半你就坚持不下去了。但如果你打算做一个项目,你会在做的过程中明白自己应该学习哪些知识,这是学习知识更有效的途径。
计算机课程
大学里的计算机课程,是另一种十分有效的学习编程的方法。那些好的计算机课程,都十分强调学习计算机科学领域里的重要概念,而不是局限于教会某个特定的语言。这可以帮助那些没有接受过正规教育的人在自学时开阔眼界。
我还清晰地记得,在斯坦福大学里我上的第一堂计算机课(那是一堂关于 C++ 的课程)。当时我还在想「变量前怎么可能不带 $ 符号呢?」——因为那时我只使用过PHP :-) 我用了很长一段时间,才改掉在变量前加 $ 的习惯。
在 IT 公司工作另外一个提高编程水平的方法,就是去 IT 公司实习,比如 Facebook 或者 Quora。最近的两个夏天里,我就是在这两个公司里工作。你可以从优秀的同事那里学会如何更好得编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。
还是那句话——比什么方法都管用——学习编程最好的方法就是做项目练习。我是不是已经重复这句话无数次了 :-)
如何学会编程:
- 做 side projects
- 看编程书
- 做 side projects
- 上计算机课
- 做 side projects
- 读编程类博客
- 做 side projects
这就是我能给出的最棒的建议。
Happy hacking!
---------------------------------------------
如果想去硅谷工作,我的其他两个回答应该有帮助,可以看看:
中国程序员怎么去 Facebook 工作? - luckystar 的回答