Actionary

A man is valued by his works, not his words!

程序员上网扫盲

最近常常被很多朋友问到这样的问题:

  • 你们是用什么工具做了这么炫的presentation?
  • 你们从哪里找来这么标准的回答,我提的问题就是那个?
  • 你们从哪里了解到这么好玩的东东?
  • 你们怎么可以认识到这么多的大牛?
  • 你们都从哪学来这么多的知识呀?

我们总是告诉他们:

  • 我用prezi做的展示,酷吧,你也可以。
  • 我常常登录quorastackoverflow,所以我明白问问题的技巧和查找答案的方法。
  • 我用feedly订阅了很多的RSS,并且分类,定期阅读,开阔了我的眼界。
  • 我会“科学上网”,在twitter上follow了@codinghorror @mfeathers @KentBeck @unclebobmartin 等很多大牛,我知道他们在干嘛,跟他们互动,大牛没有想的离得那么远。我们在github上fork大牛的项目,给他们提pull request,离大牛更近了。
  • courseracodeschool是我常去的网站。

总之,问题林林总总,总是关心我们工作及获取信息的方式。首先,应该肯定提出问题的这些朋友还保持着程序员的猎奇的心态,对未知领域的好奇心,正是这些好奇心,激励着我们往前走,又有多少人连这点好奇心都没有了呢?而从另一个角度,我们又感到一丝丝的担忧,IT行业在互联网上发生翻天覆地的变化,而我们很多朋友却依旧固步自封,原地不动。

我们应该庆幸生活在这个时代,这样的时代互联网给我们提供了取之不尽的资讯,但是,我们又多么不幸地生活在了这样的时代,这样的时代可以让一个中学生迅速成为你的竞争对手,成为程序员的门槛已经不高,10+程序员已经展露头角。不学习,总会被取代掉。鉴于此,朋友建议我做对程序员上网做做扫盲,对很多人来说,这些网站都是“老地方”,但我相信同样会有很多人会认为这是个新去处。

开源社区Github

Sourceforge,google code离我们越来越远,而github却离我们却越来越近。这家公司虽然地处湾区,在地理位置上来说,与我们隔着一个太平洋的距离,可是github.com却成为每一个geek必去的网站,越来越多的开源项目进驻,越来越多的公司用它来做项目开发。这是一家提倡社交化开源,社交化开发的公司,该公司只有一个员工有一个固定的title,那就是CEO,其他员工的title都是经常性的变更,有时叫“黑暗骑士”,有时叫“终结者”,员工遍布全球,办公地点有的在家里,咖啡店,Office,而有的则可能在旅行的路上。

软件开发已经没有传统的地域限制,github提供了这样的一个技术平台,提供社交化的虚拟社区,人人可以提交代码,人人可以review代码。要开展一个项目,你只需在网站上建一个repository,剩下的就去邀请那些极客了,给他们一根网线,他们会用各种名词"clone","fork","pull request"跟你交流。如果有一天,你听到一个人跟你讲,请fork一下我,千万别感到奇怪。你需要掌握的知识就是编程和git的使用,很高兴,互联网给了免费的图书让你学习git。据说,现在很多大公司会通过github上的信息,网罗他们需要的程序员,又一个大数据的案例

又据说,现在美国白宫也在正尝试通过github的协作方式来完成一些文章和政策文档的编撰工作。白宫已经开始了,你还等什么呢?登录github.com,fork我吧。

问答类网站 Stackoverflow & Quora

记不记得上世纪90年代末本世纪初的时候,很多程序员会泡在CSDN论坛上,回答各种问题,积累专家分。只是有点可惜,这家公司不知道自己应该做什么,又是做博客,又是办杂志,又是搞社区,据说现在也倒腾了一个github-like类网站。随着永恒的九月的现象,越来越多的低质量问题和答案充斥其中,后来很多人选择离开这样一个技术讨论平台。

