精华内容
下载资源
问答
  • 成为架构师

    千次阅读 2021-03-29 13:11:44
    大家什么时候成为架构师的? 相信要么企业内部晋升、要么跳槽新公司。 那是架构师了,公司和招聘要求定义的职责到底该怎么才能做好? 如何开始架构师的职业生涯? 如何平衡专业技术追求和企业赚钱第一位的追求?

    大家什么时候成为架构师的?
    相信要么企业内部晋升、要么跳槽新公司。
    如果你已经是架构师了,相信有过这样的问题:
    公司和招聘要求定义的职责到底该怎么才能做好?
    如何开始架构师的职业生涯?
    如何平衡专业技术追求和企业赚钱第一位的追求?

    架构师要做什么

    对于合格架构师的职责如下:

    • 设计软件系统架构;
    • 系统分解成为多个可实现的模块;
    • 兼顾大局、确保系统整体稳定有效;
    • 权衡质量属性(非功能性需求);
    • 管控不可避免的技术债务;
    • 锻炼和提升整个团队的架构设计能力。

    简而言之就是在统筹系统全局、规避系统风险、抽象等的知识下,做设计、分解系统,分配任务,保障系统顺利开发和上线,并利用这些知识来提升团队能力。

    何为软件架构

    软件架构是关于如何组织软件的一系统重大设计决策和意图的集合,旨在实现期望的质量属性和其他目标。

    以上的定义有点抽象,以下引用卡内基梅隆大学软件工程研究院(SEI)的定义:
    计算机系统的软件架构是解释系统所需的结构体的集合,其中包括:软件元素、元素之间的相互关系,以及二者各自的属性。

    该定义说明了组成软件架构至关重要的要素:元素、关系及属性。
    即:元素(属性) + 关系 (属性)= 架构。简单来说就是将多个有某些属性的元素以有某些属性的关系连接在一起,就组成了架构。你可以把元素和关系想象成建筑工地的砖块和水泥,砖块和水泥有很多种类和属性。元素是软件的基本组成(类、包、层、数据库表等),关系则描述了元素如何协作完成任务(调用、依赖、运行于等)。

    然而,并不能简单地认为就是这些结构体组成了架构,而是说架构为了解释系统所需的结构体而整合在一起来说明,因为架构还包含了设计的决策和意图。就像JavaBean的命名规范,包含的意图就是代码的规范化、提升代码的可维护性等。

    总结下来,软件架构应该是:
    元素(属性) + 关系 (属性)+ 决策 + 意图= 架构

    成为团队架构师

    大体来说,成为架构师之前应该至少参与过三到五个系统的开发,而且承担的技术职责应该不断增加,但最重要的是要总结经验形成全面的知识体系。

    从程序员向架构师转变,首先应该要记录和总结你在开发过程中学到的知识。针对每一个项目,做以下几点记录和总结:

    • 记录利益相关方和主要业务目标。
    • 记录和总结项目的整体解决方案。
    • 记录涉及的技术以及选用的原因。
    • 记录最大的风险和克服过程。
    • 分析项目存在的不足,总结改进的方法。

    无论你希望内部晋升,还是跳槽晋升,都要有耐心来提升专业水平。机会是留给有准备的人的。

    记住,架构师不仅仅是团队中的角色,更是一种思维方式。就算你是程序员,每天写代码也会做出很多设计决定的,这其中肯定有些决定是具有架构意义的。不想做将军的士兵都不会是好的士兵,所以无论你的头衔是什么,你都应该运用架构设计的思想做出恰当的决策,让架构向着健全的方向发展,那你实际上就是架构师。

    开发出色的软件

    开发软件系统要尽量规避风险,佛祖保佑永无bug那种,而架构是软件成功的基础。

    优秀的软件架构应该是这样的:

    • 架构将问题分而治之。架构精确地解释了如何将系统划分为独立轻巧且易于处理的小模块,同时还能保证整个系统协同工作,让系统的总价值高于各模块的价值之和,即1+1大于2。

    • 架构提供了协同工作的指导方针。软件开发不单单是技术,也是以人为本的艺术。软件架构描述了整个系统如何组成和意图。掌握了架构也就清楚了大家该怎么分工合作进行软件开发。

    • 架构为复杂设计提供了知识。提供统一的词汇、术语、概念等等知识,都为沟通和理解带来了极大的便利。知识是随时间而积累和提升的,利用知识,重复的问题的发生就能避免。

    • 架构是最优决策的成果。架构不单单考虑功能的基本实现,还要考虑成本、约束、进度、风险、团队的交付能力,以及最重要的质量属性。权衡这些进行恰如其分的架构设计,才是最优的决策。

    • 架构让你避免犯重大错误。架构设计并非万能,但至少要能规避重大的、常见的风险。预防大于治疗,因此架构是可以帮助我们去预防今后可能出现的风险和问题,而不是佛祖保佑就可以的。

    • 架构让系统更灵活。业务是不断地随时间而变化的,相应的系统也应该随之变化,而不是推倒重来。因此架构需要为软件开发提供灵活应变的结构。

    总结

    头衔和职称并不是架构设计的本质所在,必须专注于架构设计的核心职责,逐步学习和积累相应的架构设计知识,并运用这些知识去开发出色的软件,这就真正成为了架构师。

    做好架构师是需要原则的,下篇文章将讲解《架构设计思维原则》。

    展开全文
  • 架构师成长之路(3)--如何成为架构师(方法)

    万次阅读 多人点赞 2015-10-26 17:18:00
    如果我们要成为架构师,我们自己要面临的三大问题: 找准自己定位:我是谁?在哪里? 怎样做好架构师:我要做什么? 如何搭建架构师知识体系:我该怎么做? 这里面就是做事方法论:目标(我要做什么),方法(计划)...

    前言:

    哲学家常思考的问题:" 我是谁?"" 我从哪里来?"" 要到哪里去?不只是哲学家,我想每个人都有自己对这三个问题的认知。
    如果我们要成为架构师,我们自己要面临的三大问题:
    找准自己定位:我是谁?在哪里?
    怎样做好架构师:我要做什么?
    如何搭建架构师知识体系:我该怎么做?
    这里面就是做事方法论:目标(我要做什么),方法(计划)(我该怎么做),  执行/行动
    
    

    0.能力等级定义


    心理学家德雷福斯经过了大量的调查研究,将人分成了五个等级,构建了“德雷福斯等级模型”。五个等级分别为:新手、进阶新手、胜任者、精熟者以及专家。简单列举一下每个等级的特点,方便我们定位自己在哪个等级。参考《卓越密码:如何成为专家》。

    展开全文
  • 架构师技术图谱,助你早日成为架构师 本项目是《码农周刊》架构学习资料精选,码农周刊团队官方出品。架构师必读,助你早日成为架构师! 架构师技术图谱包括:分布式,前端,大数据,存储,微服务,推荐系统,框架,...
  • 开发工程师如何转成成为架构师。转型成为架构师的技术栈,系统架构,系统设计,架构简历,架构面试,架构实战等方面的内容
  • JAVA架构师面试题,如何成为架构师

    万次阅读 多人点赞 2017-11-05 14:52:36
    JAVA架构师面试题,如何成为架构师 经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。 基础题目 Java线程的状态 进程...

                                      JAVA架构师面试题,如何成为架构师

    经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。

    基础题目

    1. Java线程的状态

    2. 进程和线程的区别,进程间如何通讯,线程间如何通讯

    3. HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别

    4. Cookie和Session的区别

    5. 索引有什么用?如何建索引?

    6. ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。

    7. equals方法实现

    8. 面向对象

    9. 线程状态,BLOCKED和WAITING有什么区别

    10. JVM如何加载字节码文件

    11. JVM GC,GC算法。

    12. 什么情况会出现Full GC,什么情况会出现yong GC。

    13. JVM内存模型

    14. Java运行时数据区

    15. 事务的实现原理

    技术深度

    1. 有没有看过JDK源码,看过的类实现原理是什么。

    2. HTTP协议

    3. TCP协议

    4. 一致性Hash算法

    5. JVM如何加载字节码文件

    6. 类加载器如何卸载字节码

    7. IO和NIO的区别,NIO优点

    8. Java线程池的实现原理,keepAliveTime等参数的作用。

    9. HTTP连接池实现原理

    10. 数据库连接池实现原理

    11. 数据库的实现原理

    技术框架

    1. 看过哪些开源框架的源码

    2. 为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?

    3. Netty是如何使用线程池的,为什么这么使用

    4. 为什么要使用Spring,Spring的优缺点有哪些

    5. Spring的IOC容器初始化流程

    6. Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean

    7. Spring AOP实现原理

    8. 消息中间件是如何实现的,技术难点有哪些

    系统架构

    1. 如何搭建一个高可用系统

    2. 哪些设计模式可以增加系统的可扩展性

    3. 介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。

    4. 抽象能力,怎么提高研发效率。

    5. 什么是高内聚低耦合,请举例子如何实现

    6. 什么情况用接口,什么情况用消息

    7. 如果AB两个系统互相依赖,如何解除依赖

    8. 如何写一篇设计文档,目录是什么

    9. 什么场景应该拆分系统,什么场景应该合并系统

    10. 系统和模块的区别,分别在什么场景下使用

    分布式系统

    1. 分布式事务,两阶段提交。

    2. 如何实现分布式锁

    3. 如何实现分布式Session

    4. 如何保证消息的一致性

    5. 负载均衡

    6. 正向代理(客户端代理)和反向代理(服务器端代理)

    7. CDN实现原理

    8. 怎么提升系统的QPS和吞吐量

    实战能力

    1. 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。

    2. 开发中有没有遇到什么技术问题?如何解决的

    3. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。

    4. 新浪微博是如何实现把微博推给订阅者

    5. Google是如何在一秒内把搜索结果返回给用户的。

    6. 12306网站的订票系统如何实现,如何保证不会票不被超卖。

    7. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

    软能力

    1. 如何学习一项新技术,比如如何学习Java的,重点学习什么

    2. 有关注哪些新的技术

    3. 工作任务非常多非常杂时如何处理

    4. 项目出现延迟如何处理

    5. 和同事的设计思路不一样怎么处理

    6. 如何保证开发质量

    7. 职业规划是什么?短期,长期目标是什么

    8. 团队的规划是什么

    9. 能介绍下从工作到现在自己的成长在那里



    JAVA架构师的水准:


    既然java架构师,首先你要是一个高级java攻城尸,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池...:;java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。

    熟练使用各种数据结构和算法,数组、哈希、链表、排序树...,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题;有时间再补充。

    熟练使用linux操作系统,必备,没什么好说的 。

    熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。

    系统集群、负载均衡、反向代理、动静分离,网站静态化 。

    分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。

    分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。

    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。

    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。

    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。

    以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。

    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。

    架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。

    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。

    程序员应该需要都有自知之明,会就是会,不会就是不会,互联网发展迅速的时代,只能跟上时代的进步,才不会被淘汰。


    展开全文
  • 手把手教你成为架构师课程资料包大放送。该资料包介绍了android架构组件,mybatis架构等等。
  • 想要成为架构师,那么第一步就需要知道成为架构师的基本要素
  • 程序员好几年才能成为架构师 企业架构师似乎越来越多地参与“尝试新事物”或推翻技术或实施建议(否定命令),而不必费劲或无需编写任何代码。 我已经在很多地方观察到了这一点,无论是与建筑师一起工作还是与开发...

    程序员好几年才能成为架构师

    企业架构师似乎越来越多地参与“尝试新事物”或推翻技术或实施建议(否定命令),而不必费劲或无需编写任何代码。 我已经在很多地方观察到了这一点,无论是与建筑师一起工作还是与开发人员一起工作。 从这些观察中,我为自己成为优秀的企业架构师提出了三个规则,我认为这些规则值得分享和讨论。

    #1获得开发人员的尊重

    我想概括地说,开发人员似乎是那种不想忍受比绝对更多的胡说八道的人。 因此,尝试在大公司中找到能打动开发人员的典型政治策略是行不通的。 其中包括销售技巧,简报演示等。这些技能对于传达方向或愿景很重要,但不会给开发人员留下深刻的印象。 获得他们尊重的最尝试,最真实的方法是与他们一起编码。 确实是的。 好的建筑师代码。 坏人崇高。 后者似乎比前者更多。 为您出色的“架构化”解决方案编码将有助于赢得他们的尊重。 但这在另一个领域也有帮助。 我遵循的第二条规则。

    #2意识到您不能在纸上设计系统。

    源代码不是您要设计的产品。 源代码本身就是设计。 因此,当我担任架构师职务时,我会提醒自己,提出图表和流程可视化不是设计。 这是一个头脑风暴,可以帮助我在脑海中建立模型。 但是,如果不将该模型放入代码中,您将不知道它将如何真正发挥作用,或者不应该更改体系结构的解决方案。 相信我 在几乎所有情况下,都应该对其进行更改。 换句话说,开发人员和架构师之间应该存在一个反馈循环。 而且,如果您遵循规则#1,您将直接在那里观察您的解决方案如何在代码中发挥作用。

    #3不要继续构建

    不要迷恋最新,最有光泽的技术,不要将其推向开发人员,而要使其经受严峻的现实生活中的考验。 玩新技术很有趣。 我一直都这样做。 但是我是在日常工作之外做的。 仅仅因为某些技术看起来很酷,就牺牲了团队,软件和业务模型的稳定性,如果您知道这不是解决企业问题的可取方法,那么Google可能会雇用您。 即使您已经看过足够的关于这种新技术将如何成为神奇的子弹的销售演示文稿,也要抵制试图将团队的其他成员灌输的诱惑,直到您将新技术解决了现实生活中的软件问题为止。孵化器。

    我去过栅栏的两边,与一群优秀的开发人员和建筑师合作过,这是我的三个规则。 有人要添加什么吗?

    参考:Christian Posta Software博客上成为JCG合作伙伴 Christian Posta 的更好的企业架构师


    翻译自: https://www.javacodegeeks.com/2012/04/being-better-enterprise-architect.html

    程序员好几年才能成为架构师

    展开全文
  • IT程序员如何成为架构师

    千次阅读 2018-06-01 18:34:48
    架构师是程序员的职业生涯发展的一个方向,很多架构师都是从开发人员逐步过渡来的,程序员想要成为架构师,平时就应该身负“架构师”职责,用架构师的视角来对待工作,以下是开发工程师和架构师的区别:关注范围:...
  • 三年成为架构师

    千次阅读 2018-01-20 17:59:22
    三年之内成为架构师,生死看淡,撸起袖子就是干!!!
  • 本文分享自华为云社区《想要成为架构师?先看看这些条件满不满足!》,原文作者:元闰子 。 前言 当你点开一个招聘APP,筛选条件选择互联网技术,在列出来的一大堆职位上,往往有那么几个带有“架构师”三个字眼的...
  • 如何成为架构师 结语    又有2周时间没冒泡了,最近实在没有大块的时间来写文章,就当找个理由。。。  也因为碎片化的时间多了,所以开始刷某乎了,关注了架构相关的板块,也顺手回答了一些问题。发现有很多...
  • 前言 近几年,Android 开发的套路日趋成熟,越来越多的 Android 工程师获得了「高级」的称号,也有不少人在参与公司的 ...市场真正需要的所谓「高级架构师」到底需要具备什么条件?在此和大家探讨一下 Android 工程...
  • https://download.csdn.net/download/weixin_37266171/10549190   架构师第一阶段     架构师第二阶段     架构师第三阶段     架构师第四阶段  
  • 许多大学出来或者工作一两年的都比较迷茫,他们对计算机非常感兴趣,经历过大学的基础教育,学习能力也不错,每天都会自己敲很多行代码,但对于架构师这个岗位还是很迷茫,到底该怎噩梦走向架构师之路呢?...
  • 怎样成为架构师

    2009-03-17 06:56:00
    参考软件企业架构师需求、结合目前架构师所需知识,总结架构师自我培养过程大致如下仅供参考: 1、架构师胚胎(程序员)学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、...
  • 一、分布式架构 ...因此想了解分布式知识点的可以关注我的VX公众号:“Java架构师学习”。或者进群:688583154获取免费的视频录像学习:Java工程化、高性能及分布式、深入浅出。性能调优、Spring,MyBatis,Ne
  • 偶然在网上看到一张咕泡学院的架构师成长路线图,觉得很适合作为自己准备找工作时的复习路线,为了方便操作,自己利用Xmind手敲了一幅脑图出来(侵权的话请联系我删除)。希望自己能够持之以恒,一砖一瓦地盖起这座...
  • 作者:小傅哥 ... 沉淀、分享、成长,让自己和他人都能有所收获!???? ...如果说编程只是单纯的承接...尤其是在一些大公司中,会有易用的、完善的、标准的架构体系和运维服务,例如:RPC、MQ、Redis集群、分布式任务、配置
  • 熵增教育-熵增学院VIP入门课:程序员学习方法论,通过不同的学习方式度过黄金五年迅速渡劫架构师
  • 为什么大多数人不能够成为架构师

    千次阅读 2017-07-25 16:20:47
    作者:宝术 ... 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。...产品经理说我要建这么这么一栋楼,架构师说好吧,我来帮你看看是做成砖木结构还是框架结构,房型怎
  • 因此,不想当Teamleader的程序员,绝对不可能成为真正意义上的架构师! 同时,不是Teamleader的架构师,也是一个被架空的,苍白无力的架构师架构师,如果只是把需求变成程序,那就不是架构师,那是叫“照着葫芦...
  • 建筑、音乐家、作家、计算机设计、网络设计和软件开发者都在使用“架构”这个术语,其他人也用(你有没有听说过“食物架构”?),然而不同的用法其结果也不同。这是网络人士的话语,感觉不错就传上来了。
  • 如何成为架构师系列:技术选型1

    千次阅读 2017-08-03 11:28:32
    很多没经过训练的同事接到任务后脑子里全想着如何实现功能,为了方便实现功能而破坏框架的事是常见的,这需要管理者培养,也需要架构师时考虑架构的扩展问题并跟进架构的使用情况。  维护一个良好框架的好处很多...
  • 方向❶:大数据工程师,大数据开发工程师,大数据维护工程师,大数据研发工程师,大数据架构师等; 方向❷:大数据分析师,大数据高级工程师,大数据分析师专家,大数据挖掘师,大数据算法师等; 方向❸:大数据运维...
  • 现在零基础,想在35岁时成为大牛,当架构师。虽然现在还不知道Java的具体面貌。这个想法能实现吗?[img=https://img-bbs.csdn.net/upload/202009/13/1599996626_759652.jpg][/img]
  • 13年到了架构师级别,我已经学会降龙十八掌,可登堂入世,成为一位准(lao)专(you)家(tiao)。 我大喊声:“单打独斗,老衲谁也不惧!“,遂开始领导一众技术高手,指点武功,来设计和完成一个系统,大多是分布式,高并发的系统...
  • 今天和大家分享的话题是如何利用青云资源编排服务快速创建批量资源组合、规划和构建系统,同时谈谈资源编排如何帮助我们复制一整套IT环境,以及如何实现跨区做相同架构资源的拷贝。资源编排到底是什么呢?大家知道...
  • 最近好多人私信问我,该怎样才能成为高薪架构师,还有一个就对当前的状态感到迷茫。我在此做一个简单的说明,或者对迷茫中的你来说有些许帮助。 当前你感到迷茫吗? 有很多人对现在的工作感到很没意思,因为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,333
精华内容 57,733
关键字:

如何成为架构师