软件平台架构设计与技术管理之道
上QQ阅读APP看书,第一时间看更新

1.2 技术分工细化之殇

进入前后端分离时代后,前端已经完全立体化,MVC、微服务、组件化这些从后端而生的架构已经是前端行业的事实标准;前端近年来技术栈变化极快,几年前还是jQuery技能开发,现在已经被Vue、React取代;一个平台,后端可以采用一种程序开发语言(例如Java(2)),而平台的前端技术领域,必须要涵盖iOS、Android、小程序等不同操作系统和生态环境,不全部覆盖已很难参与市场竞争,前端开发团队,已经被广泛称作“大前端”。平台的市场竞争力,很大程度上取决于前端的能力,用户体验和外部评测,直接反映了平台大前端中异步通信、懒加载、压缩、渲染等能力的强弱;产品迭代发布的速度,直接取决于前端组件化、模块封装复用的架构力和打包部署能力;对行业新技术、新生态的跟进,则依靠前端团队技术栈和语言的学习与运用能力。

不仅如此,前端领域还是安全问题、兼容性问题的重灾区。如此发展和演变速度导致的分工细化,几乎没有开发人员同时肩负前后两端的开发角色,平台必须具备一个强大、独立发展的前端团队。

就后端来说,分工细化现象也愈演愈烈,真正意义上的双语言、多语言程序员已逐渐成为凤毛麟角。分布式开发框架解决了单体应用的扩展和演进问题,带来的弊端是逻辑角度的系统越来越多,跨进程系统服务之间的交互越来越多。同时,软件服务行业越来越专业化,人工智能、大数据、区块链等新领域层出不穷,监管和审计要求也越来越高,并成为长期趋势。云技术的广泛应用,服务网格化、开发运维一体化需要掌握和使用云原生能力,这个领域也超出了传统开发人员的技能边界。后端团队只能把有限的精力用于设计、开发平台中自己的业务逻辑部分。

放眼整个软件行业端,各个领域专业的纵深发展让产业快速茁壮成长,终端用户更是享受到了更高水平的服务。但对平台建设者来说,领域纵深发展带来的分工细化,为了实现各项新技术带来的应用赋能价值,使得平台依赖越来越多的三方平台及服务,大到OCR、电子签章、人脸识别、指纹认证、图像处理加工、自然语言处理、大数据处理、BI、文本解析、高速搜索,小到短信、电子邮件、滑块、CDN、地图,甚至如App消息推送这样的细分功能领域,都有若干专业化公司。你所面对的,是真正庞大的系统群、集团军。广泛集成各家所长,已成为必然趋势。

技术变化快,分工细化,平台工作层级变深,跨机构、跨团队联合开发方式增多,这些客观原因使得整体工程的堆积和拼凑问题日益严重。很多人看到过这样的场景,一支技术队伍大换血,其原来做的系统就被推翻重新做,在互联网这种快速迭代的行业尤其明显。刨除内部斗争、文档不齐全或工作未交接等人为因素,技术分工细化导致的“代码工程过于庞大,可维护性差,承接下来成本过高,与其重构还不如推翻”问题,更是致命原因。

不仅是研发、运维板块,项目管理、质量管理领域的技术和工具也在急速发展,每年都会听到“使用××工具能进一步提升研发效率,咱们应该引入,需要增加人手”的建议。从各角度看,平台的体积都在呈现不断膨胀的趋势。

总体来看,行业趋势代表着正确的发展方向,平台能力得以持续不断地提升。但同时,行业技术发展加速了分工细化,后者反过来进一步催生技术再发展,如此循环上升,技术人员必须克服“被其绑架”的困境。

平台技术负责人已经不可能在各个细分技术领域都是专业上的通才,无法将主要精力放在技术深度方面。面临着技术团队庞大化、技能差异化,技术负责人工作价值和竞争力的体现,必须聚焦于“平台技术能力视角”的整体蓝图,作为各条产品线开发团队的总架构师、布道师,进行全局分域规划、应用系统及服务的颗粒度设计、能力支撑和公共抽象、平台级的组件建设,并编排各条产品线间的服务治理、系统间关系、技术复用,清晰知道目前进行到哪个阶段,筹划要具备什么能力,价值是什么,以及对问题的合理性技术决策。