Archive for the ‘ 胡言乱语 ’ Category

如果可以穿越,我想对年少的自己说:

勿有比较之心

这个环境,早早地向你灌输“人中龙凤”、“人上之人”的观念,仿佛人生的唯一目的就是要攀援一个等级,而成功的唯一途径便是将他人踏在脚下。权势与财富是唯一的衡量。

 

有一天,你会问自己,为什么来到这世上,所求为何?人生百年,似有一段光景,然比日月星辰、沧海桑田,实如蝼蚁,白驹过隙。人生所向,不过死得其所,求得内心安宁。

 

然纵渺小,你定也不甘心来这世界白走一趟,你定然想见识见识这种种之美。

想见识星宙斗转的自然之力,在苍穹的一角,仅这一颗小小星球上的千奇壮美已令你痴然。你不会“人定胜天”,而会充溢朝圣的心情,想用脚丈量大地、用心聆听安宁。

想见识千万年来人类文明的足迹,这个孤独的、智慧的、高傲的,狂躁的、愚蠢的、野蛮的种族,它走过了怎样的一条道路。因为,那是你来的地方,也将是你去的方向。历史透过尘埃在你面前呈现,而你也将化作尘埃组成历史。

 

终于,你在自然与历史的洪流中洗去了纤尘,变得温和谦恭。你爱悯地看着这个世界,在美与绝望之间,不再想只当一个旁观者。跟随你的心,去做点什么,你就没有白过。也许,你所选之道,已不同于环境的熏陶,你知道,那已不再重要。在广袤的时空间,人类有多样的价值,却没有唯一的“成功”。多样与不确定正是生命美与尊严之所。

 

你将不会后悔,因为你不仅曾经来过,而且清醒地活着;你体验了美,而且努力创造了美。

 

 

优秀是一种习惯,珍惜时光、重在实作

你在时间的无涯的罅隙中寻找到了一个渺小的人类存在的价值,你在生命独特的尊严的鼓舞下树立了前行的方向。你定然想做到更好,那么,请将自己从过往的缅怀、未来的畅想和当下的忧虑中释放开来,重要的,是迈出你的步伐。把想法变为行动,把行动做到优雅,让优雅成为习惯。

 

 

任何煎熬,待你挺过去之后,都将成为一种荣耀

不断的挑战,使你的生命变得丰满。不要倒下,因为待你挺过去之后,任何煎熬都将成为一种荣耀。这锤炼的是你的胸怀,使你装得下更大的未来。

用户:如何判断某网站程序员是不是傻逼(关于密码)

Update:这篇日志用的戏谑的语气,严谨地说来,当然不一定是程序员的责任,比如历史遗留、领导的要求、业务需要、进度限制等等⋯。即使是程序员自己的问题,如果只是经验不足,而非主观故意,也应该是可以理解的,毕竟谁没有年轻的时候呢。日志中用了“傻逼”这个词,有些人看得比较严肃,颇有些不满,在此致歉了 ^_^ 。

——

虽然最近很忙,但我发现负荷高了大脑会罢工,正经事想不进去⋯。于是乎,写篇休闲科普文章吧。:)

 

那啥,CSDN 600 万用户密码刚泄完,天涯网又泄露了 4000 万用户的密码出来。看起来像是有组织、有预谋的,越来越热闹了~。前面一篇日志,我从开发/设计者的角度,记录了几条实践要求,怎样保护用户密码才靠谱

 

那么,对于普通用户来说,如何判断一个网站的技术靠不靠谱?有没有什么现象,是不需要懂任何技术,只要你发现了,就可以对这个网站露出鄙夷的神情,骂它傻逼的?试着总结几条(只谈跟密码有关的):

  • 如果一个网站,能够通过邮箱、手机、安全问题等,找回密码,那它就是傻逼。这里注意“找回密码”和“重置密码”的区别,“找回密码”是把你原来的密码原样告诉你;“重置密码”不告诉你原来的密码,但是经过可靠的验证后允许输入一个新密码。前者是傻逼,后者不是。
  • 如果一个网站,要求密码不能超过多少个字符,或者不能包含特殊字符,那它就是傻逼。密码字符个数,有下限要求的,是好人;有上限要求的,是傻逼。
  • 如果一个网站,密码不区分大小写,是傻逼。
  • 如果一个网站,改密码的时候不先验证老密码,是傻逼。
  • 如果一个网站,登陆时不使用 HTTPS,是傻逼。这个不一定,有可能程序员不傻逼,老板是傻逼。。。
  • 如果一个网站,改密码后不要求重新登陆,很可能是傻逼。这个非绝对,只对允许一个账号同时多处登陆的网站有效(即使这样也非绝对傻逼)。总之,对允许一个账号同时多处登陆的网站来说,改密码后要求重新登陆的,是一般人;不要求重新登陆的,有可能是 SB,也有可能是 NB(但是 SB 的比例很高,NB 的比例很低,所以可以默认是傻逼⋯)。

 

