29

专注和游离

640

该专注的时候,你游离了;该游离的时候,你专注了。

最近一些读者的提问,包括与团队成员的交流,都涉及到了一个问题,如何才能快速的提升自己的能力,或者说为什么我提升的这么慢呢?

这里面其实存在一个误区,世界上根本不存在快速提升的神奇方法,什么21天学通 Linux C 编程,7天自学 Java 语言,17天搞定 GRE 单词,等等,都特么是骗人的。小时候书在我的眼中非常神圣,看到类似的标题我砰然心动,仿佛看到初恋情人,还没入手就开始幻想自己21天之后拔剑四顾满腹经纶的嘴脸。结果买了书之后,一个月发现自己只看了第一章节,而且每次都看第一章节,所以别提学通和搞定了,门都没入。

根本没有什么快速的提升,如果你在某段时间觉得自己提升得很快,那是因为你身边的大部分人成长得更慢,或者,他们安于现状,没有提升。提升从来稳定的,持续的,渐进的。在大部分领域,围棋、绘画、写作、编程、球类等,没有十年的持续学习和实践,基本上很难达到专家级别的水准。

既然明白了这一点,我们「不期速成,日拱一卒」就好了嘛,每天坚持在某个领域学习和实践两小时,那成功不就指日可待了么?有这么简单就好了!事实上,在这个到处充满诱惑力和信息碎片满天飞的时代,能够做到「日拱一卒」的人,少之又少。基本上,由于人的天性,大部分人不可能像苦行僧那样去学习和生活,我们常常是在需要专注的时候,游走在朋友圈、微博、美剧、游戏和各种无聊的垃圾信息之间;在需要游离放松的时候,我们却极度专注,打游戏或刷新朋友圈到深夜或凌晨。

一小部分天才和异人可以非常顺畅的在专注和游离状态之间切换,你看他们在刷微信,其实他们在阅读,你看他们在看美剧,其实他们在编程,这些人具备异乎常人的多线程处理能力,而且能做到「品学兼优」,玩得开心,学得高兴。

这叫天赋,我们普通人是学不了的。我直到三十岁以后,才慢慢找到了适合自己的方法和平衡点。等我搞明白了这一切之后,十年的差距已经过去了,想一想还是挺悲哀的。为了给自己打气,我就对自己说,你们这些少年天才也就那么回事,不就是比我们早十年想明白了很多事吗?不就是我们还在摸索的时候你们已经还是奔跑了吗?跑得再快能有刘翔快吗?能有乔布斯和盖茨看的远吗?也就那么回事,都不是神,道哥饿几顿眼里照样没神,说话照样有气无力!我们当北京的程序员,杭州的产品经理,野百合一样有春天!

有了这样的信念,我得以坚强的活到了今天。我的方法很简单,就是把每天晚上完整的时间归一堆,然后用刀切成两半,一半用来专注,一半用来游离。

状态好的时候我就会先专注的干一些事情,这段时间里我会屏蔽掉电话、微信、微博、美剧等一切干扰噪声,把相对完整的时间留给写作、编程、读书,或专心研究点什么,坚持一段时间,你的效率就会大大提升,你会发现自己的提升好像比以前快了那么一点点。

状态不好的时候,我就会处于游离的场景里,刷朋友圈,看微博和推特,看订阅的 Blog,读一些闲书,看美剧,拓展视野,寻找信息,彻底放松。这段时间就是用来消耗的,同时寻找有价值的东西,记下来,留在专注的阶段细细阅读和理解。

专注和游离状态交替进行,对我来说,似乎是最好的选择。一旦专注,你的效率就会比别人高那么一点点。一旦游离,你的视野就会比别人广那么一点点。假以时日,你的高度和广度上就会大大超越常人,把那些稀里糊涂过日子的人抛在脑后,同时可以远远的看见那些天才们的后脑勺或脚底板,这叫大器晚成。

写到这我想起了著名程序员、计算机博士徐宥翻译的一篇文章,叫做「十年学会程序设计」,结果去翻他的博客,居然不能访问了,颇为伤感。还好我摘录过他的一些文字,分享给大家。

关于编程上一些建议:

