技术之外的成长

工作汇报

工作汇报包括述职、转正晋升答辩等场景,重要程度不言而喻,汇报时应该注意以下几点:

  1. 解决了什么问题:切记一定不要干巴巴说自己做了哪些事,要重点突出解决了什么问题。做了什么事是解决问题的手段和过程,不是目的,也不是最终结果。
  2. 明确的指标数值:工作的最终结果一定要有明确的指标和数据支撑,即我们常说的量化指标。因为工作的产出和优秀与否其实是一个横向对比的过程,评审团或多或少都有评估标准或者对比的数值。
  3. 对团队的正向价值:在描述自己的工作产出时,要重点突出自己的特点或者说与众不同的地方。自己所做的事情是否与团队整体目标挂钩,是否对团队带来了正向的提升。
  4. 重点事项描述:很多时候我们在一个岗位上实际做的事情,和岗位本身的工作范围不是完全重合的,这是很正常的现象。但是在工作汇报时要切记这些零碎的事项一笔带过即可,重点要突出的是你最核心的工作内容和取得的成绩。职场是允许个人存在不足的,并不要求你成为一个六边形全能战士,做好自己擅长的事情,拿到超过预期的结果才是个人应该瞄准的方向,而不是事事追求完美。
  5. 优势以及不足:工作中都有团队工作目标和个人的工作目标,即我们常说的OKR和KPI。很多同学在工作汇报时会担心和预定的工作目标有所偏离而尝试粉饰工作产出,这其实是很不好的。正确的做法是先重点描述在核心工作内容上做的好的部分,列举优势,然后在阐述不足并说明原因,最后将不足的部分放到你下一阶段的工作规划中。这样上级Leader会认为你既有解决问题的能力,又有清晰的工作规划,反而是一个加分项。
  6. 长期工作规划:工作规划部分,一方面是解决已经存在的问题,对自己负责的工作内容进行迭代优化;另一方面则是规划要和团队整体的目标对齐。即团队当前和未来可能遇到哪些问题,你是如何思考的,你打算做什么事情来解决这些痛点。工作汇报的过程其实是一个很好的和上级以及其他团队对齐目标的过程,好的沟通和及时的信息同步才是做好工作的前置条件。

协作沟通

跨团队沟通

现代职场岗位越来越细化,相比于靠个人能力单打独斗,更强调团队合作。团队合作的核心技巧,其实就是找到共同利益点,将正确的信息及时传达给正确的人,并通过建立自己的长期职场影响力来驱动相关干系人共同解决问题。关键字:利益绑定+核心干系人+正确的信息+个人影响力。

很多同学在团队合作过程中,经常犯的一个错误就是试图借助职级和行政命令来驱使他人完成工作,这是很容易引起团队其他人反感的。天下攘攘皆为利往,用共同的工作利益驱动,永远比命令式的驱动要好得多。同时要记得一件事:当团队取得好的工作成果时,学会分享蛋糕才能加固长期的合作效果,这也是职场中个人影响力建设的必经过程。

当然,职场中有时候也会遇到一些很难搞的人或事,遇到这种问题的时候,我个人的建议是:做好自己该做的事情,尝试去解决自己能解决的问题,不能解决就及时向上级或者团队寻求支援,如果无效就尽早另谋出路。毕竟,工作也只是工作而已,并不是生活的全部。

组织会议

开会是职场中最重要的沟通形式,如何高效组织会议?

参考亚马逊的6页纸方法:

  • What we do?(背景)
  • Why we do it? (解决什么问题)
  • How we do it?(我们怎样做)
  • Validation(如何验证)
  • Discussion/Analysis(讨论、分析)
  • Summary(总结)

可以归纳为:

  1. 会前准备
    • 会议背景是什么(信息同步);
    • 要解决什么问题(聚焦主题);
    • 需要哪些人参加(确定时间);
  2. 会中执行
    • 按主题逐个讨论(解决什么问题);
    • 避免讨论范围扩大(聚焦重点问题);
    • 具体问题要有具体的结论(如何做?如何验证?);
  3. 会后跟进
    • 会议记录同步(信息同步);
    • 明确时间和人(明确责任);
    • 持续跟进进度(控制风险);

