成长感悟
个人进阶
The most frequent question for a coder is, How to grow and be stronger! — By Caukie.
-
时刻进行记录,适时归纳、整理、复盘;
-
开发工具、排查指令、文档操作等工具的使用,并且能够尽量使用快捷键;
-
培养良好的开发习惯,减少无效操作;
-
保持头脑清醒,多思考,少走弯路;
-
关注并跟进暴露的问题,不留死角;
-
目标清晰
-
及时沟通
-
主动学习
-
ownership意识
-
追求极致
-
刨根问底
-
站在更高层次看问题
-
向上管理
-
适时总结
-
知行合一
方法论浅谈
In the world of programming, everything is complex and try to be chaos! — By Caukie.
- 设计的复杂性(需求变更,理解误差,描述不清)
- 开发的复杂性(技术选型,代码实现,测试)
- 运维的复杂性(打包发布,线上监控)
- 使用的复杂性
整体项目的复杂性不会变化,只是将复杂性分拆转移到哪个阶段,并做好边界控制,以将不可控的复杂度转变为可控的复杂度!
比如DevOps期望通过将“开发+运维”生命周期的流程标准化,引入一系列工具以降低复杂度(实际这里的复杂度只是实际落到“开发+运维”这两个阶段的复杂度);而实际上,工具的使用和维护则额外引入了新的复杂度。当然由于工具的引入,虽然无法降低整体复杂度,但是却能够实际降低“开发+运维”的阶段中,人为操作的复杂度,提升工作效率。
团队越大,分工越细致,也就是一个复杂度分拆的过程,将复杂度尽量控制在各个子节点进行控制,但是额外增加了节点之间协调的复杂度。类似的,开发中引入框架,平台也是希望降低开发复杂度,提升开发效率,极端的,使用低代码平台,可以直接降低开发门槛,交由非专业人员操作。而这一系列动作也是基于框架,平台自身复杂度被内聚约束,一旦这部分复杂度被泄露,则反而会放大开发的复杂度。
聚焦:
如何高效的解决问题!—— 开发角度即研发效能
趋势:
整体复杂度不变的情况下,
- 1,分工会越来越细致,每个节点复杂度被不断稀释,而协调各个节点的复杂度则随之上升;
- 2,封装层级会越来越深,复杂度不断被内聚到平台内部,开发复杂度下降,门槛越来越低,但是平台自身的复杂度则越来越高!编程语言的演进是如此,Spring是如此,Mybatis是如此,DevOps亦是如此。