程序员的敌人

programmer

今天北京的天气简直好到爆,一整天下来,PM2.5的值就没超过25,俗话说好女不过百,好天不过25,就是这个理儿。吃完晚饭,出去溜了一圈,天高云淡,月朗星稀,空气中弥漫着初冬的寒意,远处的灯光闪闪烁烁,透过清亮的空气,似乎可以看到一丝丝的光线发散出来,感觉真好。北京现在没什么土,也没什么沙,估计很多年前的沙尘暴是难得一见了,所以我希望,这个冬天,让大风来的更猛烈些……

MacTalk 的读者中一定有不少程序员,今天的提问环节是:程序员的敌人是谁?

好吧,举手比较踊跃,看来平时被虐的不轻啊,这位同学: 「Mac 君,我觉得是项目经理,我看丫那个得瑟劲儿就想抽……」 「坐下吧,一会走的时候把怀里的板砖留下。觉得是产品经理的也可以歇歇了」

「Mac 君,我脚着吧,这事和人无关,应该是 bug 搞的鬼,上线时节 bug 纷纷,长使英雄泪满襟!」 「这个答案虽然有了点人文关怀,不过 bug 不都程序员写出来的吗,你不管谁管?」

插播:江湖传言,软件的不幸在于它创造出来的麻烦多过于它解决的麻烦。真实的情况是,软件只解决了一部分它创造出来的麻烦……

现在公布答案,程序员的敌人就是,当当当当,「需求」!

多少英雄汉,在程序世界里纵横四海独孤求败,结果被真实的需求碰球的鼻青脸肿头破血流黯然解甲,转售前的转售前,变甲方的变甲方,最可恨的是这些变成甲方的程序员,成了甲方之后开始用「需求」折麽其他的程序员,比甲方还甲方!原本同根生,相煎何太急!真特么像那只没抢到香蕉的猴子啊。

无数软件工程宝典、创业圣经和成功经验,都告诉我们,要想成功,挥刀自宫!哦,不对,要想成功,一定要满足用户的需求,做客户真正需要的东西。可是,你知道我们程序员想做到这一点有多难么?

首先,需求就分为了用户想要的(Want)和用户需要的(Need),其次,需求又分为企业用户需求和个人用户需求,第三,没有第三了。前两条就够我们程序员忙活一生了。

先说说 Want 和 Need,能够从 Want 直接转化成 Need 的需求简直凤毛麟角,你要遇到了就是你上辈子修来的福分,不当程序员天理不容。大部分情况下,Want 都是用户的谎言,他们不停的重复这些谎言,直到自己信以为真,然后告诉你,「兄弟,这就是哥的 Need,大胆的做吧,哥哥在岸上等着你」。等你费劲扒拉把这个 A 做出来之后,客户拿在手中把玩一番之后,会满脸歉意的告诉你,「不好意思啊,兄弟,我要的是 B,你给我做出个 A 来干什么?」。你呕血三升之后,客户终于把 B 描述出来了,告诉你,做,这次一定不会错!但是你永远不知道后面还有 C、D、E、F、G……在等着……

这是从外部客户角度,还有苦逼的内部角度。比如微软的演讲奇才狮吼功大师鲍尔默,他老先生在Surface发布时宣称 「……但购买这几款平板电脑(iPad、Kindle 等)的用户有可能犯了一个错误,这并不是他们想要的产品。」 「我不认为能有人像我这样意识到用户真正想要的是什么产品。你可以看看周围人们在用的那些平板电脑产品,没有一个是你真正能用的。苹果不行,谷歌不行,亚马逊也不行。没有一件产品可以既可以工作用又可以娱乐用……」 「Surface 才是用户真正需要的产品……」

不知道说这些话的时候老先生在用哪个脚趾头思考,我特么怎么不知道范了那么多错误?Surface的销量给了老鲍一记响亮的耳光,老鲍不干了。可怜那些研发Surface的程序员……

对于企业客户而言,几乎任何时候都存在 Want 和 Need 不对等的情况,我现在唯一能想到的应对之法就是「贴身服务」。再也不要打个包一百万让我们做 ABCDEFG 了,骗鬼呢?!单人单月报价,我们提供人员、技术、平台、工具、项目管理,您说吧,想做锤子还是锤子手机?按月付费,我陪您玩到天荒地老……

