到公司第一件事是什么?

This is email to whole team about “how to work better”

当你到公司打开电脑后第一件事是什么?

如果你的答案不是检查outlook今天的Calendar,建议把这件事作为首要任务,尤其是上午要做什么,更是很重要。比如我今天安排,上午一个面试,一个与performance review有关的培训,一个与lead的会议,这几件事都很重要。

另外我们要注意与onshore的会议时间,会议电话id,有没有sametime会议链接,需不需要电脑。如果需要电脑,我建议有一个人提前15到20分钟去配置一下。如果是视频会议,那可能就要提前30分钟。另外相关人员准备一下材料,不要到时候临时去电脑里搜索,都拷贝到桌面,直接可用。如果这个人在线,可以ping他一下打个招呼。

然后就是查看邮件,有的需要回复,有的只是参考。需要回复的一定要记下来,比如立即回复或者下班前给出结果。对于负责某个项目或者某整个项目的人来说,收到重要的邮件要立即与我沟通协商,该如何回复,如何make decision。

邮件也最好用OneNote分分类放到不同类别下。

看完邮件,没什么需要立刻回复的,这时候可以去泡茶喝水,稍微放松一下,然后开始一天的工作。像我基本上早上十到二十分钟会浏览一遍邮件,然后再找时间仔细看。

最后很重要一点,注意身体健康,要吃早饭,可以到x号楼,稍早一点,既不用担心压车,又是一个很好的习惯。

开始办公室里咖啡生活

花了几天时间研究咖啡机,终于选择了飞利浦 (Philips) HD7450/20 咖啡机,在京东商城220拿下,另外买了一个量极大的国产云南咖啡粉“爱伲咖啡”,500克才42块,全当是玩玩。 http://www.360buy.com/product/1006742289.html 今天都到了,下午在办公室的茶水间试水煮了两壶。不过真是不如以前在罗克韦尔时候用全自动咖啡机出来的效果,不醇。不过怎么说,都要比雀巢速溶喝起来舒服多了。终于可以从普通青年晋级到文艺青年了,下午来一壶咖啡,这生活简直是。

在咖啡沙龙http://www.coffeesalon.com论坛泡了几天,稍微了解了一下,法压壶貌似好玩,但是不太适合办公室。下一步准备买个磨豆机,然后买豆子试试能不能更好一些。灿坤的电磨很便宜,但是评价一般。有一个豆叔在网上口碑很广,淘宝店里也有一些手磨电磨推荐http://horstcafe.taobao.com/

另外一个比较人多势众的讨论咖啡的地方就是百度咖啡贴吧 http://tieba.baidu.com/f?kw=%BF%A7%B7%C8 也在里面学了不少有意思的。

全自动家用型的这个貌似不错 “机器是我最喜欢和推崇的Saeco喜客odea giro型号,这款喜客Saeco odea Giro全自动宝马橙色款是迄今为止我最喜欢的家用咖啡机,外观与功能搭配完美,透过上部磨砂塑料盖,豆仓的咖啡豆余量一目了然,豆量和水量旋钮位于正面,调节简单而直接,杯架高度可上下手工调节,磨豆时刀头声音清脆悦耳,总之,一部完美的好机器。”

另外搜到大连有家店卖咖啡机咖啡豆,八点咖啡公司dl8icoffee.taobao.com。不知道如何,有机会试试

大连开发组开发流程及注意事项 – 2012-12-19

1,Desktop大连开发组的开发流程如下,没有例外
开始阶段:风险评估,技术难点研究,通过邮件或者会议,确定需求分析。项目Lead需要确定我们得到明确的截止时间,需要保证我们能在预定时间内完成。
设计阶段:研究设计文档,小组设计评审,具体任务分派,应该保证项目中有新老人员搭配;
编码阶段有:项目进度报告,每日代码审查。
收尾阶段应该有: 小组代码审查;需求验证;正式测试;项目总结。产生结果:项目代码发布,小组代码审查文档,测试结果。

2,每个项目要确保至少有一个Senior成员参与到需求,设计,编码,测试过程当中,保证新老搭配。这个Senior不需要具体编码,但要负责保证从头至尾跟随项目,保证流程按预期进行,指导开发人员,及时发现问题解决问题。

3,每个项目,SA以及Senior成员应该作为第二测试人员出现,从用户角度测试,不需要遵循测试计划订好的测试方案。

4,每次正式的小组代码评审,必须有XX, XX和我其中一人参与。

5,如果任务比较复杂,问题比较棘手,研究了半天时间没有解决方案。请马上联系我或者项目Lead;如果大连组内解决不了,再求助Onshore team。先发邮件说明问题,紧急任务应该马上开会保证及时沟通得出结论。

6,项目流程方面,如果需要有例外情况,比如不写什么文档,不做测试不评审,请事先通知我或者项目Lead。