好吧,一时半会就想到这么几条。欢迎补充 :) 。

 

豆瓣数据存疑

Update:
感谢 Ratooykjingleptoqwhiplus 等网友的提醒,之前提的两个问题都有了答案。:-)

1、豆瓣用户量突然飙升,是因为 QQ 空间的“豆瓣读书” app;

2、Wayback Machine 抓取网站的存档之后,不会立即显示,貌似要一年以上历史。

另外,我后来看了下,其实豆瓣的用户都有个数字编号,从用户的编号和注册时间就可以得出准确的数据(第一位用户的编号是 1000001,所以用户数等于用户编号减掉 100w,不考虑被封杀和自杀的情况)。

下面是完整的数据图形:

douban

可以看到,09 年 8 月开始的那一跳……。最高时,一个月新增了 900 多万,相当于它前 4 年总和的 2.5 倍多。

不过我们也看到,一年之后,已经开始恢复正常了。这大概是 QQ 空间输血能力的上限了吧。

最后,我随机测试了一些,QQ 空间给豆瓣输送的用户基本都是无效的,没有任何活动。

(Update 完)


今天统计了一下豆瓣的注册用户数。因为豆瓣有在首页显示相关数据的习惯,所以这个统计显得比较简单(假设数据是准确的)。

翻开 Wayback Machine,可以看到,豆瓣最早在首页显示用户量的记录是 06 年 11 月 2 日

以下即是我根据这上面的数据绘的图:

douban

很可惜,Wayback Machine 对豆瓣的最后一次存档是 09 年 6 月 30 日,之后就没有了。不知道是豆瓣的 robots.txt 禁止了抓取(看了一下,似乎没有),还是 Wayback Machine 自身的原因。

上图的数据看起来中规中矩,没什么奇特。不过,我们看它的总注册用户量,最后一条记录显示,当时豆瓣的用户数刚刚达到 350 万。那是 09 年 6 月末,那么,今天豆瓣标称的用户数是多少?—— 4713 万。

加上这条,图立马变形。

douban

05 年到 09 年,四年多,350万;

然后 2010 年,一年半,4713 万,13 倍。

虽然我没太关注,但似乎豆瓣近一年来没搞过什么大的营销推广;反倒是因为审查严格,很多用户自杀了帐号。13 倍的数据有点惊讶,不知道是不是我哪搞错了。

“国产”“双核”浏览器是个好东西

Update: 新增了“世界之窗”浏览器的测试结果。

作为一名亲美不爱国人士、一名技术至上的 Geek,我大脑里的信息接收系统,向来对国产的 IT 产品自动选择性过滤。

不巧的是,这一年多来我不得不时常思考 Web 产品运营的问题,“因特网探险家6”像梦魇一样折磨着我……。当你瞅着 HTML5 激动不已的时候,IE6 会让你的汽泄得瘪瘪的。。。别以为 HTML5 只是 Flash 杀手,它有着许多许多现代 Web 开发不可或缺的特性,即使 IE8 也比它的六哥强太多了!

那么,我们怎么办?期待盗版 Windows XP 一夜之间消失,IE6 寿终正寝吗?恐怕只是一厢情愿吧。这个时候我想到,“国产”“双核”浏览器是唯一可能在短期内改变大局的“人物”!

所谓“双核”浏览器,就是在 IE 的 Trident 内核外,再集成一个 WebKit 内核。部分网站用 Trident 内核渲染,另外一部分用 WebKit 渲染。试想,如果这些浏览器默认使用 WebKit 内核,岂非是帮助在国内市场瞬间普及了 WebKit?这是何等激动人心呐!

据称,360 浏览器在国内的市场份额约达 20%。我想,新的 Web 产品已经不得不考虑对它的兼容性,也即考虑对 WebKit 的兼容性,也即使用标准技术。当新的网站大多按标准行事时,对 Trident 的需求将越来越少,越来越多的浏览器会默认使用 WebKit。这是一个正反馈。