Stackoverflow就是这样一个成功的网站,这是一个属于程序员的网站,由大牛 @codinghoner Jeff Atwood开发的一个供程序员提问及回答讨论的网站,你可以在这里提出关心的技术问题,只要分类OK,很快就会有人给你解答,如果对一些问题感兴趣,你可以收藏该问题。专家分积累到一定程度,会给你一个勋章,这吸引着越来越多高质量的问题和答案,以致于现在流传着这样一句话:世界上只有两种开发模式,到github上clone代码,或者到stackoverflow上复制代码。

这是一个来自经典stackoverflow的问答,看过之后相信你会爱上这个网站。现在很多公司的招聘信息上已经明确要求应征者提供其github和stackoverflow帐号,这可比大学考试分数靠谱多了。

Quora相比stackoverflow就是另一种风格。同样是问-答类网站,Quora涉及的问题会更大一些,stackoverflow会深入技术细节。但两者的相似之处都是因为吸引了很多的大牛,和保持一贯高质量的问答,这是他们成功的经要。

在线教育 Coursera & Codeschool

我们常常吐槽,说国内没有一所好的大学,没有碰到好的老师,一切如此糟糕境遇的原因都是他们:我是一块好的璞玉,没有人打磨,所以就是这样。

如果你还在抱怨这些原因的话,那你大可不必了。虽然你这辈子可能鲜有走出国门,走进更高的学府的机会,而网上公开课程给你提供了这些便利。且不说风靡的哈佛公开课程《公平与正义》等视频在互联网上到处可见,更为专业性的网上课程网站Coursera.com提供了更为专业的服务。网站会提前给出即将开展的课程安排,用户根据自身需要,选择课程,在安排的时间段学习课程,网站提供了视频,slides,录音,完成老师布置的作业,你还可以跟老师互动,向老师提问(当然,这很难做到逢问必答)。在一定的时间内完成课时,并且作业达到一定分数,课程结束后,你会收到一份证书。据说这份证书目前比某些大学的毕业证更靠谱。如果你过不了语言关,不要紧,有些课程的视频配有中文字幕,你的学习过程就像看美国大片。此外,译言网上中文课堂是译言网与Coursera合作最近刚上线的项目。

记得去年参加了斯坦福的Andrew Ng教授的一个课程Machine Learning,因为吸引人很多人的参课,首期就超过10万人注册课程,并且反响异常热烈,该课程获得了去年coursera年度最受欢迎课程的荣誉。你想,一下子你就多了10万个同学,这是什么样的概念,多选几门课程,你同学数都可达百万级。

做为程序员,要想精通多门开发语言的Hello World程序,只要花上一个小时,要想精通多门语言的Game of Life程序,只要花上一周。网上编程教育网站codeschool就是这样一个网站。它提供多种开发语言让你选择,并且由你选择学习路径,入门,进阶,高级等等,一应俱全。就Ruby语言来说,有Ruby Basics, Starting Rails, Advanced Ruby, Rails Edge, Railstesting,Rails Best Practices。足不出户就可以成为开发高手。如果你真想成为大拿,现在就登录这些网站注册课程吧。

RSS订阅

记得前几个月,当google说要在七月份把google reader关掉的时候,有许多有阅读RSS订阅的人焦虑了一阵子。不要告诉我你不知道有什么是RSS订阅,如果真不知道,请登录到google.com在查询栏输入“什么是RSS订阅”。如果你告诉我你不用google,而是用baidu,那你就活该当个outer。

现在好了,feedlydigg都提供google reader的平滑过度,而且提供了很好的用户体验。像feedly还提供了免费的Andriod和iOS应用,Windows Phone上也有nextGen Reader来支持feedly,这难道还不够吗?

有人会说,光有工具还不够,内容呢,哪里来?我获取内容的途径一般来自Hacker News, Reddit,还有我在社交网上follow的那些大牛分享的网站,天天积累,越来越多。不要告诉我你不知道Hacker News,这个网站的founder,可是大名鼎鼎的Paul Graham,《黑客与画家》的作者,著名的天使投资人,最早以lisp程序员而闻名。

我一直认为,在信息爆炸的时代,能通过人肉再过滤一层的信息会更值得读,时间有限,你不可能什么都读,就像看电影一样,我们一般都选择得分高的电影,或者朋友推荐的。像Hacker News和Reddit就是帮我们排序的。

