架构师的成长之路

合集下载

架构师的成长之路

架构师的成长之路

3年
技术和经验的积累,每天都能感受到成长带来的快乐 如饥似渴的学习各种技术,开源项目如spring、hibernate等成为最佳的食粮 在项目中各种折腾,经常会灵光乍现,感觉自己是个天才 各种设计模式运用从生涩到娴熟,持续了两三年,突然发现自己提升遇到了瓶颈
思维和做事风格的转变 校园填鸭教育模式转变为自学成才模式 考核标准不再是作业或期末考试,而是一个个真正的社会工程
• 现象
• 考虑技术而不是真实需求。 • 堆砌不同的产品,整合成系统。
架构设计要回归本源
• 美国的高科技笔与俄罗斯的铅笔。 • 历史的真相。
非技术设计
• 暂时不考虑技术 • 聚焦在用户需求 • 设计原理
• 创新 • 简单
过度设计 I - 设计的系统超过实际需求
把事情做得过于复杂和以复杂的方式去完成一个任务。简单地说, 它包括让某些事物超过实际需要过度工作,让用户费不必要的劲儿 去完成一件事,让工程师付出很大的努力去理解不必要的需求。
建筑师是如何工作的?
最好的建筑师从来不用供应商的名称来描述梁、 支撑、桁架、外墙,而是用这些部件的大小,负 载和组成等。
架构师如何工作?
• 以产品替代技术
• Apache Tomcat 网络服务器 • Java 语言 • mySQL 数据库 • Dell 服务器 • EMC 存储 • Cisco 路由器
提炼 7年以上
智慧 跨部门影响力
技能 部门内影响力
组内影响力
无影响力
架构师成长案例一
菜鸟 累积 成熟 升华
2年
对架构设计有了深刻的理解 技术运用也不再拘泥于形式 迷茫时,阅读书籍,领悟传统工程学的魅力
2年
环境和挑战非常重要,需要环境的支撑及敢于挑战的精神 易宝技术栈的技术变革帮助我完成了从知识掌握到融汇贯通的转身 海归CTO,带来了PayPal先进的技术理念。 在实施这些理念中,也遇到很多挑战。

一个系统架构师的成长之路

一个系统架构师的成长之路

一个系统架构师的成长之路一个系统架构师的成长之路成为架构设计师是广大开发者职业发展道路之一,架构师究竟是个什么样的职业?需要具备什么基本能力?如何才能成为一个优秀的架构设计师?一起来看看下面这位网友的成长之路!来这家公司从事信息化工作已经有三个年头了,有必要对这三年的工作和成长以及不足之处做一个总结。

刚来公司的时候,领导决策要将系统重新开发。

有的是成熟的业务逻辑,老的搬过来就可以了。

当然,由于随着企业业务的发展,会有新的需求,但大部分的需求是不变的。

在项目的开发方面没有的是:1.没有熟悉JAVA的开发人员。

2.没有J2EE项目的经验。

有的是:1.IT项目的开发、测试和维护经验。

2.数据库系统开发经验。

上述便是我的团队情况的简要概况。

项目总是要做的,因为领导决策了啊。

先看上述两个问题我们是如何解决的。

1.针对开发团队没有JAVA的开发经验,进行培训,由我亲自操刀。

培训为期15天,从开发环境熟悉,到JAVA基础知识,上午半天讲知识,下午上机练习。

2.针对没有J2EE的项目经验。

整个项目就我一个人有过J2EE的项目经验,但是我以前没有做过J2EE项目的架构师或管理人员,我只是做过开发,熟悉里面的技术和开发技巧。

怎么办?我们是这样解决的,请老师。

专门请了老师来讲架构设计知识。

这还不够,我们花钱请人做架构设计。

但只是做架构设计,生成一个架构说明书后,离架构的工作还很远,还有很长的路要走,而在合作公司做好架构设计后,他们的工作也就基本结束了。

后面的架构的工作,基本上是由我来做的。

我说说我都做了什么事情。

(1)按照架构说明书,将整个架构环境搭建起来。

(2)开发一套便于开发人员开发的开发框架。

(3)设计了Swing的MVC模式,并开发实现。

(4)开发了整个系统的基础组件,为了实现架构中的复用的原则,这个很重要。

(5)负责整个系统的权限的管理,这个很重要,跟各个模块都有关系。

