文 / 王不留(微信公众号:程序员生存指南)
1.
作为一家行业软件企业,公司目前有七大产品线,四十项主产品,以及延伸出的几十种定制化产品。其中,多款主打产品,在行业内占有率很高,是公司主要利润基础。
余下的产品,并没有产生较好的效益,虽然有各方面原因,但研发人员能力参差不齐,一定程度上也制约了整体产品的完善。
一个公司,人才是最关键的因素。优秀的产品需要优秀的架构做支撑。优秀的架构师就起到了非常重要的作用。
长期以来不少架构师对软件架构设计还存在一些偏差:
1)技术至上,业务次之
只关注了技术,对业务缺乏深入思考和长期思考,对业务理解深度不够,缺少为未来的预判,导致架构不稳定,容易发生变化。
2)架构理解肤浅
对架构的理解只停留在了表面。只是为做而做。以微服务架构为例,大家都知道微服务架构极具优势,但并不适用所有的场景,在大部分场景下效果适得其反。
有些项目本来只需要传统的MVC架构就可以支撑业务需求,非要上个微服务,无形之中增加了系统的运维复杂度。
3)幻想设计通用稳定的架构
其实并不存在一成不变的架构,通用和稳定都是相对的。
公司的一些优秀的产品的架构,是随着业务和技术的发展逐步演进的,是经过一代代人不断总结经验、抽象归纳的结果。
但是,这些优秀的架构能力和思想并没有广泛的普及和传承下来,对企业来说,就是一种巨大的损失。
为了提升产品架构能力,就需要通过对存量产品架构的学习和分析,找出现有产品架构的优点和问题,制定目标优化方案,对部分产品进行优化改进,并形成一套行之有效的架构规范及原则,培训推广,指导新产品、新项目的研发设计。
具体改进措施可以这样:
1)架构梳理
收集并梳理实现业务需求所面临的架构问题、当前各个产品的架构设计。模板格式可以包含:业务核心(解决什么问题)、技术架构、模块组成、安全机制、版本管理方式等。
2)分析评审
组织技术经营委员会进行架构学习和评审,由产品负责讲解,专家共同分析架构优点和问题,达成统一意见。
3)方案编制
由每个产品根据评审结论提出优化方案,确定产品是否要进行全部或部分架构优化,并制定优化计划。
4)落地跟踪
公司技术委员会负责跟踪需要进行架构优化产品,确保能落到实处,并在落地过程中给予必要的指导。不同类型的产品可以考虑形成独特的架构模式。
5)编制规范
公司技术委员会牵头编制规范文档,以及模板,推广学习及应用。
6)规范导入
在项目管控流程中增加架构评审环节,新研发项目、实施项目的,必须通过架构评审后,并输出满足要求的架构设计,才可以进入详细设计和开发阶段。
2.
以上是对架构设计改进的思考,架构搭建好后,开发人员编码质量就对产品的稳定性有着较大影响。
经验不足的开发人员拿到需求后,首先会找其他模块是否具有类似功能代码,然后参考开发,或者复制粘贴;对于没有参考代码的,上网搜索后拷贝示例代码修改实现,缺乏独立思考的意识,或者说不知道如何思考,产品的质量基本依赖已有代码样例的质量。
随着需求的变化、业务数据量的增长导致代码编写不规范的问题开始严重,代码将变得越发不可维护,后期因需求变化、系统故障导致产生大量开发和运维工作。
提升开发人员编码水平可以考虑以下方法。
1)软件设计理论学习
面向对象的设计原则及面向对象的设计模式是编写高质量代码的基础,需要技术架构师大力推广学习,要普及到每一位开发人员。
2)阅读分析优秀源码
阅读优秀代码是提升技术的最佳途径,通过大量阅读别人的代码,可以学习更先进的方法、风格和架构模式,让自己的技术能力和知识不断的增长。
3)优秀代码分享
每月/或更长周期组织一次代码分享会,由各产品组推选优秀代表,对代码设计进行分享,参与人对每场分享会的代码进行打分。
一方面可以让大家学习高级程序员的代码设计、编写思路,同时也可以锻炼程序员的总结表达能力。而且在讲解的过程中,还能发现一些可能的隐患和优化的空间,分享者和参与者都会有较大收获。
4)优秀作品展示
在公司内网站开辟专栏,或者内部期刊有选择的发布优秀源码分析文章、优秀产品源代码,供企业其他部门员工学习,共同提升。
5)采购知名网课
在网易云课堂、CSDN学院、慕课网等技术学习网站,采购知名的研发课程,集中学习,共同提高。
* 作者简介:王不留(微信: wbliu85),早晨四点开启奔跑人生的一枚非典型程序员。
关注微信公众号「程序员生存指南」,收看更多精彩内容软件企业研发人员能力提升方式