福流体验###
人们对快乐的追求是为了快乐本身,而对其他所有的目标 - 比如健康,金钱,权力等,却是只有在我们认为会让自身快乐时才会得到重视。--- 米哈里·奇克森特米哈伊
米哈里·奇克森特米哈伊 (Mihaly Csikszentmihalyi) 为感到快乐的境界想出了一个新的词汇来形容,他将此称为福流体验 (Flow Experience)。根据米哈里·奇克森特的研究,能产生沉浸或心流体验的活动通常具备以下几个特点:
- 专注:密切地专注于某件活动
- 自主:这些活动是我们自己的选择
- 挑战:这项活动难度不能低到让我们感到无聊,也不能高到让我们过劳而无所适从
- 目标明确:这项活动必须具备明确的目标
- 即时反馈:活动的成果必须得到立即反馈
置身于沉浸心流体验的人们,不但会感觉到深深的满足,也会无视时间的流逝,而且会因为手中的工作而彻底忘记了自己。这些人沉浸于往往会让人筋疲力尽的工作时,反倒是他们最快乐的时候。
福流模型###
程序员是幸福的,我想不出有比程序员更容易产生沉浸体验的工作了。唯一的问题似乎是在工作难度上。如果你是个程序员,但没有体验到沉浸心流,问题多半是出现在工作难度和你的能力上,下图是米哈里·奇克森的福流模型 (flow model):
上述模型可以发现很有意思的推论。做相同难度的工作,个人能力的高低会影响情绪体验。比如,对于长期从事低挑战性的工作的人,如果个人能力较低,较容易产生冷淡 (Apathy)情绪体验,而个人能力较高时,却是产生消遣 (Relaxation) 体验。想起了渔夫和富翁晒太阳的笑话,虽然最终大家都在晒太阳,但晒太阳时产生的情绪体验是不一样的。如果一个事情让你很痛苦,想想看是自己能力不足还是能力过剩。
个人体验###
我有一次较深刻的时间跨度较长的福流体验大概是在2006年,那个时候我在做一个 side project:用 C 语言实现手机上的浏览器,彩信,电子邮件客户端,目标是在各个功能手机平台上通用。这一目标在那个时候面临的挑战不小。主要手机开发环境不象现在的智能手机这样规范。MTK,TI,朗讯和展讯等平台的图形系统千差万别,类似现在苹果和 Android 的差别。系统框架层也比较弱,大部分系统只提供 TCP/IP 接口,连 HTTP 协议都没有。所幸,基本所有平台都是基于 C/C++ ,所以 C 语言基本可以通吃。为实现这样的目标需要做以下几个事情:
- 有一套可移植的的轻量级的图形系统
- 系统基础设施及其封装。如文件系统接口封装,基础图形原语封装,内存管理算法,BASE64 编解码等
- 基础网络协议。包括 HTTP 协议,WSP/WTP 协议,SMTP/POP3/IMAP 协议,XML 解析等
- 应用协议。MMS 解析和打包,RFC822/RFC2822 Message 解析和打包,HTML 解析和渲染等
- 内存及性能。特别是内存,那个时候整个浏览器一般只能使用不超过 2MB 的内存。我试验过在浏览像新浪这种将近 200KB 的 HTML 网页时只使用不到 2MB 的内存,当然,只支持 HTML,不支持 JavaScript
那个时候刚毕业 2 年多,工作中一直在接触网络协议,在阅读 GNU 的一些开源代码。而这一 side project 在当时看起来也比较有市场需求,因为很多手机公司都从供应商处购买浏览器/彩信软件,授权费达到1刀每台。在这样的背影下,我每天写代码到零晨 2-3 点,第二天一大早照样精神抖擞地挤公交去上班。那个时候其实不是真正想写代码到 2-3 点,而是写着写着不知不觉就到那个点了,只好很不情愿地去睡觉。每天看着自己脑中的蓝图一点地画出来,这是最好地即时反馈系统。那个时候我女朋友 (现在的老婆) 很不理解我的行为,也心疼,觉得我这样太累了。但我觉得那段时间真的是我最快乐的时光。我甚至到现在都无法想象那个时候的我有那么强的耐心和定力。
那个时候,经常对女朋友说,以后买房子就靠这个软件了。当然最终证明这是个笑话,不是软件没做出来,而是世界变化太快,智能手机把功能手机赶出了历史舞台。最终这个软件除了给我积累了一点吹牛的素材外,其实还是有两个很大的价值,一是让我有了福流体验,二是造了这么多轮子,让我编程的基本功有了长足的进步。
今日推荐###
推荐一个程序员的微信公众号程序人生,微信搜索 programmer_life 可以关注。篇篇原汁原味,关于技术,关于管理。