以下是我这个勇敢的小白得出的测试数据(按市场份额排序):

浏览器名称 主流版本 双核版本 是否默认 WebKit
360 3.5 4.0
搜狗 2.2 2.2
QQ 4.8 5.0 beta3
遨游 2.5 3.0
世界之窗 3.3 4.0

目前的情形,各浏览器(除搜狗外)的双核版本都还处于怂恿、造势阶段,都还没有成为默认的主流版本。而搜狗,虽然已经默认双核版本了,但并没有默认 WebKit。

当各国产浏览器默认了双核版本,且双核版本默认了 WebKit 内核。“因特网探险家6”带给我的梦魇将有希望结束。当然,它结束的不只是我,而是这个时代 Web 开发者的痛苦。这是 360 们给自己树碑立传的机会,期待看到他们的作为。

“SNS”和“微博”——理念相克,试图揉合可能适得其反

SNS 和 Microblog 都已不是新鲜话题了,但有一个势头,SNS 想整合微博、微博想整合 SNS,我认为这不是好主意,可能会适得其反。

 

SNS 是什么?是关系,是加好友。七大姑八大姨、同学发小、客户伙伴……总之,你认识的人都得加上。毕竟,亲戚朋友多总是好事。

Microblog 是什么?是获取信息的途径。用来关注那些可能并不认识,但他们说的话使你感兴趣,能给你带来信息、思考或知识的人。

于是,冲突产生了:

  • SNS 应该鼓励实名化,微博随便匿名;
  • SNS 双向确认好友关系,微博应该单向关注;
  • SNS 鼓励多加好友、只要是认识的人;微博推荐物以类聚,不介意事先是否认识;
  • ……

 

拿 Twitter 这个显而易见的例子,如果我的某个发小在上面,我可能不会 fo 他。原因很简单,经过多年的各自发展,也许我们感情仍然很好,但隔行如隔山,我们可能很难有共同话题了。他发的他们那个行业很有意思的段子,可能我会觉得索然无味。上推是为了看一些有意思、对口味的信息,所以我不 fo 他。

那么,另外一个例子——豆瓣。它的社区应该是 Facebook 型的还是 Twitter 型的?设想一下,因为你在豆瓣把你的姑姑姨姨们加为了好友,某天你想买本 IT 书籍的时候,豆瓣会向你推荐某某菜谱;某天你想欣赏科幻电影的时候,它向你推荐xx韩剧;……是何感触?所以豆瓣的社区也应该是 Twitter 型的(大概一两年前,豆瓣有一个改版,似乎没经受住 Facebook 的诱惑,在原有的“关注”基础上,又增加了个加好友的功能。当时我相当讨厌,就离它远了点,后来的某个时刻,发现这个功能又被砍掉了,幸甚!)。

 

总结起来,凡是你想从所关注的人中获取有效信息的,或者系统根据所关注的人,通过算法自动向用户推荐有价值信息的,都应该是微博型的社区。而 SNS 适合生活化的东西,我觉得。

 

后记:刚发过一条推:

前几年,我订阅了很多互联网大佬的博客,带着崇敬的心情探头阅读这个行业。最近,我了解了一下大佬们的动向,发现他们主导的产品都关门鸟~。互联网跟体育一样,评论员当不好运动员。我还当不了评论员,努力成为一名运动员ing,嗯~!
http://twitter.com/wcm/status/8904614644551680

唔,敲自己脑袋,不要评论,要运动! @_@

工作日志:我们不是一个人在战斗

按:
这是在公司内部社区写的。本意是为同事而写,但我想,它也正好记录了我自己的认识。所以,以后若有类似不涉及公司、产品及同事隐私的日志,也会将其记录在我的个人日志里。

月度总结会议提纲:

一、时机
1、v1.0 发布、v1.5 15 天时间、业务接踵而至;
2、团队磨合,有进步、还有陋习,不能就此停滞。

 

二、追求卓越,拒绝平庸
1、基础并不好,自知自省,努力;
2、更新换代,有机会超越;
3、再也不是单打独斗的年代,比得是团队凝聚力、战斗力。

 

三、We Are One
0:我们不是又一个混日子的团队