向上管理

企业都是以结果为导向的,但过程是支撑结果的必要条件,有时候领导对你的工作不理解,在支持度或协调度上体现得不够,这时我们需要向上管理。

1、产生共鸣:直接上级是最了解自己工作性质的,让他们产生同理心,在工作流程中争取最大的沟通和支持。

2、利益共同体:最直接的利益共同体就是上下级之间的KPI,站在对方角度考虑问题,尽量用数据和结果来沟通。

3、岗位重要性:这就是为什么要做成果展示了,有结果才能凸显岗位的重要性和必要性。

向上管理实际就是多沟通常汇报

多沟通的目的是不断和上级确认要做的事(背景、目标、衡量维度),在不断沟通中,明确目标和保持方向一致性。当然,过程中需要注意,每次沟通需要有新的沟通内容,比如方案、进度、风险。

常汇报并不是说有事没事找领导唠嗑,而是让领导知道你在做什么,目前进度,遇到什么问题需要领导协助解决,不要临近deadline或者出问题了领导才知道。有时候对上级来说,不求有功但求无过,是很重要的,因为他也要向上汇报向上管理。

时间管理

时间是没办法管理的,能管理的是对人的管理,其中包括别人和自己,以下总结:

  • 学会拒绝,界定工作的边界和职责范围;
  • 不必要的会议不用参加,事后看会议纪要或者和同事聊聊就好;
  • 需要别人协助或者组织会议提前约定好时间,将协助你完成事项的人的时间提前占用;
  • 建立工作清单,每天来公司第一件事列出今天/本周要做的事情,分类按重要程度排序,完成打个勾;
  • 借助时间管理工具(飞书钉钉的日历)将自己要做的事情进行时间排期,利用提醒功能,强制让自己去做事情,而不是靠人本身的自觉去完成;

团队管理

技术团队管理总纲

  1. 角色认知、心态转变,“管人”和“理事”,借助团队拿结果
  2. OKR、KPI考核
  3. 平衡好技术和业务发展矛盾
  4. 技术储备和未来的技术规划,为业务预留空间
  5. 知人善任,人才梯度培养
  6. 方向要对、格局要大,与公司战略保持一致
  7. 制定好团队目标
  8. 技术分享,培养团队的技术氛围
  9. 团建
  10. 以人为本,激发每个人的积极性

帮助新人 Landing

  1. 熟悉业务:

    面对新员工,帮助其理解业务是开展工作的第一步,技术负责人可以按以下方式入手:

    • 老带新串讲整体业务背景、整体结构、重要模块、主流程
    • 安排描述出自己对业务的理解,及时纠错
    • 安排从小模块上手实践
  2. 安排任务:

    面对新员工/新手,执行任务时往往空有热情,但真正执行时不知道沟通和思考,不知道任务背后真正的需求是什么,是否真的有必要做,自己的理解是否有偏差。

    樊登在《可复制的领导力》一书中,描述了日本人布置工作时的“5遍法”现象,即交代一个问题时,要确认五次:

    第一遍,麻烦你做某件事;

    第二遍,麻烦你重复一下我让你做什么事;

    第三遍,你知道让你做这个事的目的是什么;

    第四遍,这个事会不会出现什么意外,你怎么应对?

    第五遍,你自己做这个事,有什么想法和建议;

    这个方法确实很有借鉴的意义,在向上管理时也需要注意。

制定代码规范

  • 严格约定团队的开发规范,如:IDE 代码模板、命名规范(mysql建表、redis key 前缀,以及application.properties中的各种配置项,可以参考阿里代码规约),代码ci规范,API命名,统一日志规范,MySQL建表
  • 严格的开发流程,如:需求评审、技术方案设计、方案评审、测试用例评审、编码、代码 Review、测试、发布,线上发布要注意灰度。回滚机制
  • 对于一些通用的逻辑,要注意抽取公共模块
  • 技术框架选型要有严格流程