7,在开始阶段对最后整体实现效果有大致理解,可以预估技术难点所在,并且实现进行研究和求助。对于项目可能有的需求变化有一定的预估和计划。在项目开始阶段或者空闲阶段应该研究技术难点。

8,每项工作应该有结果产出,代码或是文档,或者是周五做一次技术分享。学习应该有文档总结,项目有流程设计文档,代码或测试文档。

9,代码review不要在下午三点半以后还checkin代码(可以留到第二天上午),如果有例外,应该通知代码审查人员,保证能预留出审查时间。代码应该直观易懂。代码格式应该符合英语常用语法格式,或者跟随onshore同事样式。我们写的每行代码必须能解释清楚,根据哪个需求来的。对于代码审查中发现的问题,必须逐条回复(改或不修改),确保没有遗漏,Group review需要填写正式review结果文档。

开发组开发流程及注意事项

这是我的方法论,在所谓敏捷之前,先教会团队如何走路,如果按照一个正常的软件开发流程来做事。

=======================

1,开发过程中注意要遵守以下流程,没有任何例外。负责feature的开发人员应该从接手任务第一天开始,每天更新project status report。

开始阶段:风险评估,技术难点研究,通过邮件或者会议,确定需求分析;
设计阶段:研究设计文档,小组设计评审,具体任务分派,截止时间确认;
编码阶段有:Daily Project status report, 每日代码审查;
收尾阶段应该有:Group code review;需求文档校验;测试计划及结果;项目总结。

2,如果任务比较复杂,问题比较棘手,自己研究了半天时间没有很好的解决方案。请马上联系我或者咨询组里其他同事;如果组内同事也解决不了,再求助Onshore team。先发邮件说明问题,紧急任务马上搭建会议保证及时沟通。

3,项目流程方面,如果需要有例外情况,比如不写什么文档,不做测试不评审,请事先通知我或者项目负责人。

4,在开始阶段对最后整体实现效果有大致理解,可以预估技术难点所在,并且实现进行研究和求助。对于项目可能有的需求变化有一定的预估和计划。在项目开始阶段或者空闲阶段应该研究技术难点。

5,允许犯错,但是要确保同样错误不要再次出现,从问题中吸取经验教训。

6,每天的工作都应该有结果产出,代码或者是文档。学习应该有文档总结,项目应该有流程设计文档/代码/测试文档,项目进度有每日进度报告。每行代码在checkin之后的当天时间, 都应该有两个人review通过。

7,代码review原则:不要在下午三点半以后还checkin代码(可以留到第二天上午),如果有例外,应该通知reviewer留出审查时间。

代码应该直观易懂,不要额外解释,不用过多注释说明。代码格式应该符合English正常语法格式,或者遵照以前onshore同事代码样式。每行代码必须能解释清楚,根据哪个需求来的。对于Peer review和Group review中发现的问题,必须逐条回复(改或不修改),确保没有遗漏,Group review需要填写正式review结果文档。

8,在你写代码之前,确保自己已经:a)了解所使用技术的大致用法。b)读过这项技术的大体教程或者代码实例,可以用最简单的能体现设计意图的代码完成大部分功能点。c)以前没有遇到的新项目的设计方案,确保设计方案与我沟通过,由我负责技术决策。

请避免以下情况发生
1) 将就完成,马马虎虎,不求甚解。– 在写代码之前问问自己,真的清楚知道在为什么需求编写什么模块的代码么?
2) 需求不清楚,也不与onshore沟通澄清,在任务不清楚的时候就开始动手编码。
3) 没有设计讨论,自己觉得没有问题,直接开发。有问题,不做优先级和风险评估,先开发了再说。
4) 代码不是每天checkin,累积三五天;需要checkin的时候,一次加入大量代码修改。或者checkin以后不作代码评审。不注释,命名不规范,不关注静态分析或者调试中出现的异常log信息。
5) 代码写完了,就认为是项目完成了,没有设计评估没有文档没有测试。
6) 只有最后阶段才说明有问题,在开始时不考虑如何技术实现或者觉得不会有问题,不做风险评估。
7) “我觉得没问题,但是也没有检查代码和需求。”“代码为什么好用?不知道;出问题的root cause?不知道”“这段代码干什么用?别人就这么写,我不知道,没研究过”“这个技术上肯定实现不了,没法做”

欧美外企程序员如何学好英语

英语的重要性越发的凸显,这已经不是想不想学的问题,而是不学就没法往上走,英语会成为最大的限制。

基于此,我也在尽量坚持学英语,以下是一些方法,与大家共享:

1)Podcast播客,手机都有这类软件,比如苹果的itunes里带有的podcast,或者安卓系列的doggcatcher。播客的优点在于不需要额外的去看,只要听就好了,所以我选择的也大多数是音频形式的播客。
这里是我推荐的几个音频:
BBC的Business Daily,6 MinuteEnglish,The English we speak,Global News。虽然是英音,但也非常练英语听力。
NBC Nightly news,这个可以用来泛听。
Business English Pod,这个非常推荐,
English as second Language Podcast,非常推荐
NPR Planet Money podcast,可以用来泛听
CNN Radio News,用来泛听。

视频方面推荐两个,一个是CNN student news,另外是TED演讲。这两个来源的特点是都有transcript,长度也适中。

2)第二个方法是看美剧或者看技术类视频,美剧由于娱乐性过强,感觉不是太有效果,技术视频比较不错,推荐大家用这个办法。
推荐看iqiyi.com的美剧,可以选择关闭字幕,比如老友记、广告狂人都比较经典。视频的话,建议大家可以安装一个vpn,上youtube直接看,或者vimeo也不错。

3)翻译,看到好的技术文章,翻译成中文,或参加某个书籍的英文翻译,很有帮助。

11月18日笔记

在18大胜利召开之后,大闺女竞选班长成功,将会带领班级同学从一个成功走向另一个成功。

技术方面,比较感兴趣的更新有下面几条:
1)LuaJit2.0正式发布,http://luajit.org/ 这标志着Lua5.2,LuaJit2,Lua5.14在今后一年左右会让人无从选择(开个玩笑)。
2)微软大牛人安德斯设计并开源的TypeScript发布了0.81版本 http://www.typescriptlang.org/ ,这个东西的好处是几乎和Actionscript一样的语法,可以做静态类型代码分析,值得研究使用。
3)Ruby最近新动作很大,一个是Ruby2.0预期明年Q1发布,另外是JRuby1.7发布,我是想学想用Ruby却一直不得其法。
4)Emscripten编译器有更新,这是一个很值得关注的项目,目的也是把某些语言或者开源项目编译成JS。http://mozakai.blogspot.com/2012/11/emscripten-compiler-upgrades.html
5)pipetools http://pypi.python.org/pypi/pipetools/0.2.0 非常像C#的LINQ
6)可用来做数据挖掘的Python模块,数据挖掘、大数据比较火,但是个人看有些人根本不懂什么叫大数据,正常数据还没搞明白,搞毛大数据啊。 http://www.kdnuggets.com/2012/11/best-python-modules-for-data-mining.html
7)微软COM,微软有些技术学了貌似没用,其实不然,比如COM,现在看看虽然技术细节是没用了,但是思想长存。 http://www.johndcook.com/blog/2012/11/12/remembering-com/

11月12日技术笔记

两件事值得在小组里强调:第一是必须重视和强调对于technical design的review,必须有,不能看了需求直接就动手编码。第二是,身体很重要,必须吃早餐。我在微博上强调找靠谱的程序员,什么叫靠谱?学习能力强,有一定技术基础,认真踏实,给一个技术问题,能知道哪里找答案或者是如何问问题,说话有条理,具有逻辑思维。我们项目特定要求是英语能做最基本的沟通。

最近看到的一些链接:
http://xpresser.com/ Xpresser is a GUI automation tool written in Python, used to automate anything and everything.

http://quaker66.github.com/vortex/ Vortex is a scripting language that compiles to Lua.

http://littke.com/2012/11/06/inspiritas-bootstrap-theme-by-ripple.html Inspiritas – a free Bootstrap theme

http://www.cnblogs.com/xrwang/archive/2010/01/26/TheComparisonOfImageProcessingLibraries.html 各种图像处理类库的比较及选择(The Comparison of Image Processing Libraries), AForge, OpenCV, EmguCv

http://addyosmani.github.com/todomvc/ Backbone.js AngularJS KnockoutJS jQuery 学习比较JS框架或者库的利器

Python产生时序图和美化diff结果

美化diff这个想法来自今天的code review,tfs的命令行支持导出diff格式的比较结果,但是可读性太差了,所以想用Python代码美化一下。

Python自己有一个difflib,这个功能算是内置支持,可以参考这里http://docs.python.org/library/difflib.html#difflib.HtmlDiff

如果想高级一点,可以用这个pygments.org,我是从SO上看到的 http://stackoverflow.com/questions/641055/diff-to-html-diff2html-program 这个pygments是一个代码美化器,但是支持diff格式,比如这里的例子 http://pygments.org/demo/5455/ 。如果喜欢ruby可以试试这个项目 https://github.com/rubychan/coderay

最近有个写文档的需要,画时序图类图是经常的。顺手查查,发现这个项目 https://github.com/aivarsk/scruffy 使用yUML语法生成类图和时序图,好玩。比如这个例子

或者这个例子

 

看了一下代码,支持win32应该没有问题。如果只想产生时序图,可以用这个 http://pypi.python.org/pypi/seqdiag