1:友好、尊重、相互着想
宽容、存大志,不要小心眼;
审视行为习惯,是否会无意中给他人造成伤害/误会。

2:主动性、全局观、责任感
整个系统都与我有关,贡献创意、发现问题;
参与、决策,not 螺丝钉;
视野 -> 思考 -> 积淀 -> 施展。

3:自我激励、团队价值
像大海一样清洁环境,不像污染源一样毒害团队。

 

四、We Could Be Better
1:技术
兴趣、执着、好奇心,不服输、成就感、自豪感……;
内驱力,积淀技术、锻炼能力、创造自我价值。需要被监督的人是可耻的!

2:效率
工作方式,自省、总结;
慵懒、分心的时候,告诉自己——时光正在无情地流逝。

3:产品 & 需求
技术不是玩具,它的目标是产品;
若搞错了方向,更快的速度只使南辕北辙得更远,认真对待需求;
为产品更优秀而激动,非为多一个工作任务而抵触。

 

五、男儿心胸,志在千里
1、卓越的技术、优秀的产品;
2、可能,创造新天地;
3、上层建筑,需要物质基础,我的职责我深知;
4、价值 -> 回报;not 回报 -> 价值。

工作日志:高筑墙、广积粮,练好内功最重要

按:
这是在公司内部社区写的。本意是为别人而写,但我想,它也正好记录了我自己的认识。所以,以后若有类似不涉及公司、产品及同事隐私的日志,也会将其记录在我的个人日志里。

Hello Everybody,

我一直在思考两个问题:
对于个人,我们的技术如何更快地成长?同样的技术能力,如何才能工作生活得更有效率?
对于团队,如何才能更有效地沟通、协作?如何形成舒适的工作氛围?如何达到能力互补,具备强大的整体战斗力?

每当观察到一个相关的现象,我都会把它记下来,待到下周一时与大家分享。可是,看到大家那么严肃的样子,我又反思自己是不是说得太过份了……。

我想,不如我换一种做法,把它写下来吧。恰巧现在是我们年中总结的时机,那么,就从这次开始。

下面是随机记录的一些事情,没有多大的逻辑关系,也不一定是正确的,只是我一时的想法,和大家共勉。:-)

————————————————————————————

珍惜时间:
并不是说大家不珍惜时间,相反,都很努力。我只是感叹时间真的太宝贵。在学校的时候,我们常说青春、青春易逝,那个时候只是在无病呻吟;如今,像是真的能看见时光在眼前流逝。一晃之间,一个星期就没了,一个月也没了,不小心就到了年底。好在我们还没有七老八十,还有一丝资本可供挣扎,我愿与大家共勉:不徒费了光阴,努力使它过得有点意义。倒不是说,要大家多加班,努力工作自然是好事,工作之外有意义的事情也是好的。譬如,钻研跟工作关系不大的技术,或是提高提高自己人文方面的修养。重要的是,我们是清醒的,并且是高效的!

对自己的作品负责:
实话说,这是我对大家不太满意的地方,特别是两位新同事。你们已经转正了,我希望你们在学校或者别的地方养成的敷衍的习惯,能够到此终止。
一件事情交给我们,我们就要对它负全责。首先思考,应该采用什么方法,有多少种可能,它们的优缺点是什么,怎么选择。考虑了,拿不定主意,那只是经验的欠缺;但如果什么都不想,就等着别人来给我们画好条条框框,那就太没有追求了。
特别是,做完的东西,自己要把好关。这个作品,它代表了你的态度品味、技术水平,你自己是否满意?举个明显的例子:代码评论那个,难道开发完了,不会自己试一下的!?要知道,我是真心地相信它完成了,实实在在地在使用,并不是来做边界测试挑刺的,结果第一次用就出了问题。类似这样,我拿到手里随便看一下就发现无数问题的例子太多了……。
我们是一个靠谱的团队,这是得到公司其他部门认可的。我希望,靠谱的人不要做出不靠谱的事来;更希望,这个靠谱,不是经过我加工出来的。每个人,他的作品直接拿出去,都应该是自豪的、经得起推敲的。

细节的讲究:
我看到很多重复的、无意义的 commit log,有人可以解释一下你为什么这么懒吗?我看到有文件名是 js.js、css.css,请问,取个有意义的名字真的这么难吗!?不光如此,也包括目录名、类名、方法名,以及很多其它的细节。将各种细节问题揭示给大家,确是我的职责,但我更希望大家自己能有发现这些细节的眼光。

