23 | 架构师:不想当架构师的程序员不是好程序员
23 | 架构师:不想当架构师的程序员不是好程序员
讲述:宝玉
时长14:57大小13.70M
什么是架构师思维?
抽象思维
分治思维
复用思维
迭代思维
好的架构师什么样?
如何成为好的架构师?
总结
课后思考
赞 7
提建议
精选留言(16)
- 易林林2019-04-20架构师是一个概念性职位,没有明确的界定,需要具备的能力和素质也是千差万别,每个开发人员心目中的架构师画像也都不一样,神秘的IT牛人,高级的保姆,无休的恶魔...。 在我看来,一名优秀的架构师应该具备良好的技术思维、产品思维和项目管理思维。技术思维是基础,评估技术难度、分析技术复杂度、准确把握技术方向,这些都是架构师在设计架构时面临的技术决策;产品思维是骨架,在产品思维上构建起来的整体全面的产品意识,可以对业务、功能、模块进行明确的抽象、分治、迭代等等;项目管理思维是方向,无论是敏捷管理模型还是瀑布管理模型,都需要在不同的时间、不同的环境条件下去关注金三角理论的取舍所带来的影响,降低技术以外对项目带来的局限性。 不过呢,架构师也不是想象中的那么神秘。开发人员和架构师的差别,最主要是层次和格局上的差别,导致最终产生了不同的结果而已。试想,两个能力相同的开发人员,一个的目标是每年涨工资(80%开发人员),他会去努力的多做事,拓展技术的深度;一个的目标是CTO(20%开发人员),他会去努力多做事,多思考,多学习,多交流,尽力做到面面俱到。几年以后的结果就不言而喻,至少坚定的目标能够推动过程的发展。展开
作者回复: 👍严重认同。虽然说并不需要每个人都去当架构师当CTO,但是把架构师当职业目标,并且按照架构师的要求去努力,对职业成长的帮助是非常大的,今后可以选择的路会很宽。
共 3 条评论14 - Charles2019-04-20初浅理解: 互联网架构师无论是b应用还是c应用,目标是希望更多用户使用,所以必须要考虑到网络、并发性能、可用性、安全性已经各种存储的横向扩展等架构问题 企业架构师更多的是如何针对一个行业深度挖掘需求并抽象,把复杂问题简单化,最短路径满足多场景使用以及易扩展、易维护等架构问题 一个疑问,请教老师: 有着正常职位或头衔的架构师,一个全新的项目理解产品需求后进行架构设计,一般会产出哪些“东西”,来满足后续的架构讲解和项目开发过程中的沟通? 由于一直创业公司和小公司待着,有点不好理解,期待老师解答,谢谢展开
作者回复: 👍我觉得你对互联网架构师和企业架构师很到位。互联网产品特点是用户多,企业产品特点是业务复杂,所以架构的侧重点不一样。 架构师在架构设计后,产出首先是架构设计文档,让大家理解架构。 然后还要写架构开发的文档,比如如何基于这个架构开发功能模块,有哪些公共API可以调用,怎么样是最佳实践,要遵守哪些规范等。 再要帮助搭脚手架和基础模块或示例项目,也就是要搭建一个最基础的可运行项目,通过这个项目,大家可以直观的理解你的架构是怎么落地的,通过基础模块或者示例项目,可以知道如何基于框架开发,后面就也可以照葫芦画瓢照着实现。 还有就是在开发过程中,要答疑、解决架构中存在的问题,对架构做优化,还要做代码审查,对于不符合架构规范要指出和修正。
共 2 条评论11 - alva_xu2019-04-22讲到架构,我想先得谈一下康威定律。康威在1967年曾说过,“Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations.”通俗地说,就是组织形式等同于系统设计。所以系统架构设计的进化,是和组织形式的变化结合的。从ITIL来说,BIA,(business IT alignment)是IT的核心,所以充分认识组织的业务模式和运营方式,才能让架构师设计出适合于企业的系统架构,架构设计的最高境界就是适合企业业务的运营。从单体架构到微服务架构,从前后端分离到中台,都是架构适应业务(功能与非功能需求)的体现。所以架构师首先必须要有业务思维、产品思维。TOGAF把企业架构分成业务架构、应用架构、数据架构、技术架构四个子域,我觉得相当全面。 从程序员开始,如果能培养好老师讲的架构师能力模型中的四个思维和三个能力,我们可以给自己规划出一个架构师的成长路径,从单个业务应用开始,然后扩展到一个业务领域,最终到达企业架构师,甚至成为跨企业应用架构师的境界。展开
作者回复: 👍谢谢你从组织架构维度的补充,组织架构和系统架构确实是相辅相成的关系,例如像微服务,一个拆分的原则就是看组织架构要不要细分,否则并不一定要分拆成微服务的架构。
4 - 青石2019-04-21经验积累就是个过程,付出的越多,努力的越多,收获自然越多。看源码学设计是件很不错的事情,当你思考为什么这么设计的时候,同样问题未来就很有可能按此设计。 成功的道路没有捷径,前面弯弯曲曲的道路,只是让你更容易面对后面的严峻陡峭。
作者回复: 👍感谢分享
3 - hua1682019-04-20老师,我发现市面上很少有架构类的书,有几本感觉OK, 张开涛亿级流量网站架构核心技术》、陈康贤的《大型分布式网站架构设计与实践》、 李智慧的《大型网站技术架构:核心原理与案例分析》 感觉只是讲了一个大概而已,具体深入都是靠自己。 58沈剑的《架构师之路》,还有点详细,链接地址如下: https://www.w3cschool.cn/architectroad/展开
作者回复: 谢谢分享👍
3 - dancer2019-04-23个人觉得架构师这个称谓在国内用过了。。。其中不乏一些PPT架构师。。
作者回复: 是的,头衔不重要,还是看有没有架构师的能力水平。
2 - 小先生2019-04-20抽象,分治,复用,迭代思维。是架构师必备。2
- Dora2019-04-20关于最后提到的问题,我想到一点,不知是否正确。互联网架构,要考虑互联网很快的迭代速度,所以对于扩展等特别注意。企业架构,内部IT系统相对稳定,对比互联网架构,更简单?
作者回复: 👍挺好的分析。 帮你补充几点: 互联网架构不仅迭代会快一些,用户规模通常更大,但业务也会单一些。 企业应用通常业务比较复杂,尤其是和行业会有一些结合,但是用户规模要小很多。 这些特点,都会影响架构设计的选择。
2 - bearlu2019-04-20其实最难是选择行业,请问老师有什么建议?
作者回复: 抱歉这个我还真没啥好的建议,通常第一份工作会对从事的行业有很大影响。 我建议你可以请教下你身边的朋友,同时结合下你自己的资源、特长、兴趣爱好等综合选择一下。
2 - hua1682019-04-20老师,你可以继续写个专栏叫《架构师之路》😄
作者回复: 七牛CEO许式伟已经写了一门课《许式伟的架构课》,应该不错:)
2 - 业余爱好者2021-03-14架构师是业务与技术之间的桥梁。所以既需要懂业务,也需要懂技术(编码实现能力)。因为处于技术与业务之间,所以需要具备良好的沟通和协调能力。 架构师思维就是架构师的思考,解决问题的方式。抽象思维是基本,它忽略细节,抓住本质。有了抽象思维,就可以将系统划分为各个不同的模块,而这就是分治思维。拆分后的模块要考虑复用性,这就是复用思维。拆分后的模块可以独立进行迭代,这就是迭代思维(当然系统也可能整体迭代)。最后两个思维,就是rep(复用发布等价原则---复用的最小粒度就是发布的最小粒度)原则的体现。展开1
- 小老鼠2019-09-201、可否结合具体案例,介绍抽像思维。2、发现成为一个好的架工程师构和成为一个好的软件测试工程师有许多相同之处。
作者回复: 1. 举例来说,用户提一个需求,要做一个图书管理系统,那么你就需要针对这个需求,运用你的抽象思维,去抽象出来图书对象、抽象出来图书分类和图书的关系等 2. 👍是的,有很多共同之处
1 - ifelse2022-06-29要想成为好的架构师,没有什么捷径可以走,首先需要要成为一个优秀的程序员,然后多模仿、多学习好的架构设计,最后还要早点选择好行业和平台,积累好行业的业务知识,借助平台获得大量的实践机会。--记下来
- stualan2022-05-06抽象,分治,复用,迭代
- aoe2022-01-20原来做一个有大局观的程序员才是好程序员
- Alice也爱猫2020-07-31老师您好!您说好的架构师一定要是程序员出身,我是一名项目经理,但我不是计算机专业的,我身边很多项目经理也是程序员出身的,所以我一直挺没底气……产品和测试知识我都懂挺多,但唯独开发,我懂的比较少,换一个项目我就要去学他们用的东西,他们用网络协议我就去学协议,他们用linux我就去学linux,他们用什么前端框架我就去了解框架,所以一直很累,感觉开发用的东西太多,我学不完啊。作为项目经理,我到底该学到什么程度呢?展开共 1 条评论