Do not program "defensively"
September 25th, 2007
(From Erlang Programming Rules )
A defensive program is one where the programmer does not “trust” the input data to the part of the system they are programming. In general one should not test input data to functions for correctness. Most of the code in the system should be written with the assumption that the input data to the function in question is correct. Only a small part of the code should actually perform any checking of the data. This is usually done when data “enters” the system for the first time, once data has been checked as it enters the system it should thereafter be assumed correct.
Example:
%% Args: Option is all|normal
get_server_usage_info(Option, AsciiPid) ->
Pid = list_to_pid(AsciiPid),
case Option of
all -> get_all_info(Pid);
normal -> get_normal_info(Pid)
end.
The function will crash if Option neither normal nor all, and it should do that. The caller is responsible for supplying correct input.
琐碎的伟大
September 24th, 2007
Alexey告诉我,在德国的RailsConf Europe大会上,很多人对我们说“谢谢”,谢谢我们做出了那么好用的production stack。Alexey说,我们肯定是干了些了不起的事情。
整整一年没联系的S,原来去了奥组委工作。仍然是编辑出版的工作,S也说,最初的激动过去以后,日常工作还是很琐碎的。
事情就是这样的吧。事后看起来很了不起的工作,正经在做的时候,也都是些很琐碎的小破事。唯一的区别是,它事后看起来是了不起的。
结论是,即便仍然是在做着琐碎的小破事,也希望它们是了不起的工作中的一部分。
RubyWorks近况很好,将来会更好
September 15th, 2007
经过一番调整之后,CruiseControl.rb的网站又回来了,顺便host了Ruby on Rails的持续集成。这次用了一个CentOS 5的服务器,用RubyWorks Production Stack做部署环境。自己的狗食自己吃,自己的产品自己用。在下周的RailsConf Europe 2007上,我们的CC.rb、Production Stack和JRubyWorks都会亮相。这就是我们RubyWorks团队取得的阶段性成果。
不过,当负责宣传推广的同事去参加RailsConf Europe的时候,我就已经从这个项目中roll out了。至少在可预见的将来,我的角色将从RubyWorks的核心开发者变成热心的开源参与者之一。这就是控球后卫的姿态,运球推进到前场,晃开防守找到空档,把球传给位置最好的队友让他得分,自己转身投入防守。
不过说真的,但愿很快能再进入一个Ruby项目……昨天和dreamhead聊天的时候瞎扯了一句:你知道为什么以前的程序员总是想做几年技术就转为做管理吗?因为他们用C++编程太没乐趣了。
对冲基金那些事
September 12th, 2007
iTechTag:声望创造价值
September 1st, 2007
以前在JavaEye的一个讨论里,有位同志说“简历嘛,大家都知道,肯定是有水分的”。于是我在另一个blog里说到,简历里唯一有意义的,就是工作经历。认真回想一下,我在看应聘者的简历时,也基本上不看基本信息、自我评价之类的,只看工作经历:做过什么项目,用过什么技术,比说什么“熟练”、“精通”要有意义得多。我的期望、我的评估、整个后续的面试过程都是围绕着工作经历来展开的。
求职者的工作经历,这份信息对于潜在雇主有价值。但这份价值在求职者自己身上实现了多少?作为软件开发者,不妨问问自己:还有谁记得你几年前完成的那些“不可能的任务”?还有谁记得你通宵加班为项目做出的贡献?还有谁记得客户和领导曾给你的赞扬?有多少求贤若渴的潜在雇主想要知道你曾经那些了不起的成就,却无从获取这些信息?那么这份信息的价值去了哪里?我们把工作经历告诉了谁?是的,我们把工作经历写在简历里,把简历放在了招聘网站;而招聘网站把我们的简历锁起来,把我们的工作经历信息卖给潜在雇主。我们的工作经历,去给招聘网站创造价值了。
并非所有行业都是这样的。就拿电影来说吧,除了导演和演员以外,一部好电影离不开无数的幕后英雄:灯光、音乐、武指、剪辑……不过这些幕后英雄并没有因为身处幕后而被埋没,他们的名字出现在影片的演职员表里,展现在所有观众的眼前。当大导演想要拍下一部大影片时,他立即就能想到自己喜欢哪部影片里的配乐,然后立即就能找出这个配乐的人。幕后英雄们的每一段工作经历不仅给自己带来收入,还积累成为自己的声望,为自己打开了未来的门。
iTechTag的目标就是让软件开发者的工作经历真正成为自己的声望,让声望给我们自己创造价值。我们希望记录下自己辛勤工作的成果,并与他人分享我们的骄傲。我们希望让别人知道我们掌握什么技能、参与过什么项目、帮助过什么客户、做出过什么贡献。我们希望让自己、让同事、让朋友、让所有关注我们的人有机会了解:我们是多么优秀的软件开发者。
把这样一朵“技能云”贴在自己的blog旁边,向所有人炫耀自己的强大技能和丰富经验,让自己的声望开始发挥价值。这就是iTechTag想要给你的。