学习借鉴、拓展视角:
有时候,我们做的东西在公司内部或者市场上已经有可借鉴的案例。大家不妨多参考一下。当然,并不是说看得越多越好,重要的是我们看的时候要有思考。先要有自己的构思,在构思的过程中,就可能会对产品的概念、特点、设计、实现技术、实现形式等等产生疑问。带着我们的疑问去看案例,才能“内行看门道”,否则只是流于浮表,看了也白看。对于案例中与我们想法不一致的地方,应该思考它为什么这样设计/实现,哪种方式更优。以及案例整体的逻辑结构、用户体验等等,是否合理,是否有改进的余地。
另外,有的产品会在宣传中声称“遵循国际xxx标准,实现国内yyy规范”。我想,应该有这个敏锐,第一步就是去搜这所谓的标准、规范到底是个什么东西(如果还不知道的话),它针对的是什么行业、试图解决什么问题、大概概念是什么、有什么启发、是否适合我们、是否要具体跟进……。这对拓 宽我们的视角是很有帮助的。

抽象能力、把握全局:
作为一名程序员,如果搞不懂某项具体的技术,自然是很不爽。但我们也很容易陷入技术的细节当中,以致只见树木不见森林。抽象能力,是我们应该自我训练的重要能力。除了基本的对事物的抽象,还有对复杂系统提纲挈领的理解。了解一个软件产品,我们首先需要了解它对用户意味着什么、具备什么功能;然后,从技术架构上,大体上分为几个部分。有了大的概念之后,再进一步深入技术细节。这样,系统总体上是什么样子、我们当前处于哪一步,在脑海中就有一个清晰的印象。

主动反馈:
有的同事,好像从来不曾主动向我反馈过他的工作状态。你现在在做什么?有什么进展?遇到了什么问题?……。我已经在工作流程和其它地方强调过多次了,我的职责要求我知道整个团队现在处于什么状态。告诉我一下工作进展,没那么难吧?你不说,我只好去问了。其实我不想问的,我不想给大家太大压力。下回,当你觉得我老逼问你,很讨厌的时候,请反思一下,你是不是太久没让我知道你的进展了。我觉得 leask 同志有时候做得很好,吃饭的时候简单交流两句,即交流了工作,又有了闲聊的谈资。工作中有数不清的细节,如果靠一个人,一个个去检查,会累死人。希望大家在自己的工作责任范围内,做到主动反馈,给我留点时间做别的事情。

积极讨论,踊跃发言:
头脑风暴的时候,就是要随便说,想到什么说什么,大家不用那么严肃。。。平时多思考、多积累,当你有了自认为很好的想法的时候,就会自信很多。有时候就算是不太合适的方法,说不定也能启发别人的思路呢。我的经验,我经常会在讨论中蹦出不错的想法,这些想法并不是讨论之前准备的,而是在讨论中受了别人的启发。

不是搞定一项技术,而是解决一个问题:
解决方案,用来满足用户需求的一个方案,说白了,就是解决一个问题的方法。技术,都是试图用来解决具体问题的,当我们面对技术迷雾的时候,不妨问自己一句:我要解决什么问题?这并不一定是纯业务的,技术上也一样。
比如我们前段日子搞 NBGit,其实 NBGit 并非我们的目标,我们真正的需求,是建立一套规范合理、简单好用的 Git 工作流程。有了这个概念以后就知道,我们不能简单地宣布 NBGit 不好用,放弃之,我们必须得寻找到一个好用的方案。NBGit 的作者若遇到问题,需要跟它死磕到底,直至觉得无法解决,放弃项目,终止;寻找 Git 工作流程解决之道的人,只要发现有更好的办法,马上可以放弃 NBGit,放弃之后也并非像前者一样,是任务的终止,他需要确定新的方法。
我知道,搞技术的人,对所谓的业务、解决方案都很头疼,觉得拐弯抹角,不直截了当。这是另外一种看问题的角度,习惯之后,我们就能从另外一个角度看到另外一种风景。也会发现,跟非技术人员交流,变得简单了很多~。

不要未加工的资料:
有时候,我需要大家帮忙调查、对比一些技术/工具,可是结果有时有点无语,是原生生地从 Google 抄下来的资料。我自己不会搜么?优秀的做法,是认真去看这些资料,看明白咯,搞懂咯,写出你的理解。它们各自有什么优势、劣势,建议采取哪个方案,为什么,它的优点有多大的意义,缺点应该怎么避免……?