对于个人用户而言,如果你真的做对了,满足了用户的真正需求,可能有三种情况: 1、你是自己产品的真正用户 2、你运气不错 3、你是乔布斯

还有一点就是,为个人用户做产品不要让他们有太多选择,这些人不是程序员,不需要知道配置信息可以保存在 xml、注解、properties、json 中,这么多选项会让大家一起疯掉,给一个按钮就好了,就像 iPhone 那样。

Android 系统给了用户无限可能,但也被用户和开发者骂的狗血喷头。iOS 给了用户一堆限制和一个按钮,而且不能用 Flash,结果一个月以后,用户说:哦,原来我真的不需要 Flash!

「需求」如此残酷,值得为之奋斗!希望所有的程序员都能够做出真正满足客户需求的程序,十年后,我们的代码依然奔跑在千万台机器中,无数双手,在代码前挥舞……

博客时代和 RSS 资源共享

blog

昨天和几位十几年前一起打拼的小伙伴聚了聚,见面以后发现胖的胖光的光,执手相看泪眼,近视的近视老花的老花。在喝茅台品红酒吃辣子的同时,一边讨论国计民生,一边手拉手膝促膝一起回顾那青春燃烧的岁月……一直烧到了晚上10点多,小火苗才熄灭,到家后11点多了,于是就木有推送了……

记忆这东西真的很奇妙,岁月把你过去的时光压缩成碎片,并为之蒙上了一层薄薄的尘埃,当你匆匆前行的时候,是不会注意到这些碎片的。一旦疲累了想回头看看,你轻轻抹去这些灰尘,碎片就会复原并重现鲜活的过去,你会发现,青春岁月和飞扬的理想,一直都在那里……


在博客横行的年代,多少人在自己的签名档上增加了 Blogger 标签,此签一出,不管写的内容是什么,顿现高大上,低奢涵。十年倏忽而过,愿意为自己贴上 Blogger 标签的已经寥寥无几。

为何写作难以坚持?因为人在写作的时候都是孤独的,这一点和编程不同,很少有文章或文学作品是多人协作完成的。文章其实就是个人的独白,是个人向世界发出的讯息。这种孤独感将一直伴随写作的过程,能够一直忍受这种孤独感的少之又少,而且,写作和编程的另一个不同点是,你尝尝会感到江郎才尽,只要你窥得了一点文字的奥秘,你就不能忍受自己千篇一律的重复自己,软件讲究组件复用,而文字几乎是不可复用的。到了那个时候,坚持写下去的唯一动力就是你的作品还有人看,你的作品在与读者交流!

所以回头看看,当年那些「热乎乎的博客」就像闪电划过长空,汽笛融入朔风,突然间一切就了无踪迹,而真正沉淀下来的,还是那些原来的泥土、岩石、沙砾、树木和青草。

时至今日,大部分人都去刷微博和写 Tweet 了,但这些沉淀下来的作者,他们依然用不同的方式看待世界,逆潮流反向行走,坚持写作和阅读,持续的分享技术和人文世界里的点点滴滴。不同的是,一些人坚守在博客世界里,一些人转战微信公众平台;相同的是,这些人一直在写!正因为有这些人,Google宣布关闭世界最大的RSS 聚合平台 Google Reader,才让那么多阅读爱好者扼腕叹息。几个月过去了,大家为自己喜欢的那些博客地址分别找到了新的落脚点,写作和阅读继续进行……

我是个 GR 的重度用户,阅读订阅的博客是日常工作之一,GR 关掉之后,我把RSS 迁移到了cloud.feedly.com,所有的内容都完整的保留下来,Mac、iOS 平台的阅读工具也在进行很好的过渡和完善,这一切都让写作和阅读这件事重新变得美好起来。

很多读者和网友多次让我共享一下自己的 RSS 资源,于是整理了一下,在这篇文章里贴出来。好的博客当然很多,更多的是我没有发现的,如果你有更好的 RSS 推荐,发给我,我整理后再共享给所有人。

以下资源分了三类:技术与人文、技术、媒体,博客的更新频率有快有慢,大家可以根据需要选择阅读。

资源格式:名称/RSS

技术与人文