(6)负责开发的编码规范的制定,包括JAVA的编码的规范,同时还有质量属性方面的编码的规范。

从零开始学架构(一):架构师成长路径(转)

从零开始学架构(一):架构师成长路径(转)

从零开始学架构(⼀):架构师成长路径(转)内容摘要从架构的本质,软件⼯程,架构师职责,成长路径等⽅⾯,介绍什么是架构,架构流程以及架构师职责和成长规划。

本篇主题⼀、什么是架构⼆、项⽬中的⾓⾊三、架构师职责和⼯作内容四、架构⼯作流五、架构师成长路径六、架构能⼒模型七、扩展知识⼋、本章总结⼀、什么是架构架构是系统的蓝图,描述了系统的结构和关键决策。

包含系统的功能和⾮功能性需求,如何实现的,系统与⼦系统是如何划分的,系统之间如何通信的,系统功能如何设计的和交互的。

包含重要的架构决策,系统组成,功能设计,技术选型,成本分析等架构的基础是设计满⾜客户需求的系统,其中包含功能性,⾮功能性以及质量和约束。

⼆、项⽬中的⾓⾊客户:为系统开发买单的⼈,关注系统的业务价值。

⽤户:使⽤系统的⼈,关注是否满⾜功能需求,提升效率和易⽤性等。

项⽬经理:负责项⽬管理,组织,协调,沟通等管理⼯作。

需求分析师:负责需求相关⼯作,⽐如业务分析,需求获取,需求调研,需求管理,编写需求规格说明书等系统架构师:负责整体的系统分析,架构规划,技术选型,核⼼功能需求和⾮功能性需求的架构设计。

系统设计师:在架构模型的基础上,进⾏核⼼功能和⾮核⼼功能的详细设计。

开发⼈员:根据架构设计和详细设计完成编码和单元测试,达到提测标准。

测试⼈员:验证开发功能是否满⾜需求,⽐如进⾏功能测试,集成测试,性能测试,压⼒测试,安全性测试,回归测试等。

运维⼈员:负责部署环境搭建,部署和⽇常维护。

三、架构师职责和⼯作内容架构师在项⽬中起到承上启下的作⽤。

建议参与到系统建设过程的全流程中。

架构师的职责如下:1)⽀持售前或需求阶段,提供概念架构或技术咨询;2)系统分析,架构设计,技术选型,产出架构解决⽅案;3)指导项⽬团队成员,按照架构设计完成,开发,测试和发布;4)开发或设计开发框架,制定编码/编程规范,设计架构原型,验证架构原型;5)组织技术或架构培训,把握技术/架构⽅向;6)⽅案平衡(实现与成本),⼲系⼈沟通,技术风险管理,技术领袖等;按照项⽬阶段,简述⼯作内容,如下:售前阶段,给予商务⽀持,提供系统解决⽅案和架构咨询。

架构师的职业规划和发展路径

架构师的职业规划和发展路径

架构师的职业规划和发展路径一、引言架构师作为信息技术领域的重要职业,扮演着设计和构建复杂系统的关键角色。

随着企业对技术架构需求的不断增长,架构师的职业前景变得愈发广阔。

在本文中,我们将探讨架构师的职业规划和发展路径。

二、架构师的职业规划1.了解业务需求作为架构师,首先应该深入了解自己所在企业的业务需求。

只有充分理解业务背景和目标,才能为企业提供更好的架构解决方案。

2.技术深度和广度架构师需要具备扎实的技术功底,并建立广泛的技术知识储备。

对于特定的技术领域,例如云计算、大数据、人工智能等,架构师应保持持续学习和关注,以跟上技术的发展。

3.领导与沟通能力架构师在项目中扮演着领导者的角色,需要具备良好的团队管理、沟通和领导能力。

他们需要与项目各方进行紧密合作,并有效地传达技术方案和决策。

4.解决问题的能力架构师需要具备解决复杂问题的能力。

他们应该擅长分析和整合各种需求,并提供高效、可靠的解决方案。

同时,他们也需要能够在面对技术挑战时保持冷静,并及时做出应对。

三、架构师的发展路径1.技术专家在职业发展初期,架构师可以选择成为一名技术专家。

他们可以通过不断精进技术能力,深入研究某个领域,并成为在该领域内有高度影响力和专业知名度的专家。

