开发 -- 编程内功

一、内功

本质思维:沉下心,把握不同事物核心的各自规律。 见一叶而知深秋,窥一斑而见全豹。一叶到底是什么?

逻辑思维:100% * 100% * 100% * 100% .... 像下棋一样,每个步骤的准确率。越是天才,越深。

抽象思维:架构对现实问题合理、多元的抽象,选择最好的一个。

流程思维:不完全依赖人的仔细,不断将工作流程化,依靠流程的完善提高工作的能力。

二、业务架构


  1. 业务上下层:
    i.分析业务逻辑的依赖,下层不依赖上层
    ii.上层的业务禁止放到下层,而是应该 新增平级函数 或者 抽象上级业务层。

  2. 先本质,后延展。
    本质的问题决定能不能做,延展的问题决定能不能cover所有业务场景。

  3. 先设计,后开发。
    前期设计方案【反复思考+同事讨论+评审+...】确保可行性,才能继续。

  4. 管理方式是不一样的。
    技术管理的本质,围绕解决业务问题;
    人力管理的本质,围绕发挥人的潜力;
    都遵循管理,大多数不是人越多越好。

三、需求阶段


  1. 给足咀嚼时间
    每种结构体设计,一定既要结合真实情况,也要考虑设计的结构体合理性。当下可以设计,但是需要不断反复的思考。
  2. 安静的想一想
    我的天性,性子比较急,思考比较浅层。所以不要那么多的理所应当,学会用大脑思考和推理。【Coverity的一次问题排查】

四、模块设计


  1. 安全设计
    1)入口不合规拦截
    2)流程完整性
    3)流程持久化
    4)流程失败处理
    5)流程清理

  2. 交互设计
    1)配置文件
    2)入参设计 -- 用户自定义流程

  3. 数据结构设计
    1)算法设计
    2)时序设计

  4. 类设计(可扩展设计)
    1)封装设计
    2)接口设计
    3)设计模式

  5. 高可用设计
    1)稳定性(超时、异常、中断)
    2)日志

  6. 性能设计

  7. 开源设计

  8. 文档

五、协作流程

六、设计模式


  1. 场景
    1.1 业务接近,行为不同
    接近的业务抽成父类,不同的行为归纳为子类
    1.2 业务不同,功能内聚
    模块之间的功能归一,真的太重要了。涉及到组件之间的升级和回滚。

  2. 具体实现
    层级关系用【继承/组合】、同功能属性,方便未来上层调用 【接口】
    如:参考kubekey的实现方式
    分层 -- 规划接口(多态,将方法变成通用的管道) -- 规划父子 (继承,将相同的实现放到父中统一管理) -- 根据对象设计类,将函数很长的传参抽类等(封装,将函数根据类别形成类)
    如:远程操作容器的sidecar操作容器文件
    上层下发(如https)根据type类型创建具体的类 === 通用的管道(如调度函数) === 接口判断类型,执行具体类的函数(实现调度函数的抽离)

  3. 设计模式实战
    类或者函数之间的创建和交互(结构、方法、交互)
    3.1 创建这模式
    3.2 方法类模式
    策略模式:传入具体的字符串到类或者函数,执行具体的函数。
    3.3 交互类模式

七、编码阶段


  1. map 取 key 要判断
  2. 不可在for 循环中delete
  3. 封类的好处: 逻辑归类、传参统一、接口抽象
  4. 对异常的嗅觉:日志异常、功能异常、流程繁琐等保持钻研的态度,死磕,才能真正避免bug。因为有些历史bug,只是前期需求未做,会因为新的需求暴露。
  5. 线程开发模型:
底层需求 实现方式 备注
I/O密集 线程:异步事件驱动模式(单线程循环等待事件)
CPU密集 线程:同步并发处理(来一个任务起一个线程)
混合模型 由工作线程处理,主线程保持响应
  1. 结构体设计:
  • 业务层次决定结构,而不是代码技巧决定!
    不同的业务理解,结构也是不一样的。而且最拟合的抽象,主结构体层次几乎是定的,其他辅助结构体可以设计。【参数模板的for循环取数据,应该是根据组件来取,而不是统一取】

  • 开发过程比较高效率的是map,但是前端或者展示的结构体,往往是List类型。
    不同阶段需要的结构体不一样,也需要支持转换

  • 当数据存在多个阶段的结构体时候,这个时候,衡量下以哪个为准。
    参数开发的需求,param cr -- configmap。不断迭代的过程中,为了升级,保持configmap的数据是唯一的,param cr是可以不断优化使用方式。

  1. 语言开发
    python -- 单继承(大属性)+ 多组合
    golang -- 组合 和 接口,分开设计

  2. 基础设计模式

