聊聊开发效率与挑战

先说一下近况。前天跟一老朋友聊起我现在的工作,在他看来像我这种在外企呆过多年的人去私企工作,肯定会发展的很好。一般人都会这么认为,外企管理科学,做事儿流程规范,带着这样的先进的经验去私企,肯定能大展宏图。其实这种想法也没有什么错,只是忽略了两个前提而已,一个是这个私企的人员职业素质也能达到外企的平均水平;二是私企的老板有一颗宽大无私的心,能从谏如流,能与时俱进。这两个条件缺一不可,不然外企的那一套在私企很难行得通。这是我这段时间最深切的体会。

这半年以来一直有一个项目,由于各种缘由进度总是不尽如意。除了从开发人员的技能高低来寻找原因以外,我再次对Java Web开发的效率产生了怀疑。目前主流的开发框架,Spirng+SpringMVC+MyBatis基本能搭建起任何规模的企业应用,这些东西的存在本身就是为了减少开发人员的重复工作量(少造轮子),提高开发效率的,但我仍旧觉得这些东西太重了。这三个东西叠加起来,学习成本偏高,新人至少需要半个月左右的时间才能掌握基本开发技能,一个月左右才能达到熟练。另外关于这些框架的资料网上泛滥,如果对基本概念理解不深,靠模仿(或者抄袭)来快速开发的话很容易上手,但是也很容易掉进各种各样的坑,如果缺少高手指点,靠自己来从不同的坑里爬起来也比较耗时。这些框架规定好了不同功能的代码需要写在不同的地方,为了写好一个http请求链路,从jsp到数据库请求总共需要在jsp、controller、service、dao层以及model层等至少五个层次添加相应的代码,太复杂太耗体力了,动不动少写一句而牵动全身。这些都是框架本身的优势,但也是它的限制。当在多人协作一起开发的时候,不同的人负责不同的层次的代码,框架的优势很明显;但是当一个人负责一个功能模块,需要从头写到尾的时候,框架就成了限制。最近我有尝试用ruby+sinatra+redis来写一个短址服务,深刻体会到ruby的高效以及java的臃肿。为了解决同样的问题,ruby的功能代码没有超过100行,如果用java,1000行都不止,不敢想象。谢谢ruby程序,让我找回了久违的写代码的快感。

最近同时在进行的工作就是在阅读每个人的代码,我尝试着找到一些不好的例子来解释“为什么某某人开发效率这么低”,我这么做并不是为了找茬,而是为了让大家互相学习,共同提高代码质量,提高开发效率。我打算结合业界对java这么语言的看法,好好总结一下“为什么java开发效率高不起来”,做一个内部分享,算是当作2013年最后一件为团队做的好事儿吧。

到年底了,又到了该总结该展望的时候了。我对公司对团队最大的期望就是各种业务发展越来越快,让我们的系统越来越复杂,这样我遇到的技术挑战会越来越多,我就能在不断的迎接这些挑战中成长。如今已经过了三十岁了,还谈“成长”或许不太合适,改成“积攒”比较好。长时间的积攒是为了下一次的爆发,活到老学到老,没有最强只有更强。

 

团队沟通的基本原则

前段时间,团队里面有个别人的表现遭到了很多人的不满,主要是因为他做事儿不太守时,任务延时了还会找各种各样的借口来推脱责任。和他在一起做项目的人都很不开心,当然项目进度也拖后了三分之一。仔细分析整个项目组成员之间 的问题,我发觉问题出在了沟通上面。goutong

一来由于特殊原因,出需求的人不愿意出电子文档;二来做UI的人给不出带各种状态的界面,三来前端人员在无法深刻理解需求的基础上就开工了,最后后端人员就糊里糊涂的把东西做出来了。最终结果就是做出来的东西不是最初大家想要的,然后就开始了各种调整,各种拖延。由于最终交付结果的是后端工程师,所以大家都把主要责任推到了他的头上。这就是前面所说的“各种不满”。

出需求的人是我们的部门经理,职业生涯就不愿意出电子版的需求文档,只愿意“手绘+手写”,我们无法改变这一点。而做UI的人说已经尽力了,其实她可以做的更好,但是由于第一步就不正常了,我也很难要求更多。开发人员是唯一我能控制的资源。我想到破这个局的办法就是,要求前端开发人员在做出静态页面以后,反过来和出需求的人以及UI设计师一起审核一次,在他们三个达成一致意见之前后端人员不介入页面开发。这个方法从新的项目开始实施,目前已经初见成效。

在思考这个问题的时候,我想起以前看过的一篇文章,讲得是团队沟通的原则。是一个老外写的,我把他翻译过来,并加入自己的理解,摘录在下面。我觉得这个原则非常的适用,我在上周的项目例会上向每个人都强调了这个原则,大家都表示愿意在以后的工作中慢慢采用。

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

如果你是在我领导的团队里,有几个额外的事情我要告诉你。 继续阅读 »

学会包容