2.架构师随着经验的积累和技能的提升,架构师可以进一步发展成为企业的架构师。

他们将承担项目架构设计和技术决策的重要角色,并负责指导团队进行系统的架构开发。

3.领导者一些经验丰富的架构师可以朝着领导者的方向发展。

他们可以担任技术部门的领导职位,并参与战略规划和决策制定,为整个企业的技术发展贡献力量。

4.独立顾问有些架构师选择成为独立顾问,在行业内提供咨询服务和解决方案。

他们可以为不同的企业提供专业建议,同时积累更广泛的经验和知识。

四、发展路径中的关键要素1.持续学习架构师需要保持对新技术的学习和掌握。

他们应该参加各种培训和研讨会,与同行交流经验,并加入相关的专业组织。

2.项目经验积累丰富的项目经验是成为一名优秀架构师的关键要素。

7年成就架构师的艰辛历程与学习路线

7年成就架构师的艰辛历程与学习路线

7年成就架构师的艰⾟历程与学习路线前⾔成为优秀的架构师是⼤部分初中级⼯程师的阶段性⽬标。

优秀的架构师往往具备七种核⼼能⼒:编程能⼒、调试能⼒、编译部署能⼒、性能优化能⼒、业务架构能⼒、在线运维能⼒、项⽬管理能⼒和规划能⼒。

这⼏种能⼒之间的关系⼤概如下图。

编程能⼒、调试能⼒和编译部署能⼒属于最基础的能⼒。

不能精通掌握这三种能⼒,很难在性能优化能⼒和业务架构能⼒⽅⾯有所成就。

具备了⼀定的性能优化能⼒和业务架构能⼒之后,才能在线运维能⼒和项⽬管理能⼒⽅⾯表现优越。

团队管理能⼒是最⾼能⼒,它对项⽬管理能⼒的依赖度更⼤。

1.学会分析源码程序员每天都和代码打交道。

经过数年的基础教育和职业培训,⼤部分程序员都会「写」代码,或者⾄少会抄代码和改代码。

但是,会读代码的并不在多数,会读代码⼜真正读懂⼀些⼤项⽬的源码的,少之⼜少。

这种怪状,真要追究起来,怪不得程序员这个群体本⾝ --它是两个原因造成的:我们所有的教育和培训都在强调怎么写代码,并没有教⼤家如何读代码⼤多数⼯作场景都是⼀个萝⼘⼀个坑,我们只需要了解⼀个系统的局部便能开展⼯作,读不相⼲的代码,似乎没⽤读源码三问:“为什么要有这样的架构”,“他是什么样⼦的”,“他是怎么⼯作的”。

那么阿⾥程序员是如何去读代码的呢?2.分布式架构特点及设计理念⾸先需要说明的是,分布式系统是⼀个复杂且宽泛的研究领域,学习⼀两门在线课程,看⼀两本书可能都是不能完全覆盖其所有内容的。

介于这篇⽂章是引导初学者⼊门,所以我个⼈觉得为初学者介绍⼀下当前分布式系统领域的全貌,也许⽐直接推荐论⽂和课程更有帮助。

当初学者对这个领域建⽴起⼀个⼤的 Picture之后,可以根据⾃⼰的兴趣,有选择性的深⼊不同领域进⾏进⼀步的学习。

3.为什么微服务会这么⽕?接下来我们总结下微服务的优点。

易于开发与维护微服务相对⼩,易于理解启动时间短,开发效率⾼独⽴部署⼀个微服务的修改不需要协调其它服务伸缩性强每个服务都可以在横向和纵向上扩展每个服务都可按硬件资源的需求进⾏独⽴扩容与组织结构相匹配微服务架构可以更好将架构和组织相匹配每个团队独⽴负责某些服务,获得更⾼的⽣产⼒技术异构性使⽤最适合该服务的技术降低尝试新技术的成本下⾯就送上学习架构图吧关注我后台私信回复【架构资料】领取获取往期Java⾼级架构资料、源码、笔记、视频。

架构师之路----一个四年-JAVA-程序员的工作经历

架构师之路----一个四年-JAVA-程序员的工作经历

论坛的帖子看的多了,讲大道理的也很多,可是真正懂的并去做的有多少?本人第一次发帖子,不说什么道理,只是个人的一点经历,很普通但是本人这几年的亲身经历。