关系类型 自然语言描述 设计原则 适用场景 代码体现
继承 (Inheritance) Is-a (是一个) 复用父类代码,建立类型层级 子类确实是父类的一种特化,且需要复用父类的默认实现。 class Dog extends Animal
接口 (Interface) Can-do (能做...) / Like-a (像...) 定义契约,解耦,多重继承能力 多个不相关的类需要具备相同的能力;或者需要对外暴露统一的标准。 class Bird implements Flyable
组合 (Composition) Has-a (有一个) 复用功能,降低耦合 类A需要使用类B的功能,但A不是B的一种。(你提到的“包含关系”应归于此) class Car

黄金法则:优先使用组合,而非继承 (Favor Composition over Inheritance)。
这是《Effective Java》和《设计模式》中最核心的原则之一。

八、架构优化/改造


  1. 如果技术储备够,更好的设计是相对容易的,难点在于,对既往业务的代码梳理。【分层 + 抽象 + 总结,才能得出最适合的架构。而不是纸上谈兵,拿着设计模式的书指点江山】
  2. 架构优化,既要参考历史的代码逻辑,又要跳出之前代码的框架,目的为了新的代码,更贴近贴近业务的本质。

状态翻转的架构调整:
crdUtils.GdbDataHeadlessServiceReady: r.CheckIpBoundImage,

最开始自己的想法:

  • 为了让自己的架构去适应旧的代码逻辑,做到面面俱到,顾此失彼。
  • 重点不是stage的设计,而是整个流程返回值的处理。

正确的想法:

  • 旧的代码逻辑适配新的代码框架:把握大方向,再贴合业务的情况下,旧的代码逻辑适配新的代码框架。r.CheckIpBoundImage 合并了之前的两个函数 check && reconcile。
  • 新的代码框架不可能面面俱到:大方向已经优化的前提下,适配的过程中,小方向可以增加算法复杂度。翻转之后,不需要引入额外的cr stage更新,先做到代码层级的更改。

pipeline
-- child module 【通过chlid module 子函数实现stage注册,然后通过 father module 通用函数实现通用逻辑 】
-- child stage 【通过chlid stage 子函数实现action注册,然后通过 father stage 通用函数实现通用逻辑】
-- child action 【执行具体指令】

九、代码实现


  1. 学习顶级的项目框架,初期复制顶级的就是最好的
  2. AI生成
  3. 不得已自己来写,但是要100%投入,代码每一行需要的严谨性是逆天的。

十、汇报


在腾讯时,老板对我说的原话:我知道你慢慢做可以做的非常完美,但是我们没有时间。结果呢?在李老板的敲定下,我就是做出了一坨屎,然后大家反复开会研究这坨屎该怎么更好的run起来,满朝文武竟无一人敢言这是一坨屎啊后来,我才明白李老板也有苦衷,他刚接手不久,面临汇报压力,几个月后,传言,李老板去跟更大的老板汇报的时候,不是很满意再后来,李老板就不再负责我们的saas业务了再后来我在知乎上看到了一句醍醐灌顶的话:你在顶级互联网大厂里工作,技术能力并非是最重要的,最重要的是要向上管理,要敢于跟上面画大饼,你就可劲吹就行了,这样你才能拿到更多的资源,得到更大的重用,千万别傻不拉几的要去彰显自己的技术能力和深谋远虑,没人愿意跟傻子一起玩。你可能会问,那达不到预期怎么办?这点你就真外行了,在大厂里,少说百分之八十的项目都会在两三年内完蛋,你的老板都会被调走,懂了没有,这个,才是核心技术没有编故事,下面有本人在腾讯的offer和履历egonlin.com/offer.html所以,呼应一下主题,并不是进了国企你就废了,

作者:Egon林海峰
链接:https://www.zhihu.com/question/447150952/answer/40942139954
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你分享的经历,在大厂环境中颇具代表性。技术能力是立身之本,但若想放大个人价值、影响决策,“向上管理”与“做好汇报”确实是另一项核心技术。

这并非提倡虚浮,而是一种将个人专业判断,高效转化为组织共识与资源的专业生存技能。下面,我从PPT制作、向上管理、演讲汇报三个维度,拆解这项技能的具体要求。

🎨 PPT制作:不止是美观,更是“决策工具”

在大厂,PPT常被视为一种“权力舞台”,其核心目标是辅助决策,而非简单记录

  • 逻辑为王,结论先行:这是PPT的灵魂。内容组织应遵循“金字塔原理”,以“结论先行”为原则。结构上可采用“执行摘要—目标与范围—KPI仪表盘—里程碑—问题与风险—资源请求—下一步”的框架。每页PPT最好只讲一个核心观点。
  • 用数据讲故事:数据要转化为洞察。每张图表标题都应是结论句,且所有数据都应有对比基准(如目标值、去年同期)。
  • 视觉服务于逻辑:页面设计应简洁、清晰,确保风格统一、排版整洁。使用专业模板是捷径,切忌堆砌花哨动画。

避坑指南:要警惕“形式压倒内容”。PPT能力不等同于画图能力,核心永远是对业务的深刻认知。若组织推行“去PPT化”,本质是要求更精炼的结论导向沟通,需要随机应变。

🚀 向上管理:主动经营与老板的“信任账户”

向上管理的核心是与上级建立信任,从而为自己和团队争取到更有利的工作环境与资源

  • 切换视角,对齐目标:要尝试站在上级的角度思考问题,深刻理解其KPI/OKR,并思考自己的工作如何帮助他达成目标。汇报时要避免陷入执行细节,多展现对业务整体目标和ROI的思考。
  • 建立“信任闭环”:通过持续、透明、可预期的沟通建立可靠的职业形象。
    1. 主动汇报,管理预期:在项目关键节点主动同步进展,管理好上级的预期。一个实用技巧是让上级“看见”你的付出,如在周报基础上增加简短的日报。
    2. 带着方案提问题:汇报问题时,必须同步提出合理的解决方案,而不是把问题抛给老板。
    3. 识别风格,投其所好:观察老板是结果导向、过程控制还是细节控,据此调整沟通的颗粒度。
  • 洞察“潜规则”,管理信息差:大厂信息层层传递容易失真,你的工作成果需要主动、有效地“被看见”。同时,要厘清自己在组织中的位置(如是否是“嫡系”),并利用出差等场合进行非正式的、务虚的沟通。

🎤 演讲汇报:把“思想”精准“植入”听众大脑

这是将PPT和向上管理策略落地的临门一脚。

  • 演讲前的准备
    • 预演与准备:重要的汇报可能需要一周的准备时间。要提前设想老板可能提出的尖锐问题并准备好答案。
    • 控制时长:通常需要在15分钟内讲清核心,重点突出,避免信息过载。
  • 演讲中的表达
    • 清晰的逻辑:表达要有条理、有说服力。可采用“情境-冲突-问题-答案”(SCQA)的叙事结构。
    • 自信的台风:保持眼神交流,使用自信、专业的肢体语言。你的表现会直接影响听众对你所汇报内容的信心。
    • 精准回答提问:回答提问也是汇报的一部分。对于尖锐问题,冷静、专业地回应,这正是展现你深度的机会。

💎 总结

你提到的“核心技术”——做好PPT、向上管理和演讲汇报,本质是一套将个人专业能力转化为组织影响力的方法论。

你的故事也印证了,在大厂,很多项目可能失败,老板也可能调走。但在这个过程中,如果你掌握了如何思考、如何表达、如何争取资源的能力,那么在任何地方,你都具备极强的生存和发展的底气。这并非投机取巧,而是一种值得投入的“元能力”。

posted @ 2025-04-22 16:10  静水深耕,云停风驻  阅读(15)  评论(0)    收藏  举报