最近公司的主项目进入了稳定期,团队的主力大部分精力都花在了让系统更加稳定的运行。业务数据日渐完整丰富,我们需要根据各部门的需要制作一些小工具,来帮助他们从不同的侧面来阅读业务数据。在这里我要大赞特赞一下我们的主力开发工程师YDW同学,在能做好基本的业务开发的同时还写得一手漂亮的存储过程和触发器,很多复杂的业务逻辑在数据库层就直接做掉了,大大降低了业务代码的复杂度(虽然现在业务代码也挺复杂的),开发效率非常高。因为他的存在才使得项目进度没有出现严重的delay。以致于我在接下来写招聘开发人员的要求的时候,基本上是以他的能力为模板,降低或者拔高几个等级而已。

之所以扯到招聘这事儿上来,是因为最近有个事儿一直很困扰着我。在团队成立初期,出于项目进度的压力,招人的时候有点“饥不择食”(或许说成判断失误更加准确),现在团队里面有一小部分人员的能力没有满足预期,处理问题的能力以及编程功底都不是很符合我的要求。但是由于项目的原因我不可能淘汰他们。一开始我只能手把手的教他们,或者安排人与他们结对编程,然后就是一而再再而三地告诉他们要好学,多看点书。时间长了,我发觉编程这种事儿,靠教是不太可能教的好的,需要多磨练,需要自己领悟。然后我就开始以身作则,写出相对质量较高的模板或者规范,让他们来模仿。我期望他们能在模仿的过程中渐渐领悟编程的魅力,并提高解决问题的能力。

说到了这个点儿,我发觉我比以前更加有包容心了。之前在外企,我感觉人人都是被磨得亮蹭蹭的螺丝钉,工作的前提是假设大部分人都是专业的,做事儿是靠谱的。然后偶尔碰到要和一两个不靠谱的人做事儿,我就会很焦躁,眼里容不得其他人做事儿不符合要求。哪怕是我的直接领导,在发现他在某些方面做得不够好的时候我都是直言相谏。而如今,轮到自己带团队的时候,以我的性格,我除了会以身作则,做事儿认真敬业以外,我还会要求团队里面所有人做事儿都是认真敬业的,绝对不能出现能力不济而又敷衍了事的人。但是事实证明,十个指头有长短,人和人之间还是有差距的。你不可能以自己的要求来过分的要求别人,每个人的职位不一样,职责不一样,职业规划不一样,事业心不一样,生活压力也不一样,别人的行为模式必定有他的原因,你想改变他们实在太难了。只能通过团队氛围来引导他们,通过项目进度来约束他们。我需要以职业的姿态来包容他们在项目进行的过程中犯下的种种失误,并耐心的劝导他们。

这对我来说,是一种磨练。

新工作五个月总结

人的惰性是会生长的,每次想写点什么的时候一想到这里很久没更新了,那一丝冲动就会慢慢消逝掉。反复思量之下我觉得还是有必要强迫自己经常写点什么,都三十岁的人了,每天的工作和生活难免会遇到一些有意思的人和事儿,会有一些小情愫值得深入思考。思考过后是需要通过文字来沉淀的,不然就成了胡思乱想。

进入现在这家公司已经五个半月了。总体来讲这五个半月,我过得非常充实,工作幸福感超强。我现在的角色是项目经理兼架构师。在大公司这两个角色是不太可能重叠的,但在我们这个小公司,一切皆有可能。目前整个IT部门有10个人,其中所有的开发人员都是我亲自面试招聘进来的,他们做事儿都挺靠谱,除了个别人的技术能力稍微低于预期,工作效率不够高以外。作为项目经理,我主要负责项目进度的控制,开发任务的分配以及团队跟其他业务部门的沟通。作为架构师,我需要负责三个产品线的技术选型,程序架构的通用性和可扩展性。并承担了大部分技术难点问题的攻克,新技术的研究与实践。在过去的六年的工作经历,我从来没有感觉像现在这样这么“被需要”,也从来没有料想到我可以承担如此重要的角色,可以做如此多的事情。工作上的成就感不言而喻。目前整个团队气氛融洽,每个人都会自觉地完成任务,项目进度也处于可控的状态。

接下来我的工作职责会发生一些变化,总体上会往我自认为更加专业的方向发展。从项目经理的角度来讲,我需要提高项目规划的能力。目前的项目进度,跟项目初期的规划来比已经落后了将近一个半月。在项目的初期我严重低估了需求的复杂性,直接导致对领导承诺的时间不靠谱,让团队长期处于进度的高压之下,最后通过赶工情况才稍微有所好转。从架构师的角度来讲,接下来我要开始制定团队的开发规范了。目前所有项目的代码量都处于野蛮的增长期,出于时间压力我们没有做过任何的代码审核,代码规范也都只是存在于口头约定当中。我知道这样将会留下很多的坑(更准确的说是bug),将来会为此付出沉重的代价。规范这东西,定的越早将来的收益就会越大。另外一块就是要做好内部各应用之间的解耦,抽取和封装公共组件,在应用稳定运行的前提下提高程序的执行性能,并最终达到提高硬件的利用率的目的。