现在手机上还有一款不错的软件,叫做flipboard,它收集了各路信息,然后帮你汇总分类,也是不错的一个神器。如果你还在担心英文阅读的困难,我可以建议两个途径:

  • 恶补英语,常常读,让看英文资料成为一种习惯
  • 如果你真的在语言上不可救药,那看中文网站吧,现在有很多志愿者把他们认为不错的资料翻译成中文,如译言网外刊IT评论网。也有汇集牛人博客的网站,如IT牛人博客聚合

每天花上1个小时做订阅的阅读,当这成为一种习惯,你也会成为信息的受益者。当然,你的目标要成为一位分享者,只有分享才会让我们的时代更加丰富多彩。

编程训练平台 Cyber-dojo & oDesk

编程是一项技能,所谓拳不离手,曲不离口,做为训练自己的编程能力,cyber-dojo提供了这样的一个平台,你只需setup起来,获得一个ID,就可以选择一门开发语言和练习题目,开始你的编程训练。我们可以以一个Scrum团队一起来完成,以TDD的形式,成员之间乒乓交换,即先一个人pass单元测试,重构代码,再写一个failed掉的单元测试,这时另一个人接手重复上述过程,一直不停换人,直到完成整个题目。

我想,一群人能在一起写写代码,不停地交换彼此的想法,编程技能提高得肯定很快。如果开始阶段不是太容易掌握活动的引导,找一位好的引导人也是一个不错的选择。

其实oDesk不完全是一个训练平台,它的目的是用于软件的分包和承包,你可以把自己的个人信息和技能写上,给出你需要的佣金,然后参加项目的承包竞标。这是一个非常好玩的事情,非常接近真实生活中的招投标过程,当然,这里的招投标也是真实的。如果你准备好了,你可以试试自己的价值,利用业余时间参加一些这里的项目也是一件不错的事。

我听说过两件oDesk的趣事,一件是分包的事。据说一位牛人,他在他们公司的绩效特别好,交待给他的事,他都很好地完成掉了,所以,他工资特别高,但最后发现,他的工作都被他在网上分包给了中国的一些开发者。还有一件是关于承包的,有一位程序员决定环球旅游,然后他带好了电脑,还有上网的辅助设备,在旅途上,边看风景,边在oDesk承包项目,而且赚到了比在前公司工作还多的收入。

在线协作平台 Google Doc(Drive),Google Hangout, Dropbox, Trello

除了github可以提供一套协作的流程外,Google Doc也或者叫Drive,也是个好东西,现在我们几个朋友之间常用这个工具来协作完成一些slides,文档,或者excel。还记得最早用Google Wave的时候,现在Google Doc跟它相比,可是巨大的飞跃。此外,我们还用Dropbox来存储我们需要的东西,如做远程的git repository,做一些文稿的协作撰写。

当我们在协作过程中遇到任何问题需要交流的时候,Google Hangout提供了视频会议功能。而这些都是免费的服务,我们用Gmail收发邮件,Google Calendar做日程安排。一切都自然而流畅。

如果你的团队是用Scrum或者Kanban之类的开发模式,需要用到团队的任务的Backlog的话,那么Trello将会是一个不错的辅助工具。你能通过它定制列表,如你可以定制一般Scrum的列表:TODO, In Progress, Done等,也可以定制Kanban的列表:User Story,设计,编码,测试等互为依赖的状态列表。另外,你团队成员的状态也会显示在上具上,你可以清楚地知道谁在负责哪个任务,也可以即时地与之联系。

除之此外,作为程序员,你可以在coderwall上把你的Profile建立起来,它会根据你在github上的项目和开发语言,给你列出一枚枚徽章。然后与朋友或同事在coderwall上建立团队,我们目前给公司在coderwall上建了一个团队,目前全球排名已经到了七百多名,如果你会加入的话,我们的排名会更靠前。

社交网站 twitter, facebook, linkedin, glassdoor, ifttt

