关于架构、架构师的一些事情

在架构搭建和技术研发上,除了正常的行内人的有益争论,相信大家往往也会受到一些行外人的质疑和其他目的干扰(说实话,经常遇到一些半吊子或啥也不懂的高大上的人拿着一些看似高大上的名词咋呼咋呼,比如架构、重构、敏捷之类的,对于TA们,我有看马戏的心情,也有深深的惆怅,当然有时也会得到好建议),作为一名现在还写代码和搭建架构的老程序员,我觉得有必要写一些东西,提出一些问题,说说我的思考,期望看到大家更多的反馈,看看这些问题是否很普遍(可能在一些非技术公司、没有工程师文化的工程师团队中尤其)?大家是怎么解决的?

何为重构?何为可控性和可用性?

=========

首先,这个重构非外行人理解的对架构的完全推翻重来,绝大多数情况都不是这样!!!要真的这样,外行人早就屁滚尿流了。有时候修改一些架构底层的Bug或微调一些代码配置也算是重构。

我说的这个重构(Refactor)是技术架构重构,不包括业务架构重构(这个我外行)。我们行业,对技术和架构的重构是普遍的。一个是为了满足不断更新的需求,还有就是为了满足团队更高的效率、实现新发现的更好方法、让架构更适合团队节奏、修复一些大小问题等。不管是依赖于第三方架构、还是主要使用自己的架构。 有些重构可能只需要一个技术人员的一个小时就完成了,有些需要整个团队几个礼拜或更长。但我觉得要避免对非行外人员说重构,因为这会吓坏他们,他们在把这不熟悉的问题放大,情况就变为非技术化的甚至是政治化的,那么就真正恶化为难以控制了。

一般而言,现在大多数公司的平台开发都同时依赖于第三方架构和自己的架构,无非谁主谁次的问题,这里有个平衡点,主要就是要根据技术团队的实际情况考虑可控性和可用性。

比如一把宝刀,如果让一个不会舞刀的人来拿,就会很危险,就没有可控性,可用性也不会好(还会砍到自己),我会建议这个人拿菜刀,而不是宝刀,菜刀也许更适合TA,如果菜刀不适合就需要给TA量身打造一把刀了(可能是木头刀);如果砍的目标是高手,我们就要当机立断的把TA换成高手再根据实际情况找合适的刀。放到到一些我们程序员遇到的实际例子中,相信大多数每个月都会有这样大大小小的可控性和可用性考量。

怎样成为一名架构师,并建立架构?

=========

何为架构师?我没有资格去做定义。我只说说我所接触的国内的一些现状。相当部分架构师是一种技术职位比较高的级别,所以你就会看到有些人写了本技术书籍,就被某公司升级为架构师;或者某程序员在某公司工作了8年,然后就被升级了架构师;或者是某些咨询公司为了忽悠所需,把一知半解的人的名片印为架构师……即使是这些架构师,真正自己写过架构的有多少呢?据我了解很少。有多少架构师还在不断接触新技术并且动手实践,还在不间断的和团队一起或多或少的写代码呢?更少。只会使用别人架构的架构师本身就是一个很大的缺陷,只会嘴上架构的就是一个大忽悠。这些架构师和那些建立技术架构的人,本身就没有多少关系。

那么如何建立技术架构呢?我觉得,没有大量编码项目实践经验,没有大量的解决技术问题的经验,没有见多识广过很多其他架构,没有自己大量思考积累的,就很难建立真正的技术架构,至多也只建立了一个简单过程而已。如果你还要问怎么建立技术架构,我会说:大量编码项目实践经验+大量的解决技术问题的经验+见多识广过很多其他架构+自己大量思考积累+动手实践动手实践动手实践(最后一点最重要,重要的说三遍)。我这几年建立的架构,我在设计完成后,都会找机会实际进行Coding去完成具体的业务需求,从而实现从下到上的体会和调整,不能只有由上到下。

……写到这里,我脑海里想起那位仁兄可能会拿起一本字典,对我义正言辞的说,你看这个字典对架构师做了明确的定义,不是你说的那样……好吧,兄弟,嗯,我觉得我们说的完全不相干的两码事,但你赢了。

架构和编码质量的关系?

有人说架构和编码质量的关系,就如大楼设计和室内油漆工的关系,油漆工不认真导致油漆刷的不均匀,和大楼设计有啥关系。嗯,这个说法大部分我都同意。但我的经验告诉我,建立一个架构,必须要考虑实现这个架构的技术团队的实际情况,也就是要把人的情况考虑进去,当然有时候还得把政治考虑进去。

最后这点,我就说的简单一些,分享一下我的经验。比如团队里有实习生,有普通程序员,有资深程序员,在设计架构时候,就要考虑分层,不同的层,对技术要求不同,比如需要增删改查的抽象出来作为业务处理层,只要实习生或普通程序员有基本的增删改查编程技能,再熟悉一点业务,就能开发了,再在架构上附上硬性的TDD要求,让这些菜鸟不跑过单元测试,就完成不了任务;而下面的几层,可能涉及交换、MQ实现、复杂算法、驱动、连接池等,就交给资深程序员吧。这样,就满足的团队的实际情况,兼顾了效率和功能实现,还能在资深程序员经常review上层简单业务代码的情况下,提高代码质量,并协助提高初级人员的编码技能。

什么,你不信,那没事,你试试让一个普通程序员走进满是对象和设计模式的Framework里,看看他的编码质量会有多高,看看他会不会迷路……也许等他从迷宫走出来,你竞争对手的产品都已经开发完了。

 转自:https://mp.weixin.qq.com/s/KWqXxpEl46bGy4snFnLTPw

posted @ 2019-04-07 10:23  浪花98  阅读(164)  评论(0编辑  收藏  举报