提升效率之法:建立和完善适合自己的效率系统
做时间的朋友。
效率目标
确立和敏捷调整关键效率目标,是提升效率的首要任务。 为什么要提高效率?
- 更高效地完成工作,接近喜欢擅长的事情,并 enjoy 其中;
- 创造和感受美好的生活,欣赏美好的事物。
具体而言:高效地完成每日的当前价值,良好地经营和提升支柱性能量,努力寻求拓展点。
- 4-5 小时,完成当日最重要的设计开发活动【当前价值】。
- 1-1.5 小时,工作沟通及深入产品业务,解决他人麻烦【当前价值】。
- 1 小时,运动、冥想、小憩【支柱】。
- 1.5-2 小时,交流,陪伴爱人和家人,与心仪的人一起欢度时光【支柱】。
- 1 小时,学习和实践喜欢-愿景的事情【拓展】。
- 0.5-1 小时,了解行业与社会焦点与趋势【拓展】。
效率策略
确立效率目标后,就要建立效率系统,并迭代优化。
- 总体:睡眠、饮食、运动;规划、精力分配;
- 细节:开发、运维、沟通、学习;
效率系统的主要因素:
- 基石:适度的睡眠、运动、小憩;经营良好的衣食住行;温和的家庭生活;
- 指引:适度的效率法则与细则;
- 实践:设计开发的技能、经验提升;沟通技能的提升;拓展技能提升;
- 子系统: 为设计、开发、沟通、拓展、学习等建立迭代优化的效率子系统。
每日坚持:
- 适度的睡眠、运动、小憩;良好的饮食,得体的打扮、洁净的居室;
- 实践设计、开发、沟通、事务处理技能;
- 适度的学习;
- 小幅度迭代优化整体效率系统。
效率基石
保证精力充沛、健康有活力是效率的基石。
- 保证有质量的晚睡:23:00-6:30
- 坚持早上半小时运动
- 晚上半小时休息活动或冥想
- 一日三餐准时足量,水果、蜂蜜等辅助,适当的蛋白质补充
- 调节身心气息;均匀、自然、适度
效率法则
- 关注大局,确立优先级,先解决关键重要事项。
- 谨记主目标,勿为次要不紧急事项分心和转移注意力;勿因钻研非关键技术细节耽搁主进度。
- 事件重要性/紧要性/影响力策略:重要影响力大的事情立即做;重要而不紧急的事情分阶段做。
- 针对不同类型的工作制定不同的方法来提高效率。
- 观察和分析不同的干扰类型,分别建立行之有效的策略和方法来应对。
- 不定期记录、观察和调整时间分配。
- 探索创造性和深度的时候, 可适当降低对效率的要求。
- 探索性事情,最好一次搞定,勿半途而废,耗费大量时间无所得。
时间敏感
要提高工作效率,就要做一个对时间敏感的人;不仅是尊重自己的时间,也尊重别人的时间。
低效几乎来自于:不知、不熟、低质、手工、拖沓。
- 不知道的,通过搜索、学习和请教转变成知道,并认真记录;
- 知道的,通过练习和积累规律成为熟练的,熟悉原理,避免一知半解;
- 熟练的,通过工具自动化变成可传承和无需手工的;
- 拖沓的,坦坦荡荡休息15分钟(可以变成一种仪式感)再干活吧!
分析瓶颈
- 观察平时工作中耗时较大的部分,分析原因并努力消除根源,建立应对措施。
增加柔性
提升效率,不仅是完成事情,还应当享受其中。在刚性的准则中,适当添加柔性的内容。
- 适当停顿、小憩、走动、交谈,避免持续长时间工作。
- 适当学习、欣赏文学、设计、音乐、舞蹈等。
效率系统
开发效率
工程师最重要的职责,就是在有限的时间内完成新的功能,帮助用户摆脱麻烦和困扰,更高效地工作和生活,间接也是帮助自己更好地生活。提升开发效率是效率系统的重要一环。
自动化系统
要想成倍提升效率,必须构建一个可扩展的自动化的效率系统;自动化,意味着更少的人的干预,从而能够腾出力量思考更优的设计;可扩展,意味着当业务量增长或变化时,原有方案行之有效或只需很小改动。(每当手动操作,想想如何自动化;每当需要改动,想想如何不需改动)
要想构建可扩展的自动化系统,必须有个静思熟虑的宏观设计;要想更快抵达这个设计,必须先构建一张安全网,无论大小改动,只要安全网提示OK,就能自信发布;要想更快迭代,还需要构建一个快速迭代系统:目标、任务、工作量、时间、效能、人、沟通。
要想成倍提升效率,还必须学会分享,复制自己的生产力。分享,不是让人取代你,而是能够发挥提升和更多人的力量。
成倍提升效率 = 可扩展的全自动化系统 = 缜密的全局设计 + 质量安全网 + 迭代开发系统 + 资源管理。
开发效率细则
精力充沛、专注、常用库与组件、拆分明细任务与划分边界、搭建可运行原型、通用一致化处理、不变与可变隔离、复用与可测、代码与设计Review、理解实现。
- 明确当日的最重要的开发目标。
- 在早上或晚上精力充沛的时候,在安静的地方,做高产出创造性设计与编程工作。
- 编程专注投入,将手机、邮件、微信、沟通、事务等干扰降到最低。
- 设计先行原则,设计好整体图景,再着手。
- 涉及多种业务交互时,先仔细沟通交互接口和边界,避免多方做重复的事情。
- 对任务目标不太清晰时,先拆解任务目标为一系列可以实现的子目标,明确地写下来;含糊的地方,务必也要明确和记录,即使暂时不做。
- 提升信息搜索技能,快速获取高质量信息; 学会看英文文章。
开发方法
- 熟悉和使用优秀的代码库、成熟组件和框架,借鉴现有成熟方案,尽可能避免重复造轮子;学习其中的优秀设计并能融为己用。
- 建立可复用的基础技术设施和代码库。
- 勤于搜集、阅读、分析、改进和整理优秀源代码,并集成在 ALLIN 工程里。
- 先搭建原型和系统骨架并使用Mock技术,把系统跑起来,再逐步求精细化; 意图导航编程、逻辑单元连接。
- 遇到局部问题暂时难以求解时,可以先抽离出来,保证整体通过,再找时间解决这个问题。
- 有多项相似需求时,提炼出通用的工具、流程和微框架, 快速支持后续相似需求。
- 自动生成部分单测,提高单测质量和编写效率,并用密集单测覆盖代码行。
- 编写短小单一职责的系统方法和业务方法,增强复用性和可测试性。
- 采用函数式编程隔离通用技术逻辑和定制业务逻辑。
- 隔离通用和可变,增强程序的可配置性和可扩展性,用尽可能少的代码实现新功能。
- 认真执行代码review,请教有经验的小伙伴进行审查确保无设计缺陷和漏洞。
- 解决应用部署中遇到的看似无关紧要的错误后,部署速度会提高。
问题排查和运维效率
四要素:日志、工具、自动化、流水线。
- 增加恰当关键的日志,减少问题的排查和调试的时间。
- 持续新增和完善工具箱,能够用30秒钟自动化解决,不要折腾10分钟去手工操作。
- 持续完善程序,减少和消除因为程序的不完善导致的手工操作和维护。
- 及时识别费时繁琐的且有规律可循的手工操作,通过自动化程序减少和消除。
- 自动化工具支持大规模、批量、安全处理,输出友好,自动确认处理状态。
- 使用 alias 命令快速直达常用目录和启动常用服务。
- 使用强大的命令行工具(比如 zsh)来完成常用操作。
- 将比较复杂的操作实现为灵活且自动化的脚本工具。
- 将已有自动化工具串联成流水线工程,流畅地诊断和修复问题,建立稳固的工具防线。
- 能全自动化的,不要半自动化或不彻底的自动化。
- 持续优化完善程序,严格测试,减少程序里的坑,减少上线后维护的时间。
- 聚焦和及时消除焦点问题和低效区域,容忍偶尔的次要问题。
- 注重细节的改进和优化。
工作环境管理
- 建立适合自己的专属工作台(常用软件集合)和快捷键,随己所爱。
- 建立适合自己的工作生活节奏,吃好喝好休息好。
- 建立时间和工作事项管理。
- 对工作事项进行估时和反馈,逐步量化工作效率。
- 专注、专一、专属时刻。
- 处事干净利落,不懂就请教。
- 积累和定时备份在线工具软件网站。
- 移除鼠标,学习和熟悉全键盘操作。
- 建立可复用可移植的工作环境, 源码、文档、软件包、可执行程序、项目文件、参考资料等,请分别单独置一处。
阻碍因素分析
- 中断性事务处理; ----> 要适应语境切换,或约定时间
- 没有思考出解决方案; ----> 知识经验累积不够,记录下来抽空学习和请教
- 身体不适或心情不佳; ----> 停顿休息和调节状态
- 工作量大,产生畏惧心态; ----> 拆解任务和评估工时
沟通效率
- 沟通之前,先仔细想清楚整体流程以及疑点,然后再讨论。
- 倾听、理解和思考,开放心态,简洁地发表建议。
- 在交谈或会议前对话题进行充分准备,面对面的时候深入讨论。
- 限定时间不拖沓,不废话不啰嗦,无疑勿议,不懂聆听。
- 紧急重要事项,面对面沟通谈清楚。
- 需要面对面沟通时,先预约好时间。
- 不紧急事项,异步沟通,尽可能避免打扰别人。
- 评估个人在会议中的作用和比重。比重小的,弄清楚该做什么事;比重大的,做好充分发言准备。
- 请教问题时,提供充分信息,说明事项紧急程度及最迟答复时间; 回答问题时,先确认事情原委和细节;先及时回复确认收到消息再内部消化。
- 从小处着手,积微知著。
学习效率
找个固定的时段和安静的地方:
- 每天花半小时学习一个新的知识或理念, 阅读源代码设计,保持新知和热情。
- 重要的深度文章,集中全部注意力和才智来研读。
- 实验探索式学习,从学习中有所发现和洞见。
- 设计小实验,解决工作或学习中遇到的困惑;在困难的地方适当地请教。
- 切忌开会的时候“学习”,三心二意徒耗时间所获甚微。
反馈改进
每天都应当进行反馈,是否按要求达成了效率目标?没有达成,是什么原因? 如何改进 ?