首先介绍下自己,男,06 年毕业来的北京,从事J2EE 开发,现在 4 个年头了。

06 年和刚毕业的很多同行一样。

二本毕业,CET-4,没有其它证书也没得过什么奖,很普通,面临找工作的问题。

不过运气不错,刚来北京二周就拿了二个offer,一个是北京磁共振研究所,从事VB,DEPHI 开发,另一个是一个新成立的公司,从事JAVA 开发。

我选择了后者,当时自己接受过 4 个月的培训,可能会比一般的学生多些动手能力,这公司的上机本来是一道题的,做一个GUI 画图程序,很简单,时间三天,不过我用了一天就搞定了,所以公司又多考了我二道上机题。

只做出来了一道,当时很害怕公司不要我,后来才知道是公司有意试我的,无论后面两道我做成什么样,一样会拿到offer。

刚毕业吗,没社会经验。

工资2000,税后1600,试用80%,三个月,不过我二个月转正了,第 5 个月时提到了3000,第8 个月时提到了4000。

当时开心的很,老板初看是很老实的人,开会还是私下给了我很多希望,甚至邀请我去他家去玩,自认为和老板的关系很好。

不过后来证实这点是错误的,千万不要和你的老板走的太近。

就是同事关系。

工作内容吗是负责公司一个可视化程序的开发和对应的B/S 插件以及对外支持工作,产品要卖钱吗,当时工作真的很卖力,在这公司的时间真的把心都给公司了,基本没有11 点前过家,有时是工作,有时是学习,刚毕业吗,没经验,尤其是支持还需要很广的知识面。

在这公司呆了三年,当时公司就20 多人,所以有些工作不是分的那么清,我呢基本是一个人做三个人的活,开发,测试,支持,后来又兼职售前。

当时工作太忙,北京又太大,有时一天要跑几个地方,公司仅有的一辆车基本成了我的专用车了。

当时老板对我也不错,这样过了两年多,我学了很多知识,而且了解了公司运作和产品开发流程,并一手支撑起了支持部门,一共 5 个人。

软件架构师的成长路程

软件架构师的成长路程

软件架构师的成长路程文章分类:综合技术软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。

架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。

他必须对开发技术非常了解,并且需要有良好的组织管理能力。

可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。

软件架构师实际上就是软件的总体设计师。

首席设计师就是总设计师,打个通俗的比方:xiaoping是中国改革开放的总设计师,我们用现在的说法可以讲,xiaoping是中国改革开放的首席架构师。

架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的!架构师也并非是万能的。

架构师是客户需求和开发者之间的桥梁。

在软件行业中,一般提到的架构师是技术架构师,而忽略了领域架构师或者讲是领域工程师的概念。

一个好的领域专家一定是业务领域的架构师,他能够给出某一个业务领域的架构,我们可以称为业务架构,只有技术架构和业务架构紧密结合才有可能真正创造出一个好的系统!架构师,首先让我想起的是高楼大厦的设计人员,通常一座大厦在建之前,都先由设计师将蓝图描绘出来,包括其形状、结构、尺寸、材料等等,然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来。

近年来,软件领域也渐渐地流行起架构师的角色,特别是对一些大型软件产品或项目的开发,这一角色显得很关键,因为缺乏好的软件架构师而导致项目失败的例子不胜枚举,一个没有经验和能力的架构师也会使项目失败的速度加快。

软件架构师的重要作用软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计;在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编码阶段,架构师则成为详细设计者和代码编写者的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;在软件维护开始时,软件架构师就开始为下一版本的产品是否应该增加新的功能模块进行决策。

安全架构师的成长之路

安全架构师的成长之路

安全架构师的成长之路需要具备多方面的能力和素质。

以下是一些关键的成长要素:
1.技术功底:安全架构师需要具备扎实的技术基础,包括网络安
全、系统安全、应用安全等方面的知识。

对主流的安全技术、
协议、算法等也需要有深入的了解。

2.编程能力:安全架构师需要具备较高的编程能力,能够熟练掌
握至少一种主流的编程语言,如Python、Java、C++等。

同时,
也需要了解常用的开发框架和工具,能够进行高效的安全开发。

3.安全意识:安全架构师需要有强烈的安全意识,对常见的安全
漏洞和攻击手段有深入的了解,能够从安全的角度出发思考问
题,并具备防范安全风险的能力。

