|没有架构师的命,却得了架构师的病( 四 )


很大程度上是因为 , 很多程序员 , 不懂的代码的扩展性 , 不会面向未来编程 。
|没有架构师的命,却得了架构师的病
本文插图

怎么叫做面向未来编程?
一个好的工程师 , 在听到需求的时候 , 可以根据自己的业务能力 , 判断出来这些需求中 , 哪些是有可能变化的 , 哪些是不太可能变化的 。
针对这些变化的内容 , 在编写的过程中 , 不会写死 , 而反复确认不可能会变化的需求 , 会写的简单一些 , 防止过度设计引起的复杂度 。
简单说 , 当他拿到需求时 , 并不单纯是考虑这个需求怎么实现 , 还会考虑 , 自己设计的架构体系 , 扩展性在哪里 , 在他的眼里 , 看到的需求会被分解 , 折分 , 然后自己的技术方案 , 会挨个分解 , 分配 。
在完成设计之后 , 他会很清楚的知道, 自己设计的系统里 , 哪些变化是支持的 , 随便你改 , 我只需要改动一个很简单的内容 , 哪些是你绝对不能改的 , 你要改 , 我就必须花很大的代价 , 特别是在已经有线上数据的时候 。
而且会拿着自己的架构体系跟 PM 沟通 , 讲清楚 。
什么样的变化是支持的?短信通道是有可能变化的 , 而调用短信通道的地方可能会有点多 , 所以我必须把短信通道抽象 , 并封装在一个公共接口 , 如果需要更换短信通道 , 我可能只需要更改一个配置文件就好了 。
那么什么样的变化是不支持的?我不需要不停机就更换短信通道的功能 , 除非你在后台系统中提前配置好 , 或者是有明确的需要 , 我做出这么一个东西出来 。 往往在前期 , 不会用到 , 为什么?
在创业初期 , 短信通道往往用于用户注册 , 一旦出问题 , 就是生死问题 , 必须要有一个备份 , 运营商一怒封掉你的通道 , 很常见 。
而重启一次服务 , 在创业前期 , 往往没有那么严重 。 所以 , 这些技能 , 是不是也应该归纳到架构师的职责里去?
架构师从开始就要考虑选型 , 从语言开始 , 从业务开始 , 要对这个领域里的开源框架熟悉 , 了解 , 要能解决疑难问题 , 要懂安全 , 要会备份 , 要学会面向未来编程 , 还需要什么?
还需要 DevOps , 在持续集成的年代 , 在服务器规模越来越大 , 在云服务器的年代 , 在异地存储 , 冗灾 , 在全球化越来越快的年代 。
运维的重要性已经到了一个很核心的程度了 。 弹性伸缩 , 自动扩容 , 灰度发布等等等概念 , 要求 , 都在冲击着架构师这个概念的定义 。
如果说之前的架构师 , 更多的是在系统开发前 , 现在越来越偏于系统上线后 。
还包括数据分析 , 日志分析 , 等等等等 , 对了 , 还没有提到 NoSQL DB , 实时搜索 , 知识库 , 算法这一系列的东西 。
每一个领域都在细分 , 每一个概念都在深化 。 简单说 , 架构师确实和语言无关 , 但是又绝对和语言有关系 。
你可以说 , 架构师就是在做选型 , 但是只会做选型 , 肯定做不出架构师 。
Java 更需要架构师 , 因为他本身就是各种开源框架 , 不对这些框架了解的清清楚楚 , 你很难做出一个好的选择 , 而一旦架构被固定 , 实际业务人员的开发 , 又会变的简单很多 。
|没有架构师的命,却得了架构师的病
本文插图

中级工程师的发展路线
说到了现在 , 我有没有讲清楚架构师是什么?而你 , 还想要做架构师吗?
反正 , 我说自己是架构师的时候 , 我的内心是羞耻的 , 我知道, 我远远没达到架构师的能力 。
然后 , 我曾整理过一个中级工程师的发展路线 。
科班基础: