2005年7月11日,我从学校毕业加入微软工程院,在Exchange Server团队做开发,当时的老板就是现在小米合伙人KK Wong和林斌。2010年4月份我离开微软加入小米的创始团队,虽然当时差三个月到才五年,还是拿到了五年的纪念,一个玻璃砖,不小心摔碎了一角,我至今还保留着。

最近五年,除了有时候去找老同事聊聊天顺便挖几个人,偶尔要个Windows的注册码之外,和微软没有任何业务往来。直到春节的时候Windows团队和小米接触打算移植米4上的Windows,我才又大规模接触微软的团队。回首过去,有几个在微软学到的小技能,让我和我的团队受益很大,写出来分享给大家。

Code Review (代码审查)

加入微软之前,我在学校写了无数代码,和其他自学成才的程序员一样,大家都是各做各的,很少和其他人交流,大多数时间是在网上找资料,再自己琢磨。到了微软之后,我加入的团队是和美国总部的工程师一起工作,分配了一个资深的工程师来给我做Code Review,我还记得他的名字叫Branden,其实年龄比我还小一岁,不过我研究生毕业参加工作的时候,他已经工作五年了,囧rz。

在微软的工作流程里面,Code Review是非常重要的一步,翻译成中文是“代码审查”,我不喜欢这个翻译,因为其实并没有上下级审批的意思。在工作中不一定是有经验老手的给新手做Code Review,新手也可以给有经验的做Review,只要看不懂的地方就可以提出来,看不懂说明对方写的代码不容易维护,将来写的人走了换了个人负责就会有问题。而且这来来回回的流程也是互相学习的过程,你会发现原来这个地方还可以这么写,既然要互相学习,那做Code Review的人也要像写代码的人一样认真思考,假装如果是我写的话会怎么办。

我刚入职的时候印象最深的是美国同事的耐心,我写的代码他非常仔细的看,提了非常多的意见,我按照他的意见改一遍,再提交给他,他再提意见,我再改,最多的时候有十几个来回的,有时候我都觉着烦了,但还是忍住了,确实对方提的意见都是对的。几年后我到了一个团队,我是里面最资深的员工,有一次在Code Review的时候给新入职的同事提了很多意见,还帮他做了测试,给出了我的解决方案,可能让他觉着很没有面子,他对我表达了非常不满的情绪,我非常淡然,并感受到了一种轮回的感觉,因为Code Review就是这样的。

加入小米之后,才发现中国大多数公司是没有Code Review机制的,这让我非常怀疑他们的代码质量。还好MIUI团队最早的工程师都是从微软过来的,尽管我们抛弃了所有可能降低效率的流程,比如再也不写Design Spec,减少无关的测试等,但是始终坚持做Code Review,并且和在微软的重视程度一样多。当时有从别的公司过来的同事拒绝接受别人给他提的意见,顽固坚持自己的风格,我们就让他去别的团队做新功能去了。因为只有这样,才能保证在团队快速扩张的情况下,保证工程质量和同样的代码风格。这里还要感谢Google做的代码管理工具Gerrit,让我们做Code Review比在微软的时候都要方便。

Email and Rules (邮件与规则)

工作中难免会收到很多邮件,但是我国人民好像不喜欢用邮件来交流工作,每次我看到同事的邮箱有几千封未读邮件的时候,就感觉到了一种无奈。遇到孺子可教的新同事,我会告诉他,每天把邮件处理掉,保证没有未读邮件是一种美德,不信你看我邮箱,一封未读邮件都没有。其实这里面并不需要勤奋,秘诀就是把不该看的邮件都直接删掉。

一般来说,正常的邮件原则是,如果发件人需要你来相应,会把你放到To里面,如果只是需要你知情,那会把你放到Cc里面,如果以后不希望你再介入,会把你放入Bcc里面。所以要把出现在To里面的邮件单独列出来,优先处理。然后再把出现在Cc里面的列出来,看看就行。其他的如果是发给你在的小团队的,和Cc其实差不多的,看看就行。其他的,删掉就行,不看没啥损失,如果有问题,也是发件人的问题,谁让他不按牌理出牌呢。比如不把收件人放在To或者Cc里面,但是正文里来个@,以为这是微博呢,亲?当然公司的行政发的通知除外,所以要把重要人物(CEO,部门老大,行政主管等)发的邮件单独列出来。

怎么把不同优先级的邮件分出来?邮件规则就是干这个的。为什么我知道这么多?因为我在微软的时候就是做这个的。如何设置邮件规则?Outlook里面有很多介绍,我就不多说了。当然有从Google来的同事说只要把所有的邮件导入到Gmail,然后Gmail会自动帮你搞定,我表示还没有得到。

Calendar/Freebusy (日历)

这个是高级技能了,因为大多数人用不到,我也是最近才需要的。公司大了最大的表现就是会多,找人开会难,因为经常对方有别的会,时间对不上,有时候想想也挺可笑的。这种情况,经常要打很多电话,或者在微信/米聊里面沟通才能搞定,还有临时变卦的。

其实微软提供了一个很好的工具,那就是日历。首先,把自己的安排都记在日历里面;然后,开放权限让同事看到你的日程,可以只看到时间段。这样,如果大家都这么做,那召集大家开会的同事就可以在日历里面把大家都加进来,找一个大家都有空的时间段。这个技能只适用于服务器是Exchange Server的邮件系统。