理清逻辑,找到问题的根源:
同事之间多讨论是好事情,更好的,是我们在讨论之前先把问题想明白。有时候,我们把同事叫过来,却又说不清楚自己的问题。最好,在讨论之前,先自己跟自己对话,或者假设桌上的笔筒是你的小听众。把问题的逻辑搞清楚,我要做什么?做了什么?怎么做的?遇到了什么问题?有什么可行的方法?怎么选择?……若是问题太多、脑子太乱,就拿出纸笔把它写下来。
我想,我这些字大家很可能轻轻地一看而过。但是如果你没试过,我强烈地建议你试一试。我的感受,这个方法简单却很管用。很多时候自己跟自己一对话,逻辑清楚了,问题就随之解决了;有时候脑子里想不明白的问题,在纸上简单地写一下,结果就很明了。

总结 而非 汇报:
总结是为自己而做,沉下心来,安静地思考自己的成长。
有些同事,贴一段代码就算完成任务。代码,版本库里不是有么?重要的,是要解释清楚。假设你面前是一个完全没听过这个概念的人,整理好你的思路、说辞,要尽量让不懂的人看后觉得清晰明了。这样,我们写的东西对团队其他成员才有帮助。更重要的,是在这个过程中,理清楚自己的思路、加深对技术的认识。这对我们的逻辑概括能力、总结表达能力也都是很好的自我训练。

把工作安排得井然有序:
有时候,我给大家说的是一些比较大的任务,实际上可以细分成更具体的内容;或者,你自己在开发过程中又想到了很多的问题。光靠大脑是不够的,太多太乱太疲惫、丢这忘那。我建议大家在项目管理系统中记录下来,建一个任务,分派给自己。这样,有多少事情、状态怎么样,一目了然。当然,是记在 issue tracker 里,还是记在本子上,要看个人喜好,但是没有记录肯定是很容易出问题的。我个人,是把所有想到的事情记在 issue tracker 里(大家可以去围观),但把当前最重要的两三件事情记在本子上,摊在面前。

提问题、证实自己的想法:
老总说的听说读写几个方面,我觉得都很实在、很有道理。其它几个属于个人素养,需要自己慢慢悟。我觉得听这方面,提问题的方法,尤其有现实意义。我们已经出现过几次这种情况:我说的时候对方表示很好,做完了却发现不是我想要的。当你不太有把握的时候,不妨多问几个问题。是不是我理解的这样?几个问题下来,我们就能达到理解的一致,或者发现存在的误差。

注重积累,Wiki 是不断改进的:
我们的 Wiki 现在已经有了不少内容,但请不要觉得 Wiki 写完了就完成任务了,若是发现有可改进之处请毫不犹豫地更新!特别是在我们工作的过程中,重复处理 or 重复回答的问题,记在 Wiki 里沉淀下来也许是个不错的方法~。

愉快的心情、健康的身体:
我是个爱运动的人,可是安排得不太好,实际上运动很少,肩膀和腰都经常不舒服。大家好像比我更少运动,时间久了也会不舒服的。我有时候去游泳,完了之后觉得浑身通畅,像是小说里说的打通了任督二脉。建议大家,根据自己的爱好,做个规律的运动计划。共勉!:-)

记录的主要的内容终于写完了……,个别具体的事项再当面讨论。

stay hungry, stay foolish!

————————————————————————————

既然说是年中总结,我也总结一下自己半年来的主要工作

团队建设:
从人员的招聘到相互的了解,团队的风格,以及思考各个成员及团队整体的能力塑造。我的指导原则,是要以个人鲜明的影响力保证团队在一条正确的道路上快速前进;同时做到中庸与无为,即,在具体的工作中淡化个人的作用,给团队其他成员发挥能力的空间。

工作机制与工作流程:
我们工作的各个环节,基本上都形成了适当的机制。除了开发,其它像招聘时的面试、笔试、评价这样的行政工作,我也都总结出了通行合理的做法。使得第一遍做过的事,以后在此成果与经验基础之上,用少得多的时间即可完成。努力的目标,就是使我们的工作流程,在“最优的机制+最优的工具“的帮助之下,达到“优雅、高效、智能、惬意“。

需求理解与技术设计:
这指我们已有的三个产品。