4.系统架构能力:安全架构师需要具备系统架构能力,能够从整
体上把握系统的安全性和稳定性,并能够根据业务需求和实际
情况制定出合理的安全架构方案。

5.沟通能力:安全架构师需要具备良好的沟通能力,能够与开发
人员、测试人员、运维人员等各方面人员进行有效的沟通和协
作,共同保证系统的安全性。

6.学习能力:安全技术不断发展,安全架构师需要具备较强的学
习能力,不断学习新的安全技术和知识,保持对最新安全动态
的了解和掌握。

7.实践经验:安全架构师需要具备一定的实践经验,能够将理论
知识应用到实际工作中,通过实践不断优化和完善自己的技能
和能力。

总之,安全架构师的成长之路需要注重技术功底、编程能力、安全意识、系统架构能力、沟通能力和学习能力的提升和实践经验的积累。

同时,也需要不断关注最新的安全动态和技术趋势,保持对安全领域的敏感性和前瞻性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

架构师的成长之路架构师的成长之路从程序员、高级程序员,再到架构师,这是所有架构师的必经之路,下面为大家分享一位架构师的成长之路,希望对大家有所帮助!如何更高效地学习?很多新人程序员一开始在学习上找不到方向,但我想在渡过了一段时间的新手期之后这类问题大多都会变得不再那么明显,工作的方向也会逐渐变得清晰起来。

但是没过多久,能了解到的资料就开始超过每天学习的能力,像是买了没看的书、收藏没读的贴、mark了之后再也没有关注过的文章越积越多,更别提每天面对各种技术分享或者微博里的新鲜玩意了。

大多数人每天能留给自己学习的时间有限,这个阶段如何提升学习效率就成了要解决的重点。

说说自己提升学习效率的心得,其实非常简单:体系化的学习。

我曾经很喜欢看一些博客或者是一些“看起来”比较通俗易懂的文章,每天在微博微信里刷到什么技术文章就mark下来,基本上几分钟就能读完。

可一段时间下来,虽然读了不少东西,但是还是有种在原地打转的状态,并没有感受到有什么实际的提高。

最后实在忍不住,抱着厚书硬啃了一遍,突然有种豁然开朗的感觉:读书时自己学到的是一张完整的知识网络,每个知识点和其它内容相互联系和区别。

这种全方位的理解比起一篇篇独立的文章,不知要高到哪里去了。

而读了一段时间书之后,渐渐原本不在一个体系之内的知识也会慢慢联系起来,比如说后端服务的开发,简单梳理一下,就成了这样:在重复了几次痛苦的学习梳理过程后,再去看一些独立的文章或者资料往往会事半功倍,因为能在体系内找到相对应的知识,甚至有时候一本书里一页只需要看一句话,点破那层窗户纸,就可以掌握新的知识。

你是怎么知道这些的?工作中总是会遇到各种各样的问题,有几次把问题处理过程总结了一下,发了出来,之后就像滚雪球一样,有越来越多的小伙伴来咨询问题,比如说:前一阵帮忙排查一个性能问题,系统压力稍微一大就会频繁Full GC,压力降低之后又恢复了。

某个小伙伴接入代码质量检查系统之后发现每次构建会报一个莫名其妙的错误,打不了包。

某次代码有bug,小伙伴跑来来问我git怎么才能回滚代码。

每次查完这种问题的时候,一些刚毕业没多久小伙伴们就会用一种崇拜的眼神看着我,然后大多会问:“你是怎么知道这些的?”实际上,虽然我一直在不断的学习,但是面对工作中无穷无尽的新问题,大部分问题还是会命中我没有掌握的那部分区域。

每次有人问到我不了解的知识时我都会非常开心:还有什么比带着问题学习更有效率的学习方法呢?而且幸运的是,在建立了自己的知识体系的基础上,学习新的知识通常都能很快的上手,解决一个问题往往只需要多了解一个知识点而已。

举个例子,频繁Full GC的问题,以前查过很多次GC的问题,大多数是Java程序或JVM内存泄露问题,而这次内存没有泄露,GC吞吐量也正常,那么我只需要查一下如何查看一段时间内创建的最多的对象的方法就可以了。

回到刚才的问题,小伙伴们问我:“你是怎么学到这些的知识的?”答案是:在你问我问题之后现学的。

架构师应不应该写代码?似乎隔三差五就能看到一些关于架构师应不应该写代码的文章。