我现在所有的安排都放在日历里面,不论工作有关还是无关的,连理发和踢球什么的都有,还养成了一个习惯,只要不在日历里面的都会自动忘掉,所以一件事没有放在日历里面的时候就很焦虑,还要手机就在旁边,加起来很方便。公司外面的人要和我约一个会,打电话的比较多,但我都会提醒对方通过邮件发一个Meeting Request过来,这样方便大家都记住时间,大多数时候从语气来看我谨慎怀疑对方并不用日历。

以前MIUI并没有好好做日历,原因是统计表明我国人民根本不用日历,使用率非常低。现在好像开始发力了,估计是因为我厂员工自己有需求了,做好了可以提高工作效率。

在微软5年,我学到的几个小技能相关推荐

  1. 西南石油大学计算机科学学院教授,张小洪(计算机科学学院)老师 - 西南石油大学 - 院校大全...

    张小洪 张小洪老师的简介 姓名 张小洪 性别 男 出生年月 1975年9月 最终学历 研究生 职称 讲师 电话 13981842042 学位 硕士 行政职务 传真 所在院系 计算机科学学院 E-mai ...

  2. 新闻学应该掌握哪些计算机技能,哪些人适合学新闻学专业 要掌握哪些技能

    原标题:哪些人适合学新闻学专业 要掌握哪些技能 一.报考新闻学专业的要求 一般来说新闻学专业文理兼收,但是文笔好.善于表达.性格外向.具备一定的人际交往能力和沟通能力的学生更适合新闻学专业. 从科目上 ...

  3. 学平面设计要掌握哪些小知识?

    本文由:"学设计上兔课网"原创,图片素材来自网络,仅供学习分享 学平面设计要掌握哪些小知识?平面设计也称为视觉传达设计,是以"视觉"作为沟通和表现的方式,透过多 ...

  4. 2008-2009学年度无锡市职业教育专业技能竞赛第十一号公告

    2008-2009学年度无锡市职业教育 专业技能竞赛第十一号公告 (关于计算机竞赛项目的有关说明) 一.竞赛时间: 2008 年12月6日 ---- 12 月7 日 二.竞赛地点:无锡市旅游商贸高职校 ...

  5. 参加 10/11 微软技术创新日 学到的关键字

    郁闷,刚刚说到一多半IE 8挂了..还不能给我灾难恢复,重写... 1.LiveMesh Imagine the possibilities Imagine all your devices-PCs, ...

  6. 迎财神| 微软ATP教你学AI “兔”然暴富!

  7. Linux运维工程师必学必备的8项IT技能

    如果你在学习Linux,那么强烈推荐你选择RHEL和Centos作为学习的Linux发行版本,在公司及企业当中他们是使用最多的,毕竟学习除了本身是爱好,其次也是为了就业.Centos是RHEL的克隆版 ...

  8. 当年,兔子学姐靠这个面试小抄拿了个22k

    本文顺序是操作系统(jvm).网络.数据库(mysql/redis),都是当时兔子的学姐准备面试的时候总结的,学生面试基本不会跑出这个范围,懂行的应该能看出来. 学姐原话:因为我本身的知识是A集合,我 ...

  9. 计算机专业太难不适合女生学?来看 N 多小姐姐的回应

    高考结束了,填志愿选专业的时候也要来了.最近我们微博收到一个私信求助: https://weibo.com/2093492691/GmruxxXrK  在@程序员的那些事 微博发布后,有位小姐姐还感叹 ...

最新文章

  1. 2020-06-15 有理分式矩阵及其互质分解
  2. 企业大数据应用成熟度如何?大多数企业处于自嗨中
  3. KesionICMS智能建站系统v8源码
  4. 播种数据MVC 6 .NET Core应用程序
  5. HDU 1222 Wolf and Rabbit(gcd)
  6. android之去掉空包合并
  7. 一小时精通SVN版本控制 之五 团队协作开发
  8. 【实践】HMM模型在贝壳对话系统中的应用
  9. 锋利的jQuery-4--图片切换的一个例子(自己理解后写的,以备忘记时看看)
  10. 在深度学习时代用 HowNet 搞事情 刘知远 01-09
  11. 安全狗又拿下一场重保胜战 第22届投洽会顺利谢幕
  12. ddr5内存上市时间_DDR5内存年底开始量产,2022年成为主流!
  13. java习题5参考练习及答案_JAVA练习题(第5章).ppt
  14. 工业机器人pallet指令_工业机器人编程指令详解简介,目录书摘
  15. js正则表达式的创建、边界符、量词符
  16. 数学对于编程有多重要?
  17. 5.视频监控 - 摄像头接口
  18. 【方向盘】启动命令和IDEA如何传递:VM参数、命令行参数、系统参数、环境变量参数、main方法参数
  19. Go 每日一库之 viper
  20. 在ICT求学时最大的痕迹

热门文章

  1. mac通过android打电话,应用短评:用Mac打电话的意义在哪?
  2. java分布式dubbo_Dubbo剖析-搭建一个简单的分布式系统(1)
  3. golang mysql 超时_Go语言channel超时机制
  4. 如何让cloudflare缓存html,wordpress博客使用CloudFlare的页面规则缓存设置教程
  5. streamsets添加mysql驱动_StreamSets3.9.1安装说明
  6. oracle用游标drop多个表,Oracle Procedure中使用游标cursor更新多表?
  7. 设计php框架_PHP微型框架设计
  8. Flink 状态管理
  9. python metaclass应用
  10. nginx ngx_http_autoindex_module