广泛涉猎:
作为职责,我可以不进行具体的开发,但如果我对产品与相关技术没有整体的把握,则是失职。涉猎的内容,有的是与产品技术直接相关的,有的则是更底层的基础技术,或是大一点的概念如企业IT建设的方方面面,都是我关注的内容。技术之外,像需求、规范、设计等等也是涉猎的内容。视角的广度与深度,决定了决策的优劣。作为个人目标,我希望自己能做到:一手拿RFC、一手拿国家发展计划纲要;脑袋里构思出一套解决方案,一半想的是纲要里的战略需要、一半想的是RFC 里的技术实现。。。

总的来说,这半年来,虽然细节上做得还不尽完美,但实质上没有遇到大的挑战。所需的种种能力,都是自己多年来努力培养的目标。

————————————————————————————

我对自己不满意的地方,是整体的工作效率不够高,自己寻找原因

客观原因:
如身体、距离、设备等,不细述。

并发而琐碎的工作事项:
相对来说,以前主要还是搞技术,具体的技术,一沉进去就是数个小时。现在,更多的是一些小块的工作事项。频繁地在任务之间切换,一会是技术问题、一会是业务问题,以及一会思考团队、一会执行行政任务,适应起来还是有点问题,有时候把自己搞晕了,不知道在做什么。

偏重逻辑的思维方式:
有时候需要参考一些文章,类似企业IT战略、产品的介绍资料之类的。这样的文章往往写得十分的概念化,几年前初看这种文章时,我会感到非常气愤,觉得全是废话,直接说用到了什么技术、什么标准、什么工具不就得了吗?!现在好多了,能够平心静气地看下去,试图从中挖掘出一些有价值的观点、策略或技术。但有时候还是会头大。

行政工作:
行政工作耗费了我比想象中多很多的时间。除了必要或者不必要的往复交涉,以 Word 为核心的工作流也是一个原因。大部分同事交上来的资料,或者管理部发过来的模板,格式都不够好,而我又不希望从我手里出去的东西有太大的瑕疵。我以前不太用 MS Word 的,因为以上原因,不得不在页眉、行距、表格属性……以及各种疑难杂症上耗费了不少时间。希望我们的工作流产品完成之后,能先在自己公司成功部署。Web 化是我的目标,它不仅仅简化了表面的格式设置,也为数据的收集、搜索、统计等再利用提供了方便。

————————————————————————————

完了。感谢阅读(滚动到最后…)!

桌面 GNU/Linux 不仅仅是玩具

我想讲一个我自己的笑话 :-) 。

就在发本主题上一封邮件的时候,我也在升级系统,其中包括 ibus(我的系统 Debian sid/experimental, ibus 好像是从 1.2.0.20090723-1 到 1.2.0.20090806-1)。升级完后,我发现我输入不了汉字了。后来在 ibus-setup 中,找到了一个 “Use system keyboard layout setting” 的选项,选上,好了。

如果我把这个问题做一个 bug report,会被鄙视吧。确实,在这个问题上,ibus 没有 bug,可是这不应该是一个稳定版输入法的表现。

普通用户对于输入法的需求,就是随时随地在他/她需要的时候能打出字来。否则就写不了财报、写不了邮件、写不了合同……,就会严重影响他的工作,他就会打电话投诉服务商。如果服务商向他推荐的是 GNU/Linux 系统,他就会认为 GNU/Linux 系统打不了字,进而对此服务商心存疑虑(企业用户选择 GNU/Linux 作为办公环境,主要是信任服务商,而非单纯地认为 GNU/Linux 系统好用)。

我想,计算机系的同学对别的专业的知识不是样样精通吧。那么,我们也不能要求别的专业的用户花费大量时间,来学习计算机的知识。一个系统在他们眼里就是一个整体,他不会去分什么内核/桌面,甚至更多稀奇古怪的术语。如果 Firefox 出了问题,他们就会说 GNU/Linux 系统上不了网;如果 ibus 出了问题,他们就会说 GNU/Linux 系统打不了字。

用户关心的始终是自己的核心业务。我们推荐 GNU/Linux 时,从来都强调它很稳定、很安全,很简单、很好用。除了在服务端,在桌面端,GNU/Linux 系统也是 productive 的。对于普通用户来说,计算机是一个顺手的工具,时刻准备为你服务,而不是要你时不时地去伺候/配置一下。

