热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

论架构师的职责

很久以前(4,5年前)当核心码农,只需保质保量完成既定任务。技术选型开会的时候随便yy,反正最后拍板背书的人不是我。完成特定的任务,想算法,做优化,实实在在的产出,很有成就感。而最近
很久以前(4,5年前)当核心码农,只需保质保量完成既定任务。技术选型开会的时候随便yy,反正最后拍板背书的人不是我。完成特定的任务,想算法,做优化,实实在在的产出,很有成就感。 
而最近这几年,开始渐渐提升自己,从架构师,技术经理,到技术负责人。现在开会不敢乱说,技术也不敢乱选。因为要给设计做最终拍板,确定最终的技术架构体系。所以会经常焦虑自己做的设计是不是有坑,是不是太low等等。 
同时在公司有限的资源内,还得决定哪些先做哪些缓一缓。以前我只需要把待做的1234抛出去,具体做啥上头说了算,你说做1我就做1,不用过脑子。现在经常1234都要做,手头的资源只够做2个,优先级还得自己协调,光想这个优先级就头大。
因此在此开贴,抛砖引玉,谈谈自己对架构师职责的理解。

首先,我们应该明确,不同公司对架构师的定位不尽相同,而且也和架构师在一个项目中切入的时间点有很大关系。经历过几家公司的架构师职位,有的是以技术选型,设计阶段给技术团队提供咨询为主;有的则是系统调优,代码重构,性能优化为重;而还有些公司,CTO的设想是,产品经理提产品需求,架构师提重构和优化需求,并且作为顾问参与到所有项目的设计阶段。

在我看来,架构师对公司核心业务,组件化,耦合,解耦的理解程度如何,对新技术保持浓厚兴趣和探索,决定了一个公司在技术演进发展道路上是否会一路坦途。同时,架构师应该深刻理解,架构是被业务推动而发展的。
优秀的架构师在作业时,因为长期经验使然,会自然不自然的留下平滑升级的余地。而不会在这个时间点就引入过多架构问题;在构架之前都需要用采取类似伪代码的形式把问题勾画一遍,这样能让各种关键细节问题浮现出来,然后再去讨论, 否则就是空谈。

架构师不会关注细节,但是架构师需要知道有bug或者性能问题(有人告知或者线上表现观察出来),然后别人用的时候给出建议。具体为什么有bug,如何做算法优化,架构师可以不用太深究。架构师关心的是更high level的大模块之间的关系。当然也有公司要求架构师切实可行的钻研进去,做好各种优化和调优工作,颇有点救火队员的角色扮演。这种情况的出现,显然是前期项目协调和产出产生了较严重的问题所致。 
当然自己做实现也有个抽象和分层的问题,我觉得这个问题在不同层次上是同构的。网站级别的架构和模块内部的架构,道理和方法是一样的。 
不过我想说的重点就是,要抵制那些过度微观的工程倾向,从来不做API评审,但是code review 抓的很紧,这就属于本末倒置,code review本来就是一个微观的东西,你写的东西leader评价再好,格式再优美,higher level上是一坨就不行。 
我认为在各个层面上,能控制界面层就很好了,内部实现是实现的问题,这个在上一层可以系统的解决,比方引入稳定性和性能反馈,你做个变更我看下好了还是坏了,到变更这个层次,结论就很强了。
大体上,宏观指标好的,也更可能是fixable的,反过来,不fixable,但是宏观指标好,你也没必要去深究,最多这块重写。

最后,一个现实问题,架构师应不应该参与编码呢?架构师如果完全不做编码,时间长了以后自己的知识如何持续更新,与时俱进才是最大的问题,而且我觉得这基本上是无解的。更坏的情况是,有些架构师自己的知识懒得更新,所有新的事物,一律要别人往他知道的东西上套。这时候谁还服你,只能是you can you up。
所以,我不认为脱离编码去搞架构是一件好事。也不认为脱离业务去搞技术框架是一件好事,最好还是一边干,一边搞这些东西。建议适当编码,目前我每周仍抽出时间看看代码偶尔也编码,实际工作中,可以进行业务和非业务核心层的编写。

推荐阅读
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 自动驾驶中的9种传感器融合算法
    来源丨AI修炼之路在自动驾驶汽车中,传感器融合是融合来自多个传感器数据的过程。该步骤在机器人技术中是强制性的,因为它提供了更高的可靠性、冗余性以及最终的 ... [详细]
  • SvpplyTable: 实现可扩展和可折叠的菜单动画
    SvpplyTable 是一个示例项目,旨在实现类似 Svpply 应用程序中的可扩展和可折叠的菜单动画效果。该项目托管在 GitHub 上,地址为 https://github.com/liuminqian/SvpplyTable。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • 在 iOS 设备上使用系统 API 进行视图截图时,有时会遇到图片拼接处出现白边的问题。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • 目录预备知识导包构建数据集神经网络结构训练测试精度可视化计算模型精度损失可视化输出网络结构信息训练神经网络定义参数载入数据载入神经网络结构、损失及优化训练及测试损失、精度可视化qu ... [详细]
  • 本文将介绍如何在混合开发(Hybrid)应用中实现Native与HTML5的交互,包括基本概念、学习目标以及具体的实现步骤。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
author-avatar
马先生2502911467
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有