以后这个博客不光要记录我在生活中的一些思考,还要记录我在技术上的积累,在项目管理经历上的经验总结。我始终坚信,写文章是一个能让人不断升华的好方法。

 

不畏改变

今天是我在道富工作的最后一天,两个小时以后这台电脑就会被上交。此时此刻,我是如此的依依不舍,舍不得这里的朋友,舍不得这里的氛围,舍不得这里那么人性化的工作环境。道富真的是一家很伟大的公司,他有再多的不足也难掩他拥有200多年历史,无比辉煌无比伟大的光环。想说再见不容易,所有的变化都会在心头留下一个口子,在道富工作的五年无疑是我人生到目前为止最宝贵的经历,我不愿将其封存,不愿让其发酵。我要让其无限美化,升华,我要让全世界的人知道,我是从道富出来的,是道富培养了我。

依托于道富这家外资银行的背景,我的人生计划中30岁之前该干的人生大事儿基本上都干成了。 买房、成家、买车,我甚至觉得有点愧疚于这家公司。我经常在反省,我从公司得到了那么多,我有没有回报给公司足够的汗水呢?我只是奉献了自己黄金的五年时光,出此之外我是否有给公司留下点什么呢?我很难回答这个问题。

世态无常,人生需变。在一个地方呆久了人就会变得麻木,我想在我彻底变得麻木之前挪一挪。不是为了钱,而是为了激情。我甚至不敢说是为了梦想,因为这玩意儿太虚了,我从来就没有拿捏住我的梦想到底是什么。我只是想找到一个地方,一个可以让我自由发挥,可以让我承担更多、历练更多的地方。都已经是三十岁的人了,我需要更多的东西来充实我的人生,哪怕是挫折也好。

四月一号,也就是下个礼拜一,我就要去新公司报到了。即将铺面而来的是未知的挑战,我将会以一颗无畏的心来迎接这一切。以不变应万变,不变的是我处事不惊的心态,变化的未知的世界!

 

菜鸟学管理之二 关于细节和做决定

去老大那里提交辞呈了。

这是10天之前的事儿了,和老大“促膝长谈”了将近一个半小时。有些东西从老大的嘴里说出来,感觉很不一样。或许是因为他在我的心里份量比较重,亦或许是因为他的一些观念和我的原来所想的很不一样。那些东西一直在我的脑海里激荡着,我生怕过不了几天就会淡忘,所以想在这里用文字记录下来,权当反刍。730014842

一个是关于细节管理。这里的细节不是指关注工作成果的细节,而是指在团队管理的过程中,Leader如何做到对下属工作内容的细致的跟踪而又不会让他产生反感的情绪。从我自己的经历来看,如果我的领导对我的工作的关注的过于细节,我会比较懊恼。我会觉得这是领导对我不信任的表现,甚至会觉得领导的控制欲望过于强烈而自己又没有自由发挥的空间。相反如果跟踪不够细致,比如只关注工作的进度和表面状态,那样又会显得领导不够负责,那样项目会有失控的风险。如何在这两个极端之间寻找一种平衡,一直是让我非常困惑的问题。我把这个问题抛向老大,期望他能告诉我他的经验。老大一语道破了这两种极端背后的问题,那就是信任感的问题。从来就没有一种放至天下四海皆准的方法论,针对不同的人应该采取不同的策略。所依据的标准是你和他之间的信任程度。对于非常信任的下属,跟踪起来很省心,不存在要或不要检查细节的问题。如果非要归纳出一个最佳的工作方式,那就是在信任感建立的过程中,至少在合作的初期,是需要做好细节跟踪的。而对于已经互相信任的下属,在项目的关键点或者高风险的阶段仍旧是需要跟踪到细节。不过话说回来,人是一种善变的动物,信任感是一种很虚幻的东西,在具体操作的过程中还是会出现拿捏不好尺度的问题。最后我的结论是,在小团队里面(10人以下)可以根据信任程度的不同制定因人而异的工作跟踪方案,而对于大的团队,可以放权让下面的人分组管理,分组汇报,这个时候“检查一线工作人员的工作细节”是非常顾忌的。不管团队规模如何,控制欲望太强的领导总会是一个让人很反感的领导。

一个是关于如何做决定。 继续阅读 »

菜鸟学管理

最近在学习PMP的知识。发觉这么多年的工作经验里面,只有一开始从学校毕业在电信工作的两年时间里接触过完整的项目流程。在那里能亲切的体会到招标的忐忑,需求分析的复杂,开发的紧迫以及项目验收的喜悦。而在目前这家银行工作,项目战线被拉的很长,项目相关人员过于分散,我们只是作为项目环节中唯一的一部分出现(只负责开发,有点感觉是外包),对项目的感觉很模糊。很多时候一个项目结束了我们却不知道,直到有人跟我们说有项目的Spot Award申请到了才有所察觉。我猜测这也是为什么我一直没有项目成就感的原因。

