这个周末就是我正式工作两年的日子了,第二年过得稍微有些起伏,晚上写了一点总结。但是刚才读了一下觉得不太满意,也不太合适发出来。这样,即将跨入三年级的时候,我就改改风格谈谈愿望吧。
1. 把日常工作做好,积累技术,流程,项目管理的经验
2. 业余时间拓展周边领域的知识:数据挖掘,数据分析,可视化方面
3. 希望能主导去做成一点有始有终的事情
4. 希望不久的将来能参与一个志同道合齐心协力(self-motivated)的团队一起做好一个产品
这个周末就是我正式工作两年的日子了,第二年过得稍微有些起伏,晚上写了一点总结。但是刚才读了一下觉得不太满意,也不太合适发出来。这样,即将跨入三年级的时候,我就改改风格谈谈愿望吧。
1. 把日常工作做好,积累技术,流程,项目管理的经验
2. 业余时间拓展周边领域的知识:数据挖掘,数据分析,可视化方面
3. 希望能主导去做成一点有始有终的事情
4. 希望不久的将来能参与一个志同道合齐心协力(self-motivated)的团队一起做好一个产品
最近有机会带着两个弟兄做一个老产品的技术改造。起因是测试发现产品的并发性很差,反馈回开发部门作下一个版本的改进。一查代码发现在网络通信时,原本异步的NIO,发送线程居然被强行加了wait同步等待远程返回。线程不能被释放,前端的请求被排队,吞吐量根本上不去。
这是root cause,其实进了代码里面的问题更多。于是产生了对这种feature driven development的怀疑。我曾经觉得列出 feature,做好代价估计,然后大家各自去实现的方式很理性很可控。如果宏观地看,黑盒地看,这种方式对项目管理很友好。但是最近看这种方式下开发出来的产品,问题还是很多的。当开发人员面对一个feature却缺少对产品整体架构的足够了解,他很容易倾向于用quick and dirty的方式\打补丁的方式解决问题,而忽略新feature对架构整体的挑战。长期下来,软件的功能不断演进,架构却停留在早期,维护成本越来越高,神秘的陷阱越来越多。这时,每次发布都要通过测试部门的蛮力测试,这个过程中除了修bug还要克服无数的invalid的bug。What the hell!!!
另一方面,从开发人员的角度,我认为Don’t repeat yourself是每个程序员必须牢记在心的编程行为准则。无论技术好坏,经验是否丰富,只要坚持这个原则,程序员总会趋向于做一些抽象做一些设计,我想是不会写出太让人发指的代码的。最近查看遗留代码,里面实在是太多copy/paste了。对新增的功能,甚至通过重载加copy/paste来实现。如果不能怀疑同事能力的话,只好认为这是工作态度问题了。管理者往往是不会看到这么细节的问题(其实是严重的问题)。
面对这样的系统,我最初的想法是通通推倒然后模块化。虽然考虑了工作量,可是尝试了一周还是发现老的基础根本无法剥离开,多年前的设计者根本就没有考虑模块化/解耦合的问题。有句话说得好: if you cannot split it, you cannot scale it. (对数据显而易见,对程序其实也一样)然而放弃这么大规模的久经考验的代码又不现实。这周开始又只好改变策略小步快跑,虽然不治本,但是就这个阶段来说,看到改造的效果对我们这个小组意义更大。这是在内心的洁癖和现实的局面间做的不难的取舍。
尽管困难重重,还是争取抓住这个机会能对自己有个提升。需要驱动弟兄们接受和实现自己的想法,和自个一个人闷头干是完全不同的。
Sound menu indicator was introduced in Ubuntu Maverick(10.10). User can control playback from this menu, and view current track information.
The control is based on mpris spec 2.0, which is a common specification of controlling media player with dbus. To enable sound menu support, media player should implement mpris 2.0, and register itself with libindicate.
So this week, I have been working on an exaile plugin to support sound menu and finally got a workable version.
The code repo can be found at github:
https://github.com/sunng87/Exaile-Soundmenu-Indicator
这周是加入新公司的第一周,一切从新开始。这已经是两年里的第三家公司了,这个嘛,哎,比较坎坷。
因为长得比较苍凉,工作的时间又不长,大家都问你是研究生毕业吧,心里估计还有几分揣摩:这位兄台肯定是越挫越勇,不弃不馁,复读多年的。否定答复后,大家还会觉得我可能比较坎坷,读书比较晚,最后还要追问一句是哪年的。得到答案心中一凉,87年的都长成这样了,岁月不饶人啊。其实我没那么显老吧。
公司的东西全部是封闭的,而且自成体系,所以基本上是从头开始了。封闭的副作用就是找人的成本比较高,反倒也促进了公司有完整的培训体系培训资料,新人入门也算是有章可循。周二的培训课程一下午三个小时,简直就是找回了大学上课的感觉。恰好会议室门口有个饮料机,一倒饮料就嗡嗡作响。这倒好,昏昏欲睡的时候,饮料机突然响了,有人说了打下课铃了,众人立刻精神百倍。原来上大学的时候下课就失眠的不只我一个。
如果说公司有什么的特点的话,就是杯具特别多。你不用带着杯子走来走去,每一层楼都有大量的马克杯,统一印公司logo,用完只要放到回收点就可以了。而且公司特别喜欢杯具,周五临下班,又收到一个发杯具的通知。。。
另外中午散步,发现很多人都走一条小道,我跟过去绕到几座楼后面,简直就是豁然开朗,仿佛看到桃花源一般。浦东软件园三期后面有一个规模很大的人工湖,还有小桥流水,中午散步还有波光粼粼,可以租脚踏船!这湖藏的很深,你不绕到湖边是根本看不见。想想中午吃完饭散步、去湖上划船,那是何等的惬意啊。而且盛大文学的办公楼窗户就正对着湖面,在这样的落地窗前面工作,那种感觉!想起以前,同样是一家集团,工作环境的差距怎么就这么大呢。
同事谈论公司的时候,总是会用经济危机前、经济危机后来区分。比如危机前,培训材料都是打印成书的,危机后,大家就都看看pdf得了。作为一个和经济危机一起走上社会的人,我是真的很无奈。
The post is brought to you by lekhonee v0.7