1、对编程产生感兴趣并因为乐趣而写程序。确信你自始至终都能乐在其中,这样你才愿意将十年光阴投入编程事业.

2、与其他程序员交流;阅读别人的代码。这比任何书任何培训都重要。

3、不断地编写。 最好的学习方法是在实践中学习 。从技术角度说,「在特定领域的个人最高效率并不因为经验够多就会自动获得;但若有意识的通过努力去提升经验,个人效率会变高」而 「高效的学习一般需要明确的任务和因人而异的适当难度,以及及时的反馈和重复或者修正错误的机会」(20~21页)Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life (实践中认知:心智、数学与日常文化) 是这个观点的一本有趣参考书籍。

4、跟其他程序员一起完成项目。在一些项目中成为最好的程序员;在一些中则充当最差的一个。当你是最佳的,你要测试自己领导项目的能力,并以你的能力鼓励他人。当你是最差的,要看看高手做些什么,他们不喜欢做什么 (因为他们会叫你去帮他们做).

5、接手别的程序员完成项目。全心投入并理解别人的程序。当原作者不在的时候,看看在理解与修改时有什么要注意的。想想如何设计你的程序使得后来维护的人容易上手。

6、至少学会六门编程语言。一种要支持类/对象(class abstractions)的语言,如Java或C++;一种函数式(functional abstraction)语言,如 LISP 或 ML;一种支持语法抽象(syntactic abstraction) 的语言 如 LISP;一种声明式语言,如Prolog或 C++模版;一种支持协同式(coroutines)编程,如 Icon 或 Scheme;还有一种支持并行(parallelism)的语言,如 Sisal。

7、并具备良好的判断力,也别老纠缠在语言标准化上。

至少要六门编程语言,想一想自己接触了几门,熟悉了什么,掌握了多少,共勉!

25

最可怕的产品经理

IMG_3642

很久以前,PM 两个字母的缩写代表了 Project Manager(项目经理),那是一个软件工程横扫世界的年代,人们为了精准的完成一个软件项目,设计出了各种开发规范和工程过程,项目经理可以制定出细致到每个月每个周和每天的工作计划,最后,项目延期了……

时至今日,PM 早已改弦更张,成为产品经理的代名词,在这样一个以用户和产品为中心、设计和用户体验改变世界的时代里,产品经理被赋予了太多的职责和意义,他们主宰着产品的特征、设计、实现和用户心理,如果负责了公司的核心产品,他们甚至决定了公司生死存亡的命脉,他们画原型如拾草芥,做交互如履薄冰,产品特性增一个就多了,减一个就少了,他们始终念念不忘的是:设计上的完美并不是没有东西可加,而是没东西可减。

不一定有回响……

产品经理常常处于各种纠结之中,他们想尽可能让产品表现的聪明而有原创性,又担心自我的迷失,因为人们在登山的时候总是会忽略那些能够直达目标的小径,我们被蓝色湖泊上飘荡着雾气吸引,在高山上怒放的美丽花朵之间徜徉,而忘记了真正的目标。然后,很多产品就这样死掉了……在这样一个创业者遍地开花的年代,大部分的产品不仅会老去,而且会消失,这是它们的宿命,也是产品经理的宿命。

不过产品经理们是不会屈服的,因为有两个神一样的产品经理永远伫立他们的前方,对于他们来说,乔布斯和张小龙是偶像,也是永远无法跨越的鸿沟,神的每个举手投足都能吸引亿万人的目光,让人仰望,让人忧伤,就像盖茨和林纳斯之于程序员。

有灯塔就有远方,就有希望!

Continue reading

20

懒人如何理财?

81N58PICKDX

前几日看见一篇文章,叫做「靠能力赚大钱是最可笑的谎言」。文中有一段话是这样写的:

前些日子碰到一个 UT 出来创业的小伙子,遥想当年,UT 在全国招聘为数不多的本科生,他打败了无数的人终于挤进了 UT。而那些被他打败的人,黯然的走进了阿里的大门。彼时的阿里容纳了一帮乌合之众,很多都是职业技术学校毕业的学生,名校几乎没有。十多年过去了,那个进了 UT 的天才,现在要出来创业了,那些没办法只能去阿里的人,一个个身价过亿要给那些牛逼哄哄当年逼的他们无路可走的牛人们投钱去了,能力决定一切么?好像还真不是。

