如何成为一个架构师

by Xenon Chau — on  , 

cover-image

原文来自:神秘的程序员们@微信公众号
很久以前有一天看过西乔姐的漫画(西乔的九卦),因为同是程序员,所以能get到很多笑点,于是一口气看到后半夜!从那以后就从博客追到了微信公众号。

微信公众号传送门:

架构师的技能矩阵

基础素质

  • 逻辑思维和抽象能力
    • 能够把产品业务需求抽象为功能、流程、系统模块、服务基础设施、时间和消息、展示框架……
    • 能看清更深层次的性能问题:可靠性、安全性、可伸缩性、可管理性这些……

知识储备

  • 常见开源项目/解决方案和各家云计算服务
  • 熟知技术开发、维护成本、资源投入
    • 特别是选择云计算的时候,要考虑负载能力、服务商的稳定性、生存能力及未来的成本上升曲线。
  • 熟知现有系统
    • 绝大多数架构设计工作都不是从空白开始,而是修补和重建。熟悉旧系统才能发现真正的症结所在,以及该如何利用和结合现有的部分。
  • 深入理解公司业务

架构设计能力

  • 评估能力
    • 评估各项资源,衡量开发/维护成本与收益。
  • 权衡能力
    • 永远对这些项目的各种局限性有明确的了解。在资源、时间、需求之间做平衡,在整体/局部、长期/短期之间做取舍。
  • 解耦能力
    • 把分析结果转换成架构设计的能力。掌握如何划分系统层次/设计层次之间的关系。
  • 接口设计
    • 如何定义接口,组织文档。
  • 风险意识
    • 能提前预测各种条件下导致的失败。
  • 设计弹性和承担变化
    • 设计要留出足够但不过度的弹性,以承担需求变化。或通过沟通、拆分等方式暂时隔离变化。
  • 备份方案
    • 为各种意外状况、紧急事件或不可控因素设计Plan B。
  • 全局意识
    • 站得更高,熟悉系统的历史和演变,发觉深层次原因,了解各种技术和资源的限制。预测未来的各种可能性和变化趋势。

软技能

  • 跨领域学习能力
  • 沟通和谈判能力
  • 管理能力
    • 能够把“业务需求”翻译成“技术需求”,方便开发团队理解架构师的意图和战术。在项目进行过程中能监控各种变化,敏锐观察问题,并能牵头解决问题。
  • 文档能力

EOF


我的感悟

自打今年年初 iOS 需求市场开始走下坡路起,我就一直在寻求一个新的发展方向——当然,iOS 方向我还是会继续走下去的。也该到了多方面发展的时候了。如果一个 iOSer 连基本的 HTTP 协议都不了解,完全不知道后台到底是因为什么原因发给我这样的一个 JSON 数据……那这个程序员是没有出路的。

从去年开始我就陆陆续续的接触了 Linux 系统、PHP 基础语法和 ThinkPHP 、在网上简单的查了 TCP/IP 的构造、学了一点点 HTML/css 的皮毛,也看了一些 javascript , DOM , Ajax 等配套语言。现在还是处在一个迷茫期,完全不知道自己该走哪个方向 —— 偏技术向就走全栈、架构师,管理向就走产品经理、项目经理……

不管如何,还是要稳扎稳打的学习 —— 世界变化很快,稍慢半拍就会被历史的车轮碾轧。

路漫漫其修远兮,吾将上下而求索。