我是属于写代码派,因为我本身就喜欢写代码。

但是,当工作职责发生变化之后,如何保持写代码和其它工作之间的平衡就成了问题。

从个体效率上来看,我自己亲自写代码,和很多人相比没有什么绝对优势,甚至有些人码代码的速度比我还快一些。

但作为架构师,参与写代码还是会有一些不大不小的收益。

一般来说合格的程序员对于明确分配的任务会完成的很好,但是大部分情况下“架构”这个词意味着架构师并不会涉及太多细节,架构图和代码实现之间总还是有些距离,你无法保证所有人都会正确的理解你的设计,或者是程序员写代码时遇到障碍时会立刻想出足够优雅的解决方案。

之前写过一篇关于烂代码的文章,大部分烂代码并不是架构师的`设计问题,如果程序员没能很好的理解设计或者是经验不足,往往会做出一些非常匪夷所思的东西。

比如我见过刚毕业的程序员为了防止模块耦合而将耦合的代码又拷贝了一份,或者为了“优化性能”而尽量把所有逻辑写在一个函数里。

如果不能及时发现并改正这些问题,那么这些地方就会变成“正确的错误代码”,或者”不是我写的“代码,或者”我靠我也看过那段代码“之类足以被挂上耻辱柱的玩意。

这种问题算是架构师的责任吗?作为一个视名声如命的架构师,我认为是的。

在我看来,写代码的架构师更像是在做后勤保障的工作:在代码中第一时间发现可能存在的问题,向其他人提出警告,或是给予其他人改进的意见,必要的时候或是给其他人演示一下正确的姿势。

大部分情况下我作为架构师并不需要揽下“核心模块”开发这种工作,毕竟我能调配的时间太零散了,效率难以保证,很多人在专注的情况下比我做的好很多,我只需要保持大局观需要适度参与就可以了。

总的来说,架构师和程序员在某些方面上有点像产品经理和用户的关系,大部分程序员并不会主动告诉你他们想要什么、哪里需要优化,甚至自己也不知道这些。

想要做出好的产品,捷径之一就是跟用户做同样的事情。

实践:开会是个技术活吗?我觉得应该没有人喜欢开会,身为一个程序员,没有几个人的志向是当什么职场交际花。

但是会议邀请就这么一个个的跳了出来:开发需求要跟产品开会、项目方案要跟技术开会、新人转正要去开评审会、别的公司来了几个大牛正在开分享会、出了故障要开总结会、小组有周会、部门有周会,大项目每周开两次碰头会不过分吧?小项目启动的时候开个会不过分吧?调试的时候发现有个坑大家赶紧讨论讨论吧?有时候参加的会议整场下来跟我毛关系都没有,全程神游俩钟头,最后突然有人一拍桌子:”还有问题没?好,散了!“也有可能有个什么会没叫你,过了俩礼拜突然收到封邮件催开发进度,”当时那个会你没参加,大家都说应该是你们做……你没看会议纪要吗?“吐槽了这么多,但我还是认为开会是个技术活,对于架构师来说尤其如此。

大多数技术人员开会并不是那种新闻里的工作汇报或者长者们的会议,他们真的需要通过开会讨论一个具体方案,或者解决什么具体问题。

可惜的是我参加过很多会议,大多数的会议都是在毫无意义的交流中浪费时间:几方人坐在一个屋里互相说一些对方理解不了的话,最后得出一个”我们会后再捋一捋“之类的结论。

这并不是会议才有的问题,在程序员日常的沟通中,也有很多人并不懂得如何交流,比如偶尔会收到一些写的非常认真的邮件,打开之后是密密麻麻的一屏幕文字,但是从第一句开始就不知道他在说什么,后面的东西连看的动力都没有了。

大多数时候,沟通的核心不是你说了什么,而是你想要让对方了解什么、让他做什么。

良好的沟通能在工作中显著提升效率,但很多人忽略了这个事情。

想要恰到好处的进行沟通是一件不那么轻松的事情,但是简单来说有几条原则:确保各方对背景的理解一致,比如开会之前先简单通过邮件交流一下,对新加入会议的人花个30秒钟做个前情提要,或者在讨论过程中让对方说一下他的理解。

去掉对方不能/不需要理解的内容,比如跟产品说“这个队列在高并发下因为锁的实现有问题导致CPU性能瓶颈”不如改成“我们发现了性能问题,持续10分钟了,10万用户收不到运营发的无节操广告,大概5分钟后扩容解决”。

确保在对方失去注意力前尽快说出重点,比如排查问题的总结邮件,如果第一段是这样:“某某框架内部使用的是xxx技术,这个技术的架构是这样:blabla”,那么对方可能完全不知道你在讲什么。

可以换成这样:“我发现了某某框架的bug,需要尽快升级,否则在xxx情况下有可能会出现yyy问题,具体排查过程如下:blabla”。

不要说没有意义的内容浪费其他人的时间,比如”这需求做不了“或者”这里不可能出bug“,没有人想听到这些废话。

为什么别人的系统总是那么烂?很多程序员解决问题的能力很强,说要解决一个什么问题,下午就能写出几百行代码把功能实现了。

但是做出来的东西有种少考虑了什么东西的感觉,我花了挺久去想一个词去形容“这个东西”,最后想出了个勉强可以表达的词:程序的生命力。

大部分程序都能实现功能,但是如果把“时间”这个也作为一个考虑的维度的话,就会意识到一个合格的项目需要考虑更多的东西:更通用的使用方式、易于理解的文档、简单而易于扩展的设计,等等。

而想要毁掉程序的生命力也很简单:做的更复杂,更定制化,让更少的人参与。

我跟很多程序员提过程序的生命力,比如说要让自己写的工具的操作方式跟其它Linux命令类似,或者要用一些更容易理解但不是性能最优的设计方式,又或者要他去参考现在业界主流的做法,很多人认为提这种需求的意义不大,我觉得这里还是举个例子吧。

很多公司应该都会有一些遗留系统,它们庞大、笨重、难用、几乎无法维护,所有人都在抱怨这些系统,并且每天都在想方设法换掉那些遗留系统。

但是一段时间过去之后,又会发现身边的新人又开始吐槽当时替代遗留系统的那个系统了。

“大多数系统当初都很好使,功能当时够用,扩展性看起来也可以,但是这些系统都是开发的人离职之后变坏的。

”还有更好的办法吗?成为技术专家之后的工作可以说是痛并快乐着,会有很多人找你咨询问题,另一方面,会有太多人找你咨询问题。

甚至有一段时间我每天的工作就是解答问题,小到工具使用中到疑难bug,大到架构设计,从早上到晚上基本都是在给各种各样的小伙伴提供咨询服务。

我很快发现有些地方不对头:有些问题实在是太简单了,以至于我甚至都不用思考就可以给出答案,为什么会有这种问题?后来我在每次回答之前先问一句:“你还有更好的办法吗?”一小部分人立刻能给出优化后的版本,甚至我连续问几次之后,他能给出好几个优化后的版本;另小一部分人会斩钉截铁的说优化不了了,就这样了。

但是大部分人会犹犹豫豫的说出一些完全不着调的回答。

后来我改成在每次回答之前先问两句:“你要解决什么问题?”“还有更好的办法吗?”效果好了很多,很多小伙伴发现要解决的问题并不复杂,只是做法跑偏了。

再后来我改成了在每次回答之前先问三句:“他们要你解决什么问题?”“你解决的是什么问题?“”还有更好的办法吗?“现在第三句已经很少问到了。

成为架构师最困难的门槛是?跟一些程序员交流的过程中,有不少人问我要怎么成为一名牛逼的架构师。

我最近几年面试的人挺多,发现一个有意思的现象:很多人自称架构师的人跟你讲一个架构时简直滔滔不绝,各种技术名词像是说相声一样从他嘴里说出来,三句话不离高并发大数据,但是稍微追问一下,就会发现很多基本概念的缺失。

例如自称精通高并发的人说不清楚他所谓的高并发系统的瓶颈在哪里,自称精通架构设计的人说不明白他的系统怎么保证高可用,自称超大数据量的系统实际上只有不到100万条数据,等等。

架构师虽然听起来很高大上,但本质上仍然是工程师,不是科学家,也不是忽悠人的江湖骗子。

学习再多,也需要实践落地。

设计架构方案更多的是在做一些抽象和权衡:把复杂的需求抽象成简单的模型,从功能、性能、可用性、研发成本等等方面规划如何构建一个系统,这些内容需要更多的实践练习。

相关文档
最新文档