这段话的真伪虽不可考(显然没这么夸张嘛),但基本意思是:「在过去的十多年里面,决定你是否赚大钱的逻辑,不是勤奋,不是坚持,而是运气,对,就是运气。这个世界,赚小钱才是能力,赚大钱其实是靠命的。你努力勤奋,目光坚定,勇往直前,这些付出能让你过上比较好的生活。但是,并不是努力勤奋就能让你成为马云马化腾的,才气和命格不在,想也没用」。

看完这篇文章我悲喜交加,喜的是我一直是个有能力的人,悲的是我发现自己的运气一直不怎么样!啊,多么痛的领悟!

那么,我们还能不能好好努力工作了?

当然可以!很多人看到这里就会在朋友圈点个赞并发个回复说「终于不用努力工作了」!那就活该你贫穷一辈子。运气是什么,运气就是不管你准备好了还是没准备好,都会往你头上砸的东西,就像鸟屎。前几天一个程序员朋友突然扔掉了键盘,扯掉了耳机愤而离职,我说你丫是不是顿悟了?他说顿悟个屁啊,我们老家的一块破地被政府收了,给了我五千万!爷现在是富二代,不准备和你们混了。

这叫运气!

你能想象自己会有这样的运气吗?不能。所以,当生活的大幕正式向你拉开的时候,先要去凭本事挣点小钱,让家人体面的生活,才是正道!为什么说是「小钱」呢?因为运气、命数是我们无法控制的,我们唯一能够做的就是勤奋、努力、提升、反思,只要做到这些,挣点小钱是分分钟的事。

还有一个关于努力工作的误区就是兴趣。很多人常常喜欢挂在嘴边的一句话是:我想做自己真正感兴趣的事。很多大好青年就毁在兴趣二字上了,因为做感兴趣的事从来就不是简单的。首先你必须知道自己真正的兴趣所在,很多人做 A 的时候觉得自己感兴趣的是 B,结果被安排去做 B 了,半年以后他又会告诉你,做了 B 才知道自己真正想做的是 2B,遇到这样的人你除了心怀中指,徒呼奈何?另外,做自己感兴趣的事是需要资本的,当你穷的叮当乱响没有任何资源的时候,很难有选择的话语权。很多人说我穷就去穷游嘛,但穷游过程中回荡在心里最多的话往往是:真这么穷就别特么出去浪了……

好了,现在你通过努力奋斗挣了点小钱,以后的路怎么走?把它们种在门前的小树下,明年枝头就能挂满白花花的银元了……这当然是梦话了!老话说了,你不理财,财不理你,现代社会,每个人都应该学会理财,然后继续努力工作和思考,并等待运气的降临!

好,终于扯到正题上了,其实今天主要是想谈谈我们这些「懒人」该如何理财的问题。

为什么是懒人?因为从事互联网行业的 IT 人员除了要在节假日加班赚钱之外,还要花时间讨论 PHP 和 Python 谁是最好的语言,Vim 和 Emacs 哪个是编辑器之神,Mac 好用还是 Windows 好用,产品经理和程序员哪个更重要,为什么程序猿找不到女朋友……等问题,连花钱的时间都没有,在理财方面,绝逼是个懒人。那么懒人如何理财呢?我说说我是怎么干的。

1、存银行

基于不要把所有鸡蛋放进一个篮子里的原则,你总要给一部分钱选一个最稳妥的场所,这个场所就是银行。我几乎不在银行存定期,但是会在银行里放一笔足够几个月日常花销的钱,以备不时之用。

2、余额宝和理财通

有一位银行的朋友告诉我,一般情况下,年化收益率在 6% 以下的理财产品风险是非常小的,超过这个界线,风险就逐级递增,所以拿出一部分资金购买类似余额包或理财通(目前年化率 4% – 5% )之类的产品,也是一个选择。如果不着急用钱,再拿一部分去购买招财宝的产品(目前年化率 5.5% – 6.9%),是另一个选择。

招财宝平台主要有两大投资品种,第一类是中小企业和个人通过本平台发布的借款产品,并由银行、保险公司等金融机构或大型担保机构提供本息保障;第二类是由各类金融机构或已获得金融监管机构认可的机构通过本平台发布的理财产品。