名称: 外刊IT评论
http://feed.feedsky.com/aqee-net
名称: 用文字打败时间
http://www.fengtang.com/blog/?feed=rss2
名称: 学而时嘻之
http://www.geekonomics10000.com/feed
名称: Apple4.us
http://apple4.us/feed
名称: demo@virushuo
http://feeds2.feedburner.com/virushuo
名称: 乱象,印迹
http://feeds.feedburner.com/yurii
名称: 褪墨
http://www.mifengtd.cn/feed
名称: Reborn
http://www.lixiaolai.com/feed
名称: 战隼的学习探索
http://feed.read.org.cn/
名称: 李笑来的博客
http://lixiaolai.com/posts.rss
名称: DBA Notes
http://feeds.feedburner.com/webarch
名称: 酷壳 – CoolShell.cn
http://coolshell.cn/feed
名称: 阮一峰的网络日志
http://www.ruanyifeng.com/blog/atom.xml
名称: MacTalk-池建强的随想录
https://macshuo.com/?feed=rss2

技术

名称: C++博客_罗朝辉
http://feed.cnblogs.com/cppblog/kesalin
名称: All Things Distributed
http://www.allthingsdistributed.com/atom.xml
名称: 4G spaces
http://blog.youxu.info/feed/
名称: 心弦 | blog
http://feed.feedsky.com/felixding
名称: Tom Preston-Werner
http://feeds.feedburner.com/tom-preston-werner
名称: NSBlog
http://www.mikeash.com/pyblog/rss.py?mode=fulltext
名称: Hello Database
http://www.hellodb.net/feed
名称: 火丁笔记
http://huoding.com/feed
名称: Erlang非业余研究
http://blog.yufeng.info/feed
名称: ciderstudios.com
http://ciderstudios.com/?feed=rss2
名称: 老赵点滴 – 追求编程之美
http://blog.zhaojie.me/rss
名称: 蓝色时分
http://koven2049.iteye.com/rss
名称: ECAE — Shopex电子商务云的梦想空间
http://blog.ec-ae.com/?feed=rss2
名称: BlueDavy之技术Blog
http://feed.feedsky.com/bluedavy
名称: Tim[后端技术]
http://timyang.net/feed/
名称: 博客园_winter-cn
http://feed.cnblogs.com/blog/u/37697/rss
名称: Coding Horror
http://feeds.feedburner.com/codinghorror
名称: 赖勇浩的编程私伙局
http://blog.csdn.net/lanphaday/rss/list
名称: 破船之家
http://beyondvincent.com/feed/
名称: xlvector – Recommender System
http://xlvector.net/blog/?feed=rss2
名称: 网易用户体验设计中心博客
http://feed.feedsky.com/uedc
名称: Aiur
http://blog.yxwang.me/atom.xml
名称: Yi Wang’s Tech Notes
http://cxwangyi.wordpress.com/feed/
名称: 云风的 BLOG
http://blog.codingnow.com/atom.xml
名称: 唐巧的技术博客
http://blog.devtang.com/atom.xml
名称: 《程序员》杂志官网
http://feed.feedsky.com/programmer
名称: 搜索研发部官方博客
http://stblog.baidu-tech.com/?feed=rss2
名称: 服务器运维与网站架构|Linux运维|互联网研究
http://www.ha97.com/feed
名称: NoSQLfan
http://feed.feedsky.com/nosqlfan
名称: MySQLOPS 数据库与运维自动化技术分享
http://www.mysqlops.com/feed
名称: a db thinker’s home
http://feeds.feedburner.com/dbthink
名称: High Scalability
http://feeds.feedburner.com/HighScalability

媒体

名称: ifanr 爱范儿专注于拇指设备的小众讨论
http://www.ifanr.com/feed
名称: 《程序员》杂志官网
http://feed.feedsky.com/programmer
名称: 果壳网 guokr.com – 果壳网
http://www.guokr.com/rss/
名称: 所有文章 – UCD大社区
http://ucdchina.com/rss/all
名称: Apple4.us
http://apple4.us/feed
名称: NoSQLfan
http://feed.feedsky.com/nosqlfan
名称: 网易用户体验设计中心博客
http://feed.feedsky.com/uedc
名称: @36氪
http://www.36kr.com/feed
名称: Startup News
http://news.dbanotes.net/rss
名称: 雷锋网
http://www.leiphone.com/feed
名称: 月光博客
http://feed.williamlong.info/