这次系统的学习项目管理的知识,一来是为了系统的梳理一下自己的项目管理知识,二来想在业余时间找点有价值的事情来做。大家都说管理的精髓在于管人,这句话的背后却蕴含着千千万万的知识体系。没有扎实的理论知识作为基础,无法做到真正有效沟通,也就无法有效解决团队(人)的问题。

最近这段时间在公司的cloud部门带队做历史项目的评估,发觉这活儿完全不是开发人员能做的。我每天需要跟大量的角色人员(各个职能组以及项目owner)交流,每天使用最多的是PPT和excel。偶尔打开开发工具却只是为了分析代码的架构和区分难易程度,完全没有了那种写代码实现某种功能的快感。曾几何时,我傻傻的认为技术人员转管理角色,技术能力退化的速度是可以控制的。现在看来实在是太天真了。想要做管理,首先要管好自己。要想管好自己,得先要管好自己的时间。而管理者的时间是非常碎片化的,跟写代码做研究需要大片大片的时间格格不入。所以说,一旦转变了岗位,技术能力想不退步会很难。

好在加班不严重,每天下班以后以及周末我都有大片的时间来研究自己感兴趣的技术。我只所以不愿意放弃对技术的关注,是因为我不想在将来有一天,被人说成“不懂技术的管理者”。在我们这个行业,不懂技术空谈管理,很难让人信服,也就很难和开发人员打好关系,沟通起来会有障碍,管理的效果会大打折扣。

 

代码的抽象三原则

一直以来我都觉得一个码农的架构能力的好坏,就是看他的抽象能力和概括能力是否强悍。今天看到阮一峰的一篇博客,他把代码的抽象三原则写的很透彻。特记录如此。

原文链接:http://www.ruanyifeng.com/blog/2013/01/abstraction_principles.html

所谓”抽象化”,就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。

第一个原则:DRY:Don’t repeat yourself

第二个原则:YAGNI:You aren’t gonna need it

第三个原则:Rule Of Three

 

iPad只是一个仅供玩乐工具

简称玩具。

我花了很久才接受这个事实,也终于下定决心要戒一戒这个玩具了。

也许有狠多人会说,ipad可以用来学习。我不否认这一点,但是学习一定要用ipad吗,中国人看了上千年的书,看纸质文字的效果绝对不会比看屏幕差。撑死在ipad上能装一些软件来辅助学习而已,比如说像“拓词”这种背单词的软件。但是不能否认的是,ipad上能让人分心的东西太多了,几乎所有的社交软件你都有装,一会儿一个消息一会儿一个微博提醒,能看电影看直播,能看新闻看杂志,真的很难做到完全屏蔽那些东西而只去看看电子书。即使能静下心来看看电子书,ipad也还不够自由能让你随时做记录,或者随意翻阅到你想去的地方。所以总的说来,ipad并不是一个很适合用来学习的阅读工具。至于视频,那可以说是它唯一的长处了,一些公开课或者讲座,经常听真的很能让人进步,但是也有一个通病,声音的东西很难有沉淀。

ipad只能用来消遣时间。至于消遣的时候干什么,无所谓。认清这个事实以后我打算每天花在iPad上的时间不能超过两个小时。这两个小时里面至少包括每天半个小时以上的背单词的时间。我在ipad上能干的事儿无非就是收发邮件,看新闻,看微博,QQ,这些事儿都可以用零碎的时间来做,比如马桶时间和泡脚的时间。偶尔看看电影除外,坚决不能玩游戏。

最近打算找朱光潜的一些书来读读,我太浮躁了,不知这是否是长期没有激情的生活后的情绪的一种反弹。希望朱光潜的文字能让我静下来。

无题。

将近一个半月没有更新这里了,惭愧。

人一旦忙起来了就不会经常胡思乱想了。以前动不动就能写出上千字的东西,最近却不行,因为现在每天花在工作上的精力比以前大多了。同样是做一些很没有成就感的事情,仅仅是因为现在的领导给我画了一个看起来很不错的饼,我就浑身充满了能量,每天精神抖擞的干活,干活,一直干活。可想而知以前的领导是多么不知道鼓励员工,以前的我是多么的渴望被鼓励。现在这种久违的充实,有点类似于久旱逢甘露的感觉。

业余用Ruby做了一个小工具,是用来同步公司个人电脑和备份服务器上的文件的。 现在我对Ruby的感觉非常好,和java比起来,她是如此的高效和优雅。就好比两个人在打架,一个人拿着双截棍,另外一个人拿着绣花针,还没开始打外人就能从气势上判定输赢了。我用不足300行的ruby脚本就轻而易举的实现了目录递归分析、多线程异步传输、日志分析与归档、文件checksum对比等功能,如果改用java,保守估计“5个class+1000行代码”以上。这个工具的第一版本已经开发完成并供小部分同事使用了,反馈效果还不错。下一版本打算把网络流量控制加上,因为有人提出如果多个人同事同步,会导致备份服务器不堪重负。另外性能的瓶颈是在文件checksum的过程中,这一步暂时还没有想到如何优化。

