架构师101之我的实践
阴差阳错之下,我在两个月以前成为了一家 AIGC 初创企业的架构师,而我的练习时长其实不过两年半。在这两个多月的实践当中,我发现之前作为 IC 的一些实践对我现在的工作非常有帮助,因此撰写此文,一做总结好给以后反思,二也可以在后辈有需要的时候供其参考。
行文松散,踩着香蕉皮想到哪写到哪,还请见谅。
大厂中层与初创架构师的区别
虽然没有当过大厂中层,但是见证过大厂中层都在干什么的我,在这里可以给两边的工作重点进行一下对比,以消除没有相关经验的人的误解,同时为后面讨论架构师的基本素质做铺垫。
大厂中层在产品成型之后,一般做的是拓展原有功能的工作,对于原有架构,一是由于非自己亲生,理解不一定到位,二是由于无过即有功的思想,也不会贸然更改。于是他们的工作重心不在于推进架构的改善。同时,由于大厂基建、制度相对完善,通过企业级的 PUA 实践,一方面限制了下面员工的才华充分发挥(上限),也保证了资质不好的混子不至于把项目拖垮(下限)。因此,中层们需要做的就是在 Kick off 前管理上级预期,拿到更多功能,以更少的成本(人力)开发,在当下开发出更多的功能,以此换得更好的绩效、年终,从而推进自己和上级的晋升。从这个角度看,大厂中层没有任何义务对架构进行重构等提升“下次”开发效率的投入,因为“下次”不一定还是自己,而“这次”付出的成本是实际反应在自己的绩效上的。
初创架构师的工作则更像是所谓的架构师,由于初创公司没有历史包袱的特性,初创架构师可以针对当前的业务和团队的技术栈,投入全部心血打造一个足够好又不至于太昂贵的架构。同时,作为中坚力量,不会像大厂中层一样为了当下的利益而不顾开发效率的降低。因此初创架构师将投入精力在亲自编写代码、改进架构、代码评审、效率工具开发等方面,以提升整个产品的各项性能和可维护性作为自己的追求。
实际上,BAT 初期也是像初创一样的,有一批中坚力量的架构师既可以 coding,也可以做需求沟通,出现重大问题时穿梭全场力破千军。
这就导致了一个最直观的对比:大厂中层在几年之后武功尽废,只会职场斗争,再也离不开大厂;而初创架构师可以连续创业,或投身开源事业,成为一代宗师。这也是为什么大厂在新项目的时候会成立/收购新的公司,并将其独立于集团的组织架构发展,因为大厂的这一套大公司系统并不适合创新。
初创架构师所需要具有的素质
根据我自己的实践和阅读,总结了初创架构师比较重要的能力
架构设计与技术选型能力
准确地说,是从零到一,从一到万的架构设计能力
- 架构设计能力:分层、依赖反转、领域模型
- 技术选型能力:最重要的是延迟选择,从而获得最大的架构灵活度
- 评估预算:容易忽略的是运维成本和升级成本,需要把整个生命周期考虑进去
Coding 能力
初创架构师需要身先士卒,以下三点是必须满足的。对于手下的IC来说,按照这三点培养也是必须得。
- 精通语言
- 可维护的代码
- 解决复杂业务
沟通能力
这一方面主要是上下游沟通,架构师可能不是产品经理、也不是某个具体功能的研发工程师,但是需要同时理解他们二者的诉求和困难,以此使得团队可沟通、让事情丝滑地推进。
- 需求理解与沟通
- 任务分配
Ops 能力
架构师需要懂得一些运维知识才能在重大问题时更快地进行解决,同时不增加专职运维的工作负担。甚至初期可以不需要专职运维加入团队。
- 容器编排
- 云厂商
- 可观测行
团队建设能力
初创团队往往没有专职的效率工具开发人员,为了确保研发人员的开发效率不会因为代码量的增加和架构的复杂化而降低,架构师需要承担起这一部分职责
- 团队效率建设:包括DevOps各种工具(CI/CD)建设,单元测试建设等等
- 知识传递:包括wiki、code review、tech meeting
架构师与CTO的区别
其实架构师是一个技术上的划分,而CTO是公司治理上的划分,二者角度不同,所以不具可比性,只能说异同点。而二者的区别主要体现在沟通上,CTO需要与CEO和CFO沟通业务和预算情况,而架构师一般只需要和产品经理、项目经理以及研发人员沟通。通常在大一点的企业,架构师是类似VP担任的,而所有架构师向CTO汇报,以此帮助CTO了解整个企业的技术情况。在小公司中,可以一名架构师一个CTO,也可以一名架构师,CEO兼任CTO,主要看每个人的背景和能力,做出当下最好的选择即可。
推荐读物(持续更新)
- 架构入门:《凤凰架构》、领域驱动设计
- Coding:《代码整洁之道》 《代码精进之路》 《设计模式》
- 语言:《流畅的 Python》
- DevOps: 《凤凰项目》、《DevOps 实践指南》、可观测工程
还有一大堆杂书、各种CS理论的入门教材(比如密码学、云计算、计算机网络等)