在 Mac 上阅读 RSS 有两种方式:
一种是 Web 方式,比如 Feedly Reader 和 Digg Reader 等,阅读效果都不错,还可以分享到很多第三方阅读 App 和社交网站。
一种是 客户端方式,由于之前的 Reeder for Mac 还没有提供新版本,所以推荐一下 Caffeinated,在 App Store 直接搜索即可。

在 iOS 设备上首选新版的 Reeder 2,收费!免费的RSS App 很多,比如 Flipboard、ZAKER 等,大家自己搜索选择吧。

写作与编程

夜色

最近断断续续读了很多技术之外的书籍,包括钟阿城、王小波、王朔、刘震云的作品,还有那些老翻译家王道乾、查良铮、黄锦炎的译作《情人》《青铜骑士》《百年孤独》等,看着这些优秀的文学作品、顶尖的文字,它们和《Unix高级环境编程》《数学之美》《HTTP 权威指南》这样的「技术干货」静静的躺在那里,我时常感觉到困惑:编程诚可贵,码字价不高,若为梦想故,两者都不能抛!

Paul Graham 在《黑客与画家》中描述了黑客与画家的相同之处(意译):

计算机和绘画看似截然不同,计算机冰冷、精确而井然有序,绘画狂热、畅想和欲望表达。但黑客与画家却有很多共同之处,他们都是创作者,本质上不做研究,而试图做出优秀的作品,当然过程中可能会发明出一些新的艺术形式或编程语言。

在阅读这么多文字和代码之后,我逐渐领会到Graham想表达的一些东西,这当然不是万物滋长天人合一的奥妙,而是文字和代码的相通之处,它们都在表达这个世界上需要表达的东西。文字仅仅能看是不够的,要能听,读来朗朗上口,有韵律有节奏,才是好文字。代码只能运行也是不行的,要能读能改,上可处理异常,下能控制事务,设计精妙逻辑严谨,才是好代码。

程序员常常感慨,技术领域广若高山大川,常走常新,问世间是否此山最高?答曰在世间自有山比此山更高(射雕主题曲,70后感受下),听起来让人无比寂寥。但和人类的文字比起来,编程就是刚刚学会走路的小盆友。如果说编程之路上的那些坑让我们叫苦不迭鼻青脸肿,那文字路途上的陷阱就是黑洞,你趴在洞口呼喊都没有回声,扔个石子也听不见响动,多少文学中青年因为缺乏才情在这条路上坠入黑洞郁郁而终,即使那些极具天才的文字工作者,也可能由于环境、政局、时代错过写出最好作品的机会,想起来就让人扼腕叹息。

王小波在《我的师承》一文中,高度推崇老翻译家王道乾、查良铮和他们的作品。这二人均少年天才,但壮年时逢那个疯狂的年代,满腹才情无处抒写。

王道乾早年留学法国,在巴黎索邦大学文学院攻读法国文学,回国后翻译了很多法国文学作品,晚年因为翻译法国女作家杜拉斯的《情人》蜚声海内外,汉语世界里创造了「另一个玛格丽特·杜拉斯」,王小波评其「文字功夫炉火纯青。一生坎坷,晚年的译笔沉痛之极,无限沧桑尽在其中」。

查良铮是金庸的叔伯兄弟,同属良字辈,笔名穆旦,著名诗人,翻译家。早年创作了《探险者》、《穆旦诗集》、《旗》等作品,50年代末期被调往图书馆和洗澡堂,先后十多年受到管制劳改,停止诗歌创作,开始翻译。70年代后期恢复诗歌创作,一举创作了《智慧之歌》、《停电之后》、《冬》,翻译了普希金的作品《波尔塔瓦》、《青铜骑士》,英国雪莱的《云雀》、《雪莱抒情诗选》,英国拜伦的《唐璜》等。临终前在《冥想》的诗中写出了自己的内心独白:「而如今突然面对坟墓,我冷眼向过去稍稍四顾,只见它曲折灌溉的悲喜,都消失在一片亘古的荒漠。这才知道我全部的努力不过完成了普通生活。」可谓黄钟大吕,大音希声。