希望这个笑话,可以让大家看到普通用户和开发社区的朋友看计算机的角度不太一样。在用户眼里,我们离稳定还有一些距离。如果说人手不够暂不考虑,自是合理,但希望稳定版是个方向。

GNU/Linux 不仅仅是一个可爱的玩具,它需要走向产品化,我们用自己的职业生涯努力促进这一进程。很多人反感“菜鸟”们来玷污他高深的玩具,但我想,一个真正认同自由软件理念的人,一定也是乐意分享、乐意看到自由软件发扬光大的。

从一个实际例子看Linux与Windows的哲学差异,及其影响下的用户心理

上一篇提到 GAppProxy,不妨说说我从中观察到的一个现象。

其实 GAppProxy 很早以前就挺好用了,但是一直有一个问题,就是很多时候会显示一个空白页面。显示空白的大部分都确实是不能访问的,并非 GAppProxy 搞错了。但是我对此很不爽,因为导致空白的原因是很多的。包括各种各样的异常没有catch,包括超出了 Google App Engine 平台的限制等等。它光显示一个空白,你根本不知道发生了什么。

前不久,我对它进行了各种边界测试,把能想到、能碰到的所有错误分类开来。然后在无法代理的时候,向用户浏览器显示一条信息。告诉用户现在是什么状况,具体是什么原因。dugang 也觉得这样很好,在我的基础上进一步细化了。然后,GAppProxy 1.0beta 发布了。

但是接下来的反馈有点出我意料。很多人说 GAppProxy 不能用了啊,怎么办啊?要知道,它以前输出空白的时候甚至没人反应过。

我有点纳闷:我不是解释得很清楚么,就那么一行字,您就不能看看?
后来我意识到,我们两都是典型的 Unix 的想法。就是认为,有问题你给它暴露出来,说明白咯、别藏着掖着。

但是用户有很多是 Windows 的用户。Windows 的一贯传统就是,把问题都藏起来,我们的用户是温室里的花朵,千万别让他们见到任何风雨。在这种风格的影响下,很多 Windows 的用户只要看见跳出一串英文就觉得很怕怕,根本不会去看它到底在说些什么。

其实,之所以有这么一串字符,是因为作者已经考虑到了这种情况。他既然已经考虑到了,自然会做最优的处理。这有什么好怕的。
反倒是那些出了问题也默不做声的,很可能是因为作者的逻辑出了问题,他根本没有考虑到这一点。还有什么比这更可怕的?

有时候我很想说:Don’t panic!

GNU 25周岁,生日快乐!

好久没更新了,感觉要学的东西太多,还没到总结的时候。:)

下面是刚刚发在哲思邮件列表的话,当是一次更新吧。

GNU生日快乐

—————————————————————————————————————————

争辩是最没有意思的事。
大部分的辩论不是为了证明真理,纯粹是为了打败别人保卫自己。

当私有软件横到我的面前,第一选择就是拒绝。

与其哭天喊娘请求别人开放自由,不如去做点实事。自己开发的东西,爱用什么协议用什么协议。
所以各位 idealist,最重要的还是努力提升自己的实力。当你成功了,俗人们自然会跟随而至。

这世界的主要组成部分,都是那些没有原则的人。他们会说,不自由又怎么样,不就是个软件么,又不是很了不起的事。尊严就是这样一步步地丧失的,就像那只温水里的青蛙。

我的想法是,自己的原则尽量坚持,旁人爱用什么用什么,你的自由关我什么事。

当然,这是很自私的想法。我做不到:
舍得放弃 MIT AI LAB 的工作;
一无所有、孤立一人的情况下宣布 GNU 这样庞大计划的气魄;
夜以继日、年复一年地 coding,不领一分工资、无视物质诱惑;
永远精力充沛、毫不厌倦地向各色人等宣讲自己的理念;
……
…………
所以,我敬佩他。这个世界正因为还有这样的理想主义者存在,才可能变得更加美好。
同时,我也感谢他,因为我正享受着 GNU 带给我的自由。

当然,不一定他提倡的所有的事都能做到,但做不到不代表不赞同。
譬如 Adobe Flash Player,有的人一边用着一边享受着被强插的快感。
但我使用它,更多地像是被监禁。Gnash 或是其它可替代的自由软件成熟之时,即是我越狱之时。我一点都不觉得处在这狱中是理所当然,并时刻准备着逃离它。
那一天,我会学着喊一句:Freedom!