这些产品有阿里和腾讯背书,是相对稳妥的投资渠道。

3、互联网金融产品

前两年最热的概念之一就是互联网金融,愿意了解这个概念的,可以上网去查一查,简言之就是依托于互联网安全支付、社交网络、云和金融体系构建的理财、支付、信息中介等新兴金融系统。由于概念新,做法也新,加上缺乏安全监管和风险控制,这个领域的产品可谓良莠不齐,乱像丛生,据说有的P2P理财产品上线一天就能倒闭,创业者携几万元也能私逃(也特么够出息的)。所以,在购买这个领域的投资产品,一要看创业者的背景,二要看融资结构,三要看产品形态。

在这个领域,我推荐过懒投资和友金所,供参考。

4、合伙人

如果你看好某个朋友的创业公司,并能够为该公司提供一定的咨询或支持服务,不妨和朋友的公司成为某种松散耦合的合伙人关系,投入少量资金,占有少量股份,支持朋友的发展。如果未来可期,也可能会有不错的收益。这个风险当然是比前三种要大一些,大家可自行判断选择。

最后,我个人是不玩股票的,所以股票相关的理财就不推荐了。


17

Linux 开发模式带给创业者的启示

8346252906_98579b9d09_o

十五年前,我第一次在工作中使用 Linux 的时候,并不知道这个操作系统会对我的生活和职业产生多么大的影响。十五年后,我在「Linus,一生只为寻找欢笑」一文中写到:

当大家使用 Google 搜索时,使用 Kindle 阅读时,使用淘宝购物时,使用 QQ 聊天时,很多人并不知道,支撑这些软件和服务的,是后台成千上万台 Linux 服务器,它们时时刻刻都在进行着忙碌的运算和数据处理,确保数据信息在人、软件和硬件之间安全的流淌。

Linux 不仅仅从技术层面影响人们的生活,其本身就产生了很多有意思的话题和文化,我读了不少 Unix/Linux 相关的书籍,很多技术内容已经忘得一干二尽,但那些话题、模式和文化,却像醇香的好酒、美丽的传说,历久弥新,不断的为我带来思考和启发……

1、最初的想法,并不是决定性的

Linux 并不是凭空创造出来的,当年林纳斯(Linus)只是觉得迷你版 Unix 操作系统 Minix 的终端太难用了,既不能登录学校里的 Unix Server,也没法上网。这种功能缺陷对林纳斯这样的极客来说是无法接受的,于是他决定从硬件层面开始,重新为 Minix 设计一个终端仿真器。

当时是三月,也可能是四月,就算彼得盖坦街上的白雪已经化成了雪泥我也不知道,当然我也并不关心。大部分时间我都穿着睡衣趴在相貌平平的计算机前面噼噼啪啪的敲打键盘,窗户上的窗帘遮得严严实实,把阳光和外部世界与我隔离开来。 经过不眠不休的编程之后,终端仿真器做出来了,但那个时候林纳斯已经意识到自己的雄心壮志远不止于此,神山上的另一座圣杯「操作系统」已经向他发出了召唤,于是始有 Linux。

另一个伟大的操作系统 Macintosh,同样起步于一个微小的项目,期间历经换帅、更名、争吵、妥协,最终与 NextStep 经过长达四年的整合才形成现代的经典操作系统 OS X(参见《MacTalk·人生元编程》)。

几乎所有成功的产品都是边走边看做出来的。伟大的梦想,常常始于微不足道。

所以,很多人问我如何找到一份长期稳定的工作时,如何开启一个能够带来巨大成功的项目时,我只能说,最初的想法,并不是一切,开始去做就好了。

Continue reading

十二 11

Docker 传奇之 dotCloud

2010年,几个大胡子年轻人在旧金山成立了一家做 PaaS 平台的公司,起名为「dotCloud」,这个名字让我想起了微软的「DotNet」。

dotCloud 主要是基于 PaaS 平台为开发者或开发商提供技术服务。什么是 PaaS 呢?PaaS 的全称是 Platform as a Service,也就是平台即服务,这个概念在2010年热的一塌糊涂,直到现在也没凉下来。举个例子来说,传统的软件产品开发一般是这样的:

1、确定产品定位和需求,确定首次迭代的范围。
2、制作界面原型。
3、技术选型,然后根据技术选型为每个开发者搭建开发环境和技术栈,例如 Java 环境、Python 环境、Ruby 环境、数据库、中间件等等。
4、构建基础技术框架和服务,包括日志、存储、消息、缓存、搜索、数据源、集群扩展等等。
5、模拟用户容量,构建测试环境。
6、开始编写真正的业务代码,实现产品功能。
7、迭代开发/测试,生生不息,周而复始,直到头发掉光为止……

如果采用完善的 PaaS 平台,可以直接忽略3、4、5三个步骤。无论你选择哪个技术栈,PaaS 都会为你提供相关的配套设置,包括语言环境、运行环境、存储和各种基础服务。dotCloud 不仅支持诸如 PHP、MySql 等传统技术框架,还包括 Node.js、MongoDB 等新兴技术。基于 dotCloud 提供的开发工具和技术框架,你可以直接使用 dotCloud 的 SDK 编写代码和构建业务服务,并在联网的时候把这些代码推送到云端,实现自动部署和测试。

dotCloud 把需要花费大量时间的手工工作和重复劳动抽象成组件和服务,并放到了云端,另外,它还提供了各种监控、告警和控制功能,方便开发者管理和监控自己的产品。dotCloud 最初运行在 Amazon 的 EC2 上,不过由于 dotClout 高度的抽象层次,理论上 dotCloud 可以运行在各种各样的云服务上面(我猜这就是 Docker 的功劳)。

Continue reading

十一 24

程序员如何选择技术方向

最近写了「当程序员老去」「程序员真正的价值」两篇文章,传播甚广,今天是第三篇:「程序员如何选择技术方向」,史称「程序员三部曲」。 那之前写的几篇程序员文章算什么呢?算前传吧。以后再写程序员文章算什么呢?算后记吧。

2008年秋天的一个午后,温暖的阳光透过落地窗落在我面前这个长长的写字桌上,桌子对面坐的是一个瘦小的程序员,他的名字叫小明,小明有些茫然,他看着我,不知道该说些什么。

程序员都是很严谨的,我不得不首先发出一个 System Call:

你在客户现场这半年做什么工作? 写单元测试。 还有呢? 没了,就一直写 JUnit。 别人也写单元测试么? 没人愿意写单元测试,只有我写。

……

你为什么想来研究院呢? 我想写一些真正的程序。 什么是真正的程序? 比如 Java,比如面向对象编程,你总要写一些类和各种各样的方法,而不是一直写 Test Case。 好的,沿着这个楼梯上三楼,那里有一群和你一样的程序员,他们不仅写 Java,还写 JavaEE 相关的各种程序,你会找到自己需要的东西。 真的么? 真的

那时候我风华正茂,没有现在这么老成持重,阳光照在我的翘着二郎腿的脚面上,一切都显得十分虚幻,在小明的眼里,那时的我估计很像「黑客帝国」里的墨菲斯,但是他不能确定自己是不是「The One」。小明疑惑的看了我一会,最终还是上楼了。至此,他完成了第一次技术方向的选择。在三楼,他碰到了一群同样严谨的程序员,他不仅学会了写真正的 Java 程序,而且掌握了部分 Web 编程和服务器端编程,包括 JavaScript、JQuery、Spring、Hibernate、JMX、Web Service 等等。小明变得快乐起来,渐渐摆脱了注定孤独一生的阴影。

过了一段时间以后,小明已经不满足只写 Java 相关的程序了。有一天他看到我手里的 iPhone 和 Mac,仿佛见到了初恋的情人,眼中重新燃起了绿油油的光芒,他知道了 iOS 开发者这回事。很快,他花掉了所有的银子购买了 Mac 和 iPhone,开始日夜兼程,学习 iOS 开发。他在写 Java 的间隙编写 Objective-C 代码,在编译 Web App 的同时构建 IPA,在清晨的微光中调试程序,在每个夜晚与模拟器窃窃私语……他完成了第二个阶段的技术方向选择。

Continue reading