王小波在文中对这两位先生的评价极高,谓之影响了其一生写作风格的导师:「我觉得我们国家的文学次序是彻底颠倒了的:末流的作品有一流的名声,一流的作品却默默无闻。最让人痛心的是,最好的作品并没有写出来。这些作品理应由查良铮先生、王道乾先生在壮年时写出来的,现在成了巴比伦的空中花园了……以他们二位年轻时的抱负,晚年的余晖,在中年时如有现在的环境,写不出好作品是不可能的……」

回顾这些先贤的作品,让我们知道,生活中并不是只有油盐酱醋和升官发财,人类在历史的长河中经历了各种苦难和悲情,但是总有那么一些人,不屈不挠的去创造那些美好的事物,可能大部分人一生都不会注意到这些闪烁着光芒的珍宝,但是它们就那样存在着,总会有人看到的……

本来是想捡起 Linux 文件系统的系列写写的,不过今天颁了诺贝尔文学奖,那就写点文字的事儿,算个念想。今年的获奖者是82岁的加拿大女作家爱丽丝·门罗,82了,同学们,所有想步入文学殿堂的,大家感受一下。感受完了就可以去编码了……

今日帝都大风,一扫多日雾霾,下班时走在园区的石子路上,抬头远远望开,夜色清亮,拍一张作为今日题图,是为记。

行踪预报


11月1号我会去趟上海,受邀主持 QCon大会的一个专题。这是InfoQ首次在上海召开QCon。我负责的专题是「知名网站案例分析」。专题内容包括Twitter、一号店、京东以及阿里巴巴国际站的技术分享。在这个专题中,我们可以看到网站架构的变迁、性能的优化、用户体验的设计、热点技术的应用等等,抽丝剥茧、逐层展现,欢迎现场观摩。

专题出品之外,我还会在QCon期间参与一场类似阿里嘉年华的夜聊节目,据悉这次夜聊活动免费开放。更多的信息,及新闻,大家可以查阅QCon的官网www.qconshanghai.com,并关注他们的微信公众号:【infoqchina】,上次没聊成的,可以这次聚聚。

昨日黑莓明日黄花

blackberry9000

今天看到一则消息,黑莓正式宣布裁员40%,将近4500人失去了在黑莓工作的机会。根据媒体报道,黑莓第二季度的营收仅为16亿美元,手中的现金只能维持16个月的光景,裁员是避免公司进一步下滑的措施之一。何去何从?已经是摆在黑莓桌面上的生死难题。

黑莓手机一度是智能手机的品牌代表,独特的全键盘用户体验和安全特性,让很多公司为他们的商业精英配备了黑莓手机,他们一边开会一边在黑莓上打字,拇指上下翻飞,一条条短信和邮件顺着手臂、拇指流到键盘和屏幕上,各种事务和业务在黑莓上流转,我曾经看到一位国外的媒体人员用黑莓手机敲敲打打写出了一篇新闻稿,长达几十屏,由于身边没有小伙伴,只好自己惊呆了。

黑莓手机成了个人电脑的有效补充,在智能手机界一时间谈笑有鸿儒,往来无白丁,高端大气不做他想。

如果这个世界上没有出现 iOS 和 Android,现在的黑莓一定风光无限。这个假想同样适用于坚硬的诺基亚和明媚的摩托罗拉。可惜2007年 iOS 伴随着 iPhone 横空出世,一年后 Android 问世。那时候这些手机巨头的想法是:

「现在我们一年要卖出好几百万台智能手机,苹果连一部都还没卖出去」
「技术上很难实现,他们的手机续航时间可能只能支持一天,有多少用户会购买这样的手机呢」
「他们试图把电脑塞进手机里,太可笑了」

现在的想法是:

「我们再也不是一家充满创新活力的公司」
「客观地说,iPhone 的出现让我们措手不及」
「他们赢了」

iPhone 从2007年起步,历时6年,时至今日,与 Android 一起横扫天下。历史为这些公司预留了足够的时间,但是非常遗憾,没有人去打开时间之门。

半冷半暖秋天,熨帖在你身边
静静看着流光飞舞
那风中一片片红叶,惹心中一片绵绵
半醉半醒之间,再忍笑眼千千

今日依然流光飞舞,但是昨日黑莓,可能已是明日黄花。(附图是我曾经用过的黑莓9000,希望这个品牌能够重新崛起)