最近去看了两场评价很高的电影,《寒战》和《上年派的奇幻漂流》。无一例外的是每次看完这个电影都觉得很精彩,但每次不能理解透彻导演的深意。在看完一些精彩的影评之后都有再次杀到电影院再看一遍的冲动。不知道是自己越来越傻了,还是因为这些杰出的导演(说成编剧或许更加合理)都懂得讳莫如深,在剧中铺开的种种线索需要人仔细回味才能串联起来。

 

You are not that important.

最近在筹备婚礼,关于“邀请朋友”的问题折磨了我很久,估计会一直持续到婚礼当天。因为直到婚礼开始前的那一刻,随时都会有朋友打电话过来说不参加了。

请客而客人不来,无疑是主人的人际关系上的莫大失败。而我又是一个特别容易患得患失的人,对于我比较在意的朋友的缺席,我会苦恼很久。

婚礼上的客人,除了亲人和挚友,占大多数的是同学和同事。这两部分的宾客的数量和层次直接体现了新郎新娘的社会关系的质量。我们是双方都是外地人,目前也没有“官居要职”,所以来参加我们婚礼的人,基本上都是在生活或者工作上有直接交集的人。这部分人很少,所以我们注定无法举办一个轰轰烈烈、热闹非凡的婚礼。

“The world is not there to please you. It’s up to you to please the world.”

最影响我心情的客人是那些该来而不来的同事。由于我毕业以来只在两家公司供职过,一家是国企一家是外企。之前在国企里面送红包喝喜酒的风气盛行,我在职的期间参加过不少。如今四年多过去了,维持在那个公司的人际关系也基本上就是那些需要“还红包的人”,除了一两个偶尔会有电话业务往来。“还红包的人”缺席的可能性最大,因为他们可以找人捎带。现在就职的这家外企,同事间的喜事不提倡请客吃酒。我是外地人,所以破例邀请了平时工作接触比较多的那帮人。这帮人碍于情面出席的可能性比较大,有缺席可能的是那些已经结过婚但没办过酒席的人。另外所谓的一些“领导”也有可能会缺席,毕竟他们“比一般人要忙”,他们不来你也不好意思强求,他们自己也不会觉得尴尬:“我来是给你情面,不来那是因为你资质不够”。好吧,我知道并不是所以领导都是这么想的,权且当我以无耻的小人之心度他们的君子之腹。 继续阅读 »

国庆小思

首先得给自己减减压。定下“每日一思”的目标太过宏伟,深知自己就不是这么一个能持之以恒的人。更何况,每日的小情绪很多,而值得用博客来表达的却很少。说到底,我就不是那种思想深刻的人。

这个国庆节,看着各大景点被挤爆的新闻,我很欣慰自己决定留守杭州。在家看看书,听听音乐,打打球,然后带着家人吃吃大餐,唱唱KTV,爬爬小山。既达到了休息放松的目的,又陶冶了我小情操。培养了家庭感情,又有回报父母带来的快感。所以说,这个国庆节,我过得很充实惬意。

我这个人最害怕是孤独和无聊。严格意义上来来说我更害怕无聊。孤独是相对的,是内心深处的感受,跟是不是一个人独处没关系。我能处理好自己和自己的关系。我一个人的时候我能找到取悦自己的方式。而无聊就不一样了。无聊的时候脑袋空空,无所事事,我整个人会因为空虚而感到焦躁不安。或许无聊是表象,内心空虚才是真实的。我经常反思,人为什么会无聊呢?我想大概是因为生活没有目标吧。说近点,是工作和生活没有清晰的奋斗目标;说远点,是人生没有理想,连短期的理想都没有。所以,想要不无聊,就必须找点有意义的事情来做。这个事情最好需要持之以恒的投入并最终达成某种目标。到目前为止,我能找到的这样的事情就是看书了。 继续阅读 »

每日一思:面试反思

今天下午我接到了上海一家公司的电话面试。结果很不理想,我倍受打击。

电话中面试官问了很多JAVA的基础知识,而我却有很多回答不上来。我这才意识到我已经很久没有写java代码了,不光是java代码,其他语言的代码也很久没写了。我都不好意思称自己是开发人员了。

如果是因为管理而耽误了写代码还情有可原,但是目前我很少参与项目管理。到底是什么原因造成了我目前的这种困窘呢?我需要深刻反省。

首先跟分工有关。自从进入目前这个公司,我就一直被分配去做Apama相关的项目,期间有用Java做过一些辅助性的工作。这几年我写的最多的是Apama平台的MonitorScript,其次是各种各样的脚本。我的大量时间都花在了众多Apama项目维护和项目交流上了。至于JAVA,所做的工作也是写一些借口,应用场景不多,遇到的挑战真的很少。如果说我能在某方面称为专家的话,那就是Apama专家了。而现如今Apama平台基本上被公司战略放弃了,我这几年的积累即将面临着无用武之地。分工如此,我能怪我的领导分工不合适吗?不能,进入这个项目组是我自己的选择,要怪也只能怪自己眼光不佳。

