其实也看了很多个从外包跳到大厂,然后和普通人拉开巨大差距的案例。都是卷的很,也有方向计划的卷。说是卷,其实也是对编程的一种刻意训练。
那么如何往上对齐架构师的发展道路,就算是在外包也能与众不同?
观察自己公司的架构师
最好的老师就是身边的架构,我们有一个固定时间都要把自己设计的大方案给到架构师评审,注意他提出后的所有建议。和自己原有的方案之间的gap。
代入如果自己是架构师,会对方案做出什么建议。
深层次思维&产品设计
改变自己的思维方式,顶层抽象、功能架构、服务关系架构、部署架构、服务拆分、边界、依赖关系。
方案对市场、资源、人力等各个因素的影响
抽象的东西具体化,复杂的事情简单化,每个人都能清晰了解自己的职责、有序地实现各自的功能并且拼接成一个大的系统。
有时候也不能一股脑儿想着怎么结局高并发等问题,可以通过产品设计来规避,比如B站的深度分页只支持前500页,如果使用接口调用更多页数,则会识别为攻击全都展示一样的页数。
学习和挑战
终身学习的心态,需要有抽象的能力,工作中主动申请做更复杂、更有挑战性的工作,迅速得到公司的认可,放到现实场景,回想下自己是不是更趋向于简单无脑的工作或者说得心应手舒适区的工作。
多做总结,每次遇到问题和知识都结构化总结一下,形成知识体系。
对于一个系统的架构方式、部署方式(上云、单体、分布式)、数据库设计(索引、字段规范、分库分表)、核心流程(变更、需求评审、CodeReview)都是可以整理总结的内容,都是经过版本迭代浓缩的精华。
例如架构设计总结的checklist,囊括了
- 安全
- 隐私 个人信息
- 性能
- 上下游关联性,发版配合
- 功能级别开关
- 可测试性
- 可用性
- 异常场景兼容性
- 数据量增长和远见
会画PPT&计算资源
虽然很多人说什么PPT架构师,但实际上PPT没有深厚的功底和知识支撑也是无法输出的,好的PPT可以快速让领导了解整个系统的架构和升级带来的价值、风险。也能让开发看到系统全景图,不局限于自己的功能模块中。
资源的计算,上了云后,根据业务量增长推算出所需要的资源。用合理的数据、流量来评定资源规格及数量。好的设计方案可以减少很多资源。
仿照高级框架,引入适合场景的中间件
其实功能都是CRUD堆积成的,那么如何使用优雅的方式实现功能,并且同时考虑到兼容性、安全、性能,就是能展示差异的地方。
之前有个小红书的博主也是从外包跳出来,上升了好几个阶层,就是用的这个方法,看到了JD的开源框架,对FutureTask进行编排,这样就能把开源的核心思想引入开发中。
再比如项目中需要实现简单的消息中间件,就可以借助Redis。或者用kafka等
出现了需要生成有序唯一id时,可以使用分布式ID,雪花算法等。
需要用到分布式定时任务,可以用分布式锁等
紧跟时代的潮流
后续都是要做架构选型的,那么了解新的组件和解决方案也是很有必要的,可以带来以下好处:
- 更强大的生态链,社区
- 对候选人的技能匹配度重叠度更高
现有技术罗列
- 编程语言
- 设计模式
- 关系型数据库
- UML图
- 缓存数据库
- 文档型数据库
- 消息中间件
- 线程池、连接池、对象池。各种池化技术的了解
- 数据结构和算法
- 并发编程
- 容器化技术
- Linux