制定流程规范

  • 产品层面,统一将业务需求收集到“需求池”中,每周定期 review 需求,将一些优先级较高的需求整合、立项、排期
  • RPD 方案编写,包括界面、功能、逻辑、交互等
  • PRD 方案评审,包括业务准确性、技术可行性评估
  • 编写技术方案,并组织评审
  • 项目计划,开发任务分解,人力成本,时间评估
  • 各角色(前端、后端、客户端等)进入开发阶段,组织每日站立晨会,跟进项目遇到的问题,并及时做出调整。
  • 代码 review,对不合理的地方及时调整
  • 功能测试、性能测试、集成测试
  • 预发环境检验
  • 发布上线
  • 项目经验总结

团队未来规划

  • 一个是了解系统状况,有哪些历史技术债务(如:架构优化、性能优化、高可用、可伸缩等)需要分阶段偿还,提前做好时间安排。
  • 提前了解业务规划,为了实现业务目标,我们要做哪些技术储备

提高团队效率

  • 业务支撑。按优先级将业务分为重点项目、日常项目。优先保证核心项目所需的开发资源。另外,经常与业务同学互通业务想法,提前做好技术储备。
  • 骨干拉平。对团队经常组织技术培训,核心的技术骨干能轮动工作内容,每个系统都有人员互补。遇到紧急项目时,一个骨干+几个研发,就可以快速支撑一个项目。
  • 架构升级,为业务预留技术储备。如:分布式、服务化、中台、中心化、中间件、平台化等
  • 工程效率。包括动态化、配置化、工具化、自动化
  • 系统稳定性。构建完善的报警监控系统、流控、熔断、降级、容灾、回滚、灰度,保障系统的稳定性。

技术氛围提升

  • 技术分享,输出倒逼输入,锻炼分享人的演讲能力,同时还能提高团队的整体技术能力
  • 代码CR,可以点对点审查,也可以团队成员一起审查。既能保证代码质量,还能让大家对系统进一步了解
  • 代码好坏味道,组织一些活动,对于一些优秀的代码、坏代码,拿出来通晒
  • 读书会。一个人的成长离不开持续的学习输入。招聘的候选人要有很强的学习热情,有较强的自律性。
  • 鼓励创新,紧跟市场前沿,对于一些新技术在充分验证可行性后,可以引入到工作中。当然,创新是有风险的,管理者要充分衡量利弊。
  • 推行自动化,工具化。管理者要鼓励工程师创造工具、引入工具,释放一些低效工作。

如何面对压力

  • 分阶段、分里程碑的方式来制定计划,逐步完成事项来达成目标。给自己留一些缓冲时间,以便于应对计划的灵活性调整。
  • 时刻保持旺盛的精力,保持跟团队成员的沟通,了解他们的工作状态和感受
  • 敢于面对上层传递下来的压力,做好缓冲,避免团队过于透支,保证有一个稳固的后方。
  • 做好项目时间计划表,分清项目的优先级、重要性,合理安排,统筹管理
  • 学会委派工作。知人善任,合理分工,发挥团队的力量,而不是当一个超级英雄
  • 放松心态,工作和生活尽量分开,保证充足的睡眠和锻炼,毕竟身体是革命的本钱。

业务认知

对于程序员个人发展而言,技术和业务都很重要,但是在不同的职业发展阶段,也有一定的侧重。起步阶段,技术作为基础相对更加重要。而在职业生涯中期开始,程序员特别是业务开发,需要对商业有自己的认知,这个世界运转的逻辑是商业驱动,技术作为一个工具的存在,辅助着商业的发展。比如 SaaS 产品,针对 KA ( Key Account 大客户),SaaS 没有生存的土壤,只能定制。针对 SMB ( Small and Midsize Business 中小型客户),把握好质优价廉的普适性需求就有市场。

只有了解业务我们才能够有方向,技术上才有目标,比如可以衡量当下需求的价值,投入产出比、甚至走在业务前面等等等等。

对于提高对业务的认知,我的建议是围绕开发需求,对涉及知识进行学习,并且保持和业务人员的沟通,另外也可以横向对比其他公司的类似业务,多对比,多总结。

以上,保持终身成长才是一个人的核心竞争力。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to Top