其次跟我自己的定位有关。我从来就没有把自己定位为一位专业的开发人员,所以就不会花大量的精力去磨练自己的技能。每次遇到技术难题,借助于经验或者google我能很快地把问题解决了,没有追本溯源的习惯。所以到目前的结果就是,我的技术积累不够深。这也间接说明我从来没有遇到足够多足够深的难题。记得自己业余在制作波菜网期间,曾经遇到过很多问题,但大多数是关于服务器,关于一些软件的应用问题,解决那些问题只会拓宽我的知识面,并不能增加我的知识深度。
继续阅读 »

每日一思:灰尘中的生活

上个周末去医院做检查,做了一个食道CT平扫。最终结果是食道没问题,肺有轻微发炎。我甚是诧异,我不咳嗽,不哮喘,不吐痰,没有任何症状。作为一个不吸烟人士,我对检查结果深表怀疑。结果医生说了一句,“机器是不会撒谎的”。我当场无语,任由医生开出一堆肺部消炎的药来。

仔细想想,肺出现问题并非空穴来风。很有可能是跟灰尘有关。

由于房子买在了杭州的郊区,而且还是处于一个国道、绕城高速、省道汇聚的地方。家门口正好横躺着一条省道,来往的工程车,大货车很多。除非下雨,这条道上永远都是尘土飞扬。我们的房子并非紧邻道路,但还是有所影响。家里的桌子,地板隔不了几天就会积上一层薄薄的灰尘。卧室的窗子几乎从不打开,房间里也没有放置空气过滤器。我想,这或许会对我和爱人的健康有所影响,与我的肺部发炎不无关系。

上下班加上接送老婆,我每天要在高楼大厦间穿梭将近50公里。在买车之前,我一直在用自行车或电动车代步。这之间的路程,有一大半是淹没在在灰尘和尾气当中。偶尔我会带带口罩。这样的日子大约持续了一年。去年八月份的时候我们买车了。刚开始开车的时候不习惯使用内循环,只要不是太热或者太冷,基本都是开着车窗在兜风。这无疑也是增加了我在灰尘中暴露的时间。

杭州的气候条件本来就不好,加上车辆数量爆炸性的增长,空气质量只会一天一天的变得糟糕。唯独有一个可歌可颂的西湖,想呼吸一点新鲜空气的话必须去景区里面。我们的身体本来没有这么脆弱,那些看不见看得见的灰尘和尾气不会给人带来致命的伤害。但是时间一长,身体就会起反应了。就像癌症绝对不是一口气吃出来的一样。

我写出这些并非显得我有多么娇贵,毕竟相对比那些每天在马路、工地上工作的人来说,我算是过着“上层”的生活,绝对轮不到我来抱怨。更何况我每天都不是绿色出行,也是灰尘和尾气的制造者之一。但是,每个人都有自己的生活轨迹,生活质量孰好孰坏不是简单地对比就能显现出来。他们的痛苦你无法理解,他们的幸福你也无法分享。同样的物质条件,不同的生活习惯定会带来不同的生活质量。然而,这个世界上根本就不存在“相同的物质条件”或者“相同的体质”,只有不同的人,过着不一样的生活。

每天尘来尘往,日子就这么灰蒙蒙的过着。

 

 

每日一思:我眼中的抗日

从今天开始,在博客上启动“每日一思”分栏。记录每天思考最多的问题。如果哪天我没写,那就说明那天我是在浑噩度日,无所思,无长进。

昨天几个同事相约去西湖边的茅家埠喝茶打牌。我载着其中四人,一路上被“抗日游行”引起的交通管制措施给折腾得极度郁闷,从早上9点到中午12点多,走走停停,期间堵车时间长达2个小时。最终在玉皇山我们弃车而逃,选择徒步进入西湖景区。

杭州的“抗日游行”活动据说是比较文明的,没有出现打砸抢烧的现象。交通管制是到目前为止唯一影响到我的生活的地方。在极度郁闷之下我发出了种种抱怨。真心觉得,游行是多余的,简直就是劳民伤财。我不支持,不参与。

在徒步进入景区的途中,我横穿了整个游行队伍。几千号人,期间夹杂着一半是穿蓝色制服的,算上便衣,真正参加游行的人只有一小部分。

很多人都是被鼓动来参加的,不清楚参加这种活动目的如何。钓鱼岛归属哪国,跟你的生活半点关系都没有。看到其他城市打砸抢烧的事件频发,我已经无力吐槽了。愚民政策到目前最成功的地方莫过于,抛开道德观念不讲,这帮盲目听从指挥的人已经失去了辨别是非的能力。加上各大新闻平台,电视频道对整个事件选择临时性失聪,他们根本就没有途径来知道事情的来龙去脉。微博上的大V们苦苦号召,他们却无法看到。因为他们属于那层连微博账号都没有,连互联网是怎么回事儿都不知道的人。

