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


智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
智慧旅游解决方案利用云计算、物联网和移动互联网技术,通过便携终端设备,实现对旅游资源、经济、活动和旅游者信息的智能感知和发布。这种技术的应用旨在提升游客在旅游各个环节的体验,使他们能够轻松获取信息、规划行程、预订票务和安排食宿。智慧旅游平台为旅游管理部门、企业和游客提供服务,包括政策发布、行政管理、景区安全、游客流量统计分析、投诉反馈等。此外,平台还提供广告促销、库存信息、景点介绍、电子门票、社交互动等功能。 智慧旅游的建设规划得到了国家政策的支持,如《国家中长期科技发展规划纲要》和国务院的《关于加快发展旅游业的意见》,这些政策强调了旅游信息服务平台的建设和信息化服务的重要性。随着技术的成熟和政策环境的优化,智慧旅游的时机已经到来。 智慧旅游平台采用SaaS、PaaS和IaaS等云服务模式,提供简化的软件开发、测试和部署环境,实现资源的按需配置和快速部署。这些服务模式支持旅游企业、消费者和管理部门开发高性能、高可扩展的应用服务。平台还整合了旅游信息资源,提供了丰富的旅游产品创意平台和统一的旅游综合信息库。 智慧旅游融合应用面向游客和景区景点主管机构,提供无线城市门户、智能导游、智能门票及优惠券、景区综合安防、车辆及停车场管理等服务。这些应用通过物联网和云计算技术,实现了旅游服务的智能化、个性化和协同化,提高了旅游服务的自由度和信息共享的动态性。 智慧旅游的发展标志着旅游信息化建设的智能化和应用多样化趋势,多种技术和应用交叉渗透至旅游行业的各个方面,预示着全面的智慧旅游时代已经到来。智慧旅游不仅提升了游客的旅游体验,也为旅游管理和服务提供了高效的技术支持。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值