【声明】优快云只做转发不做时时更新,最新博客请关注博客园 如何做好软件架构师 - 唐宋元明清2188 - 博客园
本文以个人视野聊下软件架构师的工作以及软件架构设计知识。做开发工作接近10年了,期间主要做Windows应用开发。在成熟的“华南区最大WPF团队”希沃白板呆了较长一段时间、后面从0到1构建Windows技术栈以及会议屏软件集,在软件设计这块自己成长了很多。需要梳理了解的软件设计,自己阶段性总结一下
先讲软件架构师,职责是服务团队和项目产品,角色对应的工作范围:
-
跟进项目进展 - 根据优先级随时支撑需求开发延迟、客户严重问题
-
关注项目质量 - 审核开发提交代码、浏览仓库最近改动,代码是否有实现缺陷、设计扩展问题,确认需求开发、问题处理有无更优解决方案
-
解决疑难杂症 - 项目及产品肯定会遇到一些难复现、路径深的技术问题,业务功能会有性能瓶颈及框架类问题,这些都需要架构师参与定位解决、提供技术解决方案。不要让问题阻塞项目节点,或者沉淀为团队的技术债务,要尽快解决
-
持续技术创新 - 当前产品的性能、框架是否需要继续优化,产品可预见的发展方向上技术可行性是否都已验证
-
推进团队成长 - 组织技术栈培训技、把技术知识变成团队内的常识,带头分享技术实现、软件设计概念
架构师如何做好呢,我们下面以项目、团队、个人三个角度详细说下
架构师需要善于发现问题。架构师是全局性角色,需要关注的面很多,可以站在团队、项目、公司的角度多思考技术层面自己还能做啥,要给自己找事情做。发现问题比解决问题更重要,产品功能是否不是最优方案,小伙伴提交代码是否有缺陷,发现问题不一定要你自己去解决,可能其它人解决比你更适合。在会议屏软件全家桶开发过程中,软件从0到1开发的数量多,另外团队人员最多的时候12个,每个人都在疯狂开发需求、提交代码,有些功能没有想清楚实现或者设计就拍脑袋敲代码了,最后方案改了一版又一版。也有一些功能没办法尽善尽美,针对一些小使用场景、逻辑边界测试提了BUG,开发未能权衡取舍,最后代码改了又撤回。如果架构师去关注项目开发流程,以自己扎实的技能、敏锐的直觉去把一些技术风险找出来,减少测试成本、软件后续维护成本,降低低级严重向客户暴露的风险、提升用户体验。还有产品的启动性能、业务耦合问题等,要以全局性眼光多发现问题,先把问题抛出来
架构师需要学会打杂。功能迭代开发进度延迟、客户反馈线上版本紧急问题,人员不够或者时间原因,需要你主动发现并顶上去,架构师不只是写自己代码、更应该是一个能救场的。问题无论简单或者复杂,代码不论是UI还是框架,你都应该能Hold住,而不是按照自己偏好只搞架构、框架。首先架构师的工作肯定是饱满的,问题过来了你能合理评估优先级,能及时调整去协助。这中间需要你提升平时的工作效率,效率提升才能完成更多的任务。
架构师需要技术创新。当前项目那些遗留的技术债务要抽时间突破;之前急于开发但未确认的技术选型,要严格对比高性能、高可用确认最终的技术方案;产品后续发展方向或者3-5年可能会去考虑的功能,要去提前确认、研究技术可行性形成技术组件,提前设计相应的架构/框架去满足后续的业务复杂度。这些都应该是常态化的工作,定期思考、整理下,还有哪些技术后续需要考虑的。当然这技术创新,不只是功能开发,还可以是非功能比如代码的稳定性、业务操作的CPU性能/内存损耗、软件的后续扩展性等等,比如设计高性能、可扩展、可维护的通信组件也是一个NICE成果。
架构师需要考虑团队效率。如何提高团队开发速度,如何降低维护成本、保障产品稳定性,如何让团队开心的写代码?首先,就需要清真的代码逻辑、清晰合理的模块分层,除了个人开发的能力外,架构师可以多考虑组件化比如抽取日志、配置