明天是918纪念日,估计会有更疯狂,更可悲的事情发生。真心不希望看到再有人受到“残害”。

比价只是第一步

上周开始的京东大战苏美的好戏仍在持续。这场腥风血雨的战争最终结果尚未知晓,但不论结果如何,etao肯定是赚足了眼球。etao的核心功能是购物搜索,最大亮点就是比价。对于价格战来说,她无疑就是一面魔镜,能照出各大平台的真真假假。

etao的出现,无疑是为了解决一个日益严重的网络购物问题:选择困难。各大电商的网站越做越复杂,产品类库越来越庞大,同质化现象非常严重,哪怕是仅在一家平台上购物都会出现选择困难的问题,何况是多个平台多个商家。为了能买到放心的东西,我不知道是比较同一件商品的不同卖家好,还是比较不同卖家提供的同一款商品好。尽管各自的平台在导航、搜索、排序等功能上下足了功夫,但做出一个购物决策却越来越困难。最终下单的商品很有可能不是价格最便宜的,而是最放心,最省事儿的。

我现在已经很少很少直接去淘宝买东西了,去的最多的是一号店,其次是京东,再其次是天猫。除非这三个地方都找不到满意的,才会再去淘宝搜索一下。原因很简单,前面两个平台的商品正品率比较高,加上货到付款的确方便不少。我相信这不是我一个人的选择,我不止一次的问过身边很多跟我收入差不多生活档次也差不多的同事和朋友,他们的回答也大致如此。虽然这个结论不具有普遍性,但真的能说明一些问题。从价格上来讲,C2C的商品肯定是最便宜的。但无疑C2C的商品也是最没有质量保证,下单最不方便的地方。记得以前有人统计过,平均价格在200左右(以内)的商品最适合放在网上来销售。200块能买到什么呢?都是一些生活用品,很有可能是一次性购买多种商品,这在C2C淘宝上,是很难在一家店买齐的。所以就火了一号店和京东,淘宝也推出天猫超市。 继续阅读 »

如何防止网站关键数据被人恶意采集

昨天晚上花了几个小时用Jsoup写了一个网站采集器,帮一个高中同学采集了一个工业信息门户上的芯片待售信息。网站上显示的数据多达60w+条, 我写的程序跑了7个小时只采集了一半,算是可以交差了。

这已经是我第二次写这种采集器了。之前在做波菜网的时候,写过一个更复杂的。当时网站上线以后苦于没有原生态的内容,我就写了一个采集器从“百度身边”采集各大城市的餐馆和菜品信息,并通过google地图的接口获取餐馆的地理位置,然后转存到我们自己的网站上。

我必须承认,做这些事儿都是不光彩的,属于不劳而获,弄不好还得背上法律责任。但是在国内这个互联网的环境下,这种小规模的数据采集想上升到法律层面去禁止,还是不切实际的。那么从一个网站的开发或者运营的角度,如何来防范别人的恶意采集呢?如何做到在防范的同时又不影响搜索引擎的蜘蛛的采集工作呢?

从我个人的采集经验来看,我觉得这种防御可以从两个方面着手。

  1. 服务器端的配置。至少可以通过防火墙来屏蔽某些ip的高频率访问,或者在web服务器设置规则来禁止关键页面被某些ip高频请求。也可以先通过防火墙设置预警机制,一旦发现异常立即通知web服务器采取屏蔽措施。不管是专业的采集器还是像我的这种纯代码级别的采集,最基本的原理就是模拟用户浏览网站行为,发送http请求到网站的server,然后解析返回的结果。出于效率起见这种采集行为都有几个共同的特点。一是发出请求的ip地址比较固定,二是请求的频率比较稳定,三是访问的页面也比较固定。防火墙的设置可以基于前面两个特征,web服务器的过滤规则可以基于后面两个特征。当然这些措施只是从物理层面的防御,放不了真正的高手。我在我的采集器里面实现的多线程采集,就会把采集频率用随机时间来控制,也就是发送采集请求的频率是随机的,有可能是3秒钟一次,有可能是2秒钟一次。另外如果我是黑客,我可以发动多个ip的肉机来发送请求。总之一句话,服务器上的防御,防得了君子,防不了高级的小人,但是有总比没有好。
  2. 代码级别的防御。采集器可以模拟浏览器大部分的行为,但是肯定有模仿不到的地方。比如说带参数的ajax请求。从我的经验来看,你至少可以在通过以下三种方式来优化你的代码,以防止恶意采集。 继续阅读 »

充实的印度之行

二十天的印度Chennai之行已经圆满结束。这是一次终生难忘的经历!

这次出差,主要目的是向印度的一家公司传授Apama基础知识,并详细介绍我们在Apama平台上已经有的项目。由于我是以甲方的身份去的,他们对我的接待异常的友好热情,让我在这个物质贫乏,卫生条件槽糕的城市没有感受到丝毫的不舒服。也可能是因为这个原因,我对印度人民的态度有了很大的改变。