昨天的微信文章发送之后,不到凌晨,《MacTalk·人生元编程》已经重回多看书城的畅销榜榜首,感谢大家。
豆瓣阅读排行下降的比较厉害,喜欢豆瓣的读者可以点赞一下。

没有赞助,购书也是支持!

多看:http://www.duokan.com/mactalk·人生元编程/b/40930

豆瓣:http://read.douban.com/ebook/1531222/

认知世界——MacTalk 豆瓣版本上线

MacTalk封面2

今天《MacTalk·人生元编程》的电子版在豆瓣阅读正式上线了!让人感动的是还没卖几本就被推荐到豆瓣阅读的首页袅,眼泪哗哗的流……

豆瓣是我非常喜欢的一个互联网公司——尽管他们这次联系我比较晚:-(,在国内你几乎找不到和豆瓣类似的公司,也许有萌芽中的?反正俺没发现过。清新和独特基本上就是豆瓣的商标和特质,比如豆瓣为 Mac 君设计的封面,也是清新到令人发指,无欲无求!他们从社区起步,拓展了很多产品线,我其中最喜欢的就是豆瓣阅读,我是最早期用户之一,在豆瓣购买了付费作品 几十 篇,大概花了几百元。不过我个人感觉豆瓣产品线过多,也导致了每个产品投入的不均衡,比如豆瓣阅读 App,早期清新淡雅的风格和操作体验独树一帜,但是后续的更新和迭代频率就比较缓慢,并没有特别出彩的体验跟进。

豆瓣可能已经意识到了这一点,开始做自己的排版引擎,最近发布的iPhone 版本已经有很大的改进,iPad 据说已经被塞进小黑屋测试袅(md 我盼了那么多年的 Pad版改字体大小功能终于要来了我容易吗?)。

在这次 MacTalk 第一辑出版的过程中,豆瓣和我联系的比较晚,不过效率很高,9月2日提交原始稿件,9月9日上线,端的是唯快不破,而且豆瓣阅读最大的优势是支持 Web 阅读器(前端技术很强哦,大家可以去感受一下),你可以在 iOS、Android、Web 上阅读,同步进度。对于那些喜欢在 PC 或 Mac 上读东西的朋友来说,应该算利好消息。

喜欢豆瓣的童靴,可以去豆瓣阅读的首页购买:http://read.douban.com (大家写写书评凑个人气先)
喜欢多看的童靴,可以去多看阅读的首页购买:http://www.duokan.com
今天多看的版本已经更新了,请到 App 中下载更新精校版:)

MacTalk都在最显眼的地方,由于该书的封面是由各出版方独立设计的,大家可以看到,各有各的风格。

软文结束,最近 Mac 君写软文写的手都有点软了!但是请组织放心,后续的文章会像诺基亚一样:硬,很硬,非常硬!


以前写过三个问题:我是谁,从哪里来,到哪里去。有人说「我是唐三藏,来自东土大唐,去往西天取经!」这台词不错,可惜不是人人能用。不管你是什么人,只要常常思考和自省,那就不可避免的在某个阶段会想这些问题,可能是30岁,亦或是40岁。

年轻人很少考虑这个问题,那是因为他们没见过生死离别,不知道岁月轮转,总以为自己有用不完的时间和日子,仿佛每天站在泰山之巅阳光之下肆意生长,但时间总会越过越紧巴,总有一天你会觉得,自己时间不够用了!我常常想,如果人在深夜睡眠的同时能够完成阅读和学习就好了。于我而言,就能洞悉更多人性和计算机的奥秘,于他人来说,可能各有各的收获,至于这些收获是否能换成银元,没人知道,也不需要关心。

最近和朋友讨论问题,再次谈到了人类作为个体存在的终极目标,我想可能就是寻找自我和认知世界。由于认知的边界永远是无限的,所以我们的恐慌和孤独感永远存在,并相伴一生。但这并不妨碍我们在踏进一扇门之后,不断的去探求另一扇窗的奥秘。比如在编码之余,写写 MacTalk,读读百年孤独。

哲学、科技、人性,这些都是我想探寻的东西,这些物件要么随着人类历史长河起起伏伏,要么隐匿在山涧的溪流之下,只要留意,总所收获。

祝各位读书愉快!