这是最不需要分享的章节,只是我们生活在四周砌满高墙的国家,所需要做的只是“科学上网”,那么你听说过fqrouter, goagent吗?follow对人也很重要,我记得有位朋友跟我讲,他的微博里都是公知和五毛,天天吵,烦死了。我跟他讲,因为你本身想成为公知或五毛,所以才会有那么多的公知和五毛在他的微博里,如果你不想要他们的争吵,unfollow他们,帐号在你手里。

还有,你知道在什么时间发的言会被更多人阅读吗?你知道你的哪些粉丝最有影响力吗?你知道你的粉丝的活跃程度吗?因为你是个程序员,你所要做的就是掌握这些社交网站的API,写下一个应用,所有数据都会出来,是不是很有意思。另外,你有ml的能力(machine learning,不要误解),可以学习你的粉丝或好友的行为,这时,你可以合理安排好你上微博的时间。会突然发现,生活变得与众不同。

不要沉迷社交网站,不要让其成为朋友之间唯一的沟通渠道,让朋友变成网友。一直以来,我不太愿意上QQ,从大学毕业戒掉QQ快10年了,原因是一上QQ,很多好友会向你说Hello,而你不得不客气地回复他们,被打断多次,之后只要我再上QQ,我都保持潜水的状态。上周我做过一个实验,我把QQ以在线的形式让它显示在那,我想统计一下我会收到多少打断,除了第一天上午收到四个好友的Hello,到第二天只有1个给我Hello,第三天,没有人再理我了,我并没有我自己想像的重要。:)

所以,当别人习惯了你的状态,你就不会显得那么重要了,不要总是打开微博看刚发出去的微博有多少@,有多少评论,只有不停地提高发出去的信息质量,@和评论就会多,而多了之后,当你习惯了,也就没那么重要了。

ifttt却是更高级的上网技,它是if this then that的缩写,this指的是触发行为,that是被触发的行为。也就是说,你在这一个网站上做的一个具体的行为,会触发另一个网站的行为。比如,我想在feedly但凡我mark成shared的文章,都需要分享在twitter上,那么这里的this就是指的在feedly上mark成shared,而that就是指的在twitter上发推。用户可以在ifttt上定制自已需要的触发器,目前该网站支持绝大多数热门的应用和社交网站的服务。到时你可就可以通过它管理多个社交网站了,而不需要在多个网站之间copy-paste。

BFD还是DFD,时间在哪里

大哥,信息太多了,我学习是广度优先还是深度优先呢?好问题。一般来讲,我会先BFD来一趟,发现热点,然后DFD,通过Wikipedia深入下去,再找书来读。上次我在微博上做了一下调查,大多数朋友都是BFD。

时间怎么安排,上班的时候干项目,下了班还被项目干(支持电话不断),还要带小孩,陪老婆,没时间啦。我记得有次在google buzz里跟一些朋友讨论过这个话题。大体上是晚上回家只陪小孩,和小孩一起睡,早上比小孩早起,做阅读。班车上,地铁里看RSS订阅,把所有碎片都用起来。其实看起来很难,习惯了应该也就这样,还记不记得上中学那会儿,早上要出操,还有上早自习,那时是怎么过来的?最近流传着12位早起的IT大佬的段子,不是要求大家成为大佬,而是我们不能光看到别人的光芒,而忘了他的付出。我记得还有一篇文章讲成功人士工作的第一个小时都干什么,同样值得学习。

结语

写得越多,越发现停不下来,因为还有很多好用的东西值得写下来,如分享幻灯片的slideshare,可以做出很炫幻灯片的prezi,常常收听的TED等等。随着国内的互联网企业的发展,也越来越多的中文资讯网站办得越来越好,像豆瓣,36氪,果壳等等。我们所需要做的,只是定好目标,合理安排好时间。另外,圈子很重要,与肝胆人共事,从无字句处读书,你身边的朋友会是你学习的老师,他们follow什么样的人,他们读什么样的文章,他们怎么样安排生活,都是你参考学习的对象。我很开心认识了这么多的朋友,他们告诉了我很多不知道的好玩意儿,教会我“科学上网”,我才能写下上面那么多的废话。

要成为码农不难,要成来好的程序员不简单,先让自己不out,从现在开始。:\

Comments