软件工程师在做什么?架构师在做什么?
现在的软件工程师的处境太难了,他们要工作的内容既多又杂,而架构师并没有承担起应有的责任。
在此,我说说我对目前工作中架构师和工程师的理解
软件工程师
理想中的软件工程师要做的内容:
- 接收需求
- 实现代码
- 单元测试
实际上软件工程师的要做的内容:
- 丰富和改善需求内容(产品经理?需求分析师?)
- 架构设计,包括软硬件选型、服务间调用、日志系统、监控系统(架构师?平台支持?)
- 编程架构(架构师?项目Leader?)
- 实现代码(软件工程师本职 √)
- 单元测试(基本无了,从没遇见过写单元测试的)
- 功能自测(测试呢?)
- 软件发布(CI/CD?)
- 软件运维,包括配置告警和监控,还有长期维护(运维?售后?)
架构师
- PPT
- PPT
- 还是PPT
反思
经常出现的一个现象是什么?
架构师或者产品经理拿着他的PPT去宣传软件工程师的系统,然后用户使用的时候才发现,架构师对系统功能的介绍完全是南辕北辙,反而让软件工程师背锅。
为什么呢?
一个是架构师或者说产品经理从来没有一个检验的标准,就是说大部分的人入职完全是靠PPT和演讲入职的。
而他们入职后,很多软件工程师就会发现他们在整个项目中并没有输出任何有用的信息,不是说他们的岗位应该被干掉,而是说大部分在这个岗位的人都没有符合的才能。
- 没有整理出完善的需求文档,需要软件工程师自己对接
- 没有可复用的软件架构,需要软件工程师自己搭建
- 没有可复用的建模工具,需要软件工程师自己建模
- 没有配套的测试、CI/CD、运维,一切都是软件工程师自己埋头苦干
- 甚至于,架构师说:软件工程师,你把你的软件写一份部署文档、使用文档、交接文档吧。。。。
软件工程师的反击
- 我在忙,找别人吧
反正软件工程师和项目经理之间不可调和的矛盾由此展开。
拨乱反正
架构师或者假如说你是项目Leader,你到底应该输出什么?
- 需求文档,甚至接口文档、使用文档
- 软件架构,包括源码的框架、个别复杂用例的设计流程图、多系统间的调用关系、流量管理、权限设计等等
- 提供软件的安装和部署方式
- 提供日志和监控系统
当然,上面的活不全是架构师的活,但是应该是架构师在介入一个系统时应该考虑和解决的事;上面所需要的Devops系统也并不是架构师一个人能解决的,但是如果是在没有这些Devops系统时,就更应该由架构师针对整个公司环境给出相关的方案。
如果说这些都不是架构师的活,那请问架构师的意义何在?
这里还要说一句,在我经历的很多项目和团队中,没有架构师,只有一个开发Leader,我很想说那么这些就应该归属到项目Leader身上去发现和解决,而不是无穷无尽的分配任务。
架构师如何入门?
不是说任何人看了几篇秒杀系统如何设计就是架构师了,说系统要添加缓存系统、链路上全部添加日志和监控,然后对接了xx系统就可以。
基本上,所有不是从软件工程师成长的架构师都不算架构师。
架构师,虽然有很多方向,我这边就只说一下有关我这个大数据软件工程师需要的架构师吧
- PPT能力:不能说PPT没有用,只要负责的将系统的需求和功能阐述给软件开发工程师,那么软件工程师何来那么多的怨念
- 编程能力
- 平台能力:CICD、监控、日志、K8s、Linux
- 算法和网络协议
- 云平台能力(其实我觉的云平台一直是一种伪能力,因为如果你有本地部署的能力,云平台肯定没有问题。关键是现在很多架构师都决定使用云平台,但是呢,从来没有完整的看完云平台的能力和适用场景,导致很多不适用的问题,真是拍脑袋的决定)
任何没有掌握以上能力的架构师,不配拥有我这枚程序员;或者说,难道我一直在拿着程序员的工资,干着架构师的活?
结语
天下软件工程师苦架构师久矣,愿每个程序员都能遇到最好的架构师。
软件工程师在做什么?架构师在做什么?
https://shenbinglife.github.io/2023-11-01-软件工程师在做什么?架构师在做什么?/