看过很多人写架构设计的文章,绝大多数都是站在企业的角度谈“术”的层面。而当今的时代社会特别是00后门更多的会站在个人的角度,去看架构设计。个体和超级单体时代也已经来临,很多传统意义上的企业管理模式也在改变。所以如果架构设计面对当今的变革,如果不能随时应变。那它也是毫无价值的。那从个人的角度出发架构设计有什么好处和意义呢?
首先不论软件项目的大与小是团队开发还是亦或个人完成。只要它做出来有要面对的客户群。那么它都有三要素要关系要具备。那就是“成本”,“效率”,“质量”。而架构设计本质是约束他们三者在既定最优的范围内。而架构设计的终极目标对团队来说是让研发降本增效,确保交付质量。而对于个人来说意义更重大,庄子云:”技近乎于道”,通过”事上炼”去感受自然与生命的乐趣,并幸福的生活着。
架构设计起源于国外这是不争的事实,但是我们全盘西化接受外国的技术和建议。其实并不符合我们国内程序员的现状和要求。对国内企业来说客户拥有高效、高质量、低成本的交付是一直不断追求的目标。而对个人来说,钱多,事少,离家近是追求的目标。节省下来的时间多做点爱好的事,才是幸福生活(这是绝大部分普通人的想法)。
然而系统开发的复杂度,远超这群普通人的想象。各种加班“996福报”,各种“产品vs项目pua”。各种无法按时交付,客户投诉,故障事故层出不穷等等。最后落得别考核被裁员,生活没过幸福,身体健康也每况愈下。
人是吃一堑长一智的动物。懂得需要架构设计就是长“智”。软件项目是团队合作的,开发从开始写第一行代码开始,就开始了项目复杂度的不断“熵”增直到”热寂”的生命周期之旅。但架构设计就是要约束这种熵增,延缓它的熵增,增加它的有序,而延缓它的无序性发展。(感兴趣可以看看一篇文章:《代码猿起之有序与无序》)。
而当今的项目中架构设计遇到的是什么样的困境呢。首先是经济下行环境下架构设计的职责转换。在之前资本充沛,社会整体高速发展的时代。软件也迎来了蓬勃发展的最好时代。那时候的软件架构设计师的主要任务是写美观的ppt,摆阵势上规模蓄积人力,多拉风投。有钱能烧项目就转得动。其实与架构设计的原则方针已经背道而驰了。而在当今的经济形似下行中,行业中企业需要精专特新,个人需要工匠精神。架构设计作为专业技术能力也在逐渐的回归其主要任务:降本增效保质量。
其次,当下在很多企业中,高级开发程序员与专职架构师混淆互用。在国内的研发团队中,中小公司不需要专职架构师,高级开发和模块小组组长可替代。而大公司架构师委员会得闲人也不是一般人可以进入的。所以通病就是缺少实干且有高度视角的架构师。
另外,架构师技术优劣也是对团队成员的工作和生活影响巨大的因素。有个架构师不做恶不作为就已经很好了,而有的缺乏专业技术素养,失误指定的决策和规范将导致增加研发负担也时常发生。影响团队士气,以至于后期团结,以及占用团队成员个人休息的时间,这些都比比皆是,伤害满满。
总之,在当今社会,每个人个人追求肯定是优先的,而追求架构的个人终极目标,需要在“事上炼”达到企业架构目标的终极要求的同时,满足个人终极目标。并提炼升华形成自己的生存之道。所以我们仍然必须在架构设计的精进的路上“格物致知”。贴近完美解决团队内项目的三角关系的方法是可寻可追求的。后面我们会行从 技术角度来说说,如何降低成本,提高效率,确保质量,愉快生活。