去之前,我们都习惯性的称呼他们为“阿三”,似乎有一种“看不起”的味道。回来以后我会经常劝说同事们,请不要看不起印度人民,请尊重他们。他们的心态比我们平和,他们过的比我们幸福 — 不仅仅是因为他们生活在一个有信仰的国家。

信仰,对于我们来说是一个如此遥远、不切实际却又如此重要的东西。在印度,普通人民的物质生活水平相当落后,城市里面各种基础设施要么匮乏要么陈旧不堪。但是我仍旧能从他们的脸上频繁地看到满足的笑容,从他们的眼中看到真诚的善良。他们中大部分人都认为,人这一辈子,生下来是为了受苦的,死后就才会走向极乐世界。于是我发现他们在日常生活中,非常能够忍受“各种不如意”,他们认为这是在吃苦,是一种修炼。也正是因为如此,在印度,我见到了在国内从没见过的,最豪华最热闹的葬礼。他们对陌生人的预设是善良的,大街上随便拉一个人都能侃上半天,路边行走的时候只要有目光接触就会有点头微笑。各种服务人员,工作的时候都很认真细致。尤其是烈日下的保安,细致到让人觉得不可思议,让人觉得他们都是在享受自己的工作;停车哪怕再偏僻也不用担心有人敲开车窗来抢劫;在任何地方买东西,都可以很方便的拿到发票(他们叫收据);一个普通的司机就能供养一个四口之家,而且两个孩子都可以上私立小学;能见到 的“Made in India” 要比舶来品便宜许多;无论多么出名的电影,票价都不会超过一顿饭钱(120卢比,换成人民币不到20块),包括3D;放映任何电影,中场都会有15分钟的休息时间。等等这些都能说明,在我们国家一些很难见到的美好的东西,在他们这里都已经成了常态。我相信以上的种种,仅仅用信仰是解释不了全部的。 继续阅读 »

要么奋斗,要么修行,要么去死

2012年5月15日晚,八点整,我在新浪微博写了这么一句话。

在等老婆下班,心情无比低落。这句话是突然从我的脑海中蹦出来的,说出来以后感觉很畅快。说出来之前丝毫没有考虑它是否符合逻辑,是否过于武断。

自从波菜网停止开发和运营以后,我整个人感觉被掏空了。心里没有了固定的羁绊,脑袋瓜里没有了随时随刻都需要思考的问题,整个人变得很轻,生活变得索然无味。每天下班回家以后打开电脑都不知道要干嘛,看完微博看新闻,看完了新闻继续看微博,无聊,烦。

我想这正是“失败”的后遗症。人们都说失败乃成功之母。我想说的是,失败之后必然会有一个凤凰涅槃的过程。这个过程,何其熬人。我尝试过去反思和总结,为什么我们会走到如此地步,客观原因和主观原因是什么。内容有很多很多,却不愿一字一字地写出来。因为想到的多半是痛苦与无奈,写作的过程无疑是在咀嚼这种痛苦。

我发现最近一段时间,自己很难安静下来做好某一件事,哪怕半个小时也不行,除了开车。心中无时无刻不停留着两个词:不甘心和无助。不甘心项目就这么被终结,有些后悔做出这么草率决定;无助是因为看不到希望,心里其实很明白继续下去早晚也是死亡的事儿。每天就这么纠结着。
继续阅读 »

美食LBS,只是看起来很诱人

波菜网已经停止运营三个星期了。截止到2012年4月16日,网站的总UV是4373,PV是21341。尽管目前网站还能访问,偶尔还有人来注册,但是整个网站的的数据已经很久没有更新了,没有UGC,很少有回访用户。在我们团队的心里,这个产品已经被判死刑。

“美食LBS”,“随时随地分享美食”,“基于地理位置的美食推荐”等这些看起来前景无限的点子,想做好做出名堂来,实属不易。先来讲讲客观原因。

1> 大众点评,口碑网数据丰富,已经深入人心。我曾经很多次的问过身边的朋友,以及一些特殊场合下的陌生人,你们都是通过什么方式来找吃饭的地方的?大部分人的第一反应就是点评网和口碑网。最直接的回答就是,“我有口碑卡,所以我只从口碑网上去寻找,因为可以打折,哪怕只是95折”。然后我会追问,你们的手机上有装过什么客户端来定位身边的餐馆吗?他们的回答才稍微有些变化,大部分人是说通过各种团购网的客户端来找团购的套餐,其中点评的客户端居多,几乎每个人都安装了。有一部分人说最近有一个“食神摇一摇”挺好玩的,但是推荐不够多,不够准确。从他们的回答可以看出,点评网和口碑网以其巨大的数据优势和用户群体,在这个市场上独占鳌头,其他应用很难望其项背。百度身边,QQ美食等巨头们的产品,也是惨淡经营,网易最近推出的“网易饭饭”,却陷入偷窃点评网餐饮数据的囹圄。说到底,这类应用,谁拥有线下数据谁就是王。 继续阅读 »