软件开发工程师的职业发展无非两大类:一是做“官”,从事管理工作;二则继续从事技术工作。对于后者,软件架构师(software architect)是很多软件开发工程师追求的理想岗位。在这我想谈一谈软件架构师所需的几大能力和一些特质,以便读者能更好地规划自己的职业发展。
1)需要很好的逻辑思维能力。对于软件开发工程师来说,由于大多从事编程工作,所以很容易以为自己的逻辑思维没有问题,足以满足软件架构师一职所需。实则不然!就我的观察,不少工作近十年的工程师仍存在思维不清的问题。主要表现在和他讨论问题时,你问他A,他回你B,且很容易跑题和抓不住重点。软件架构师在工作中需要“咬文嚼字”地理解文字和沟通,此时清晰的思维就是关键。
2)需要很强的概念(括)能力。软件架构师在很多情形下是管理层与工程师之间的桥梁,除了掌握技术细节,还要对技术细节进行一定的抽象概括使管理层理解问题所在,以便管理层恰当地参与决策。此外,软件架构师在日常工作中也会面临各种各样的技术问题,良好的概念能力有助于把握住问题的本质,从而有效率和效果地解决问题。
3)需要熟练运用UML(Unified Modeling Language,统一建模语言)的能力。软件架构师由于需要从事大量文字描述性的技术工作,不可避免地需要借助图,而UML就是一种较通用和接受程度较高的图形化建模语言。软件架构师对于UML的掌握,不能只局限于明白各种图型的意义,还得能熟练地查阅UML规范,以便精准地了解各种术语和图型的含义,从而实现对模型的精确表达。记住,“好图胜过千言万语”,图要好就得追求表达的精确性,这就离不开对UML的精准掌握。
4)需要很强的业务能力。对于系统架构师(system architect),业务能力可能包括对行业规范的熟悉、对组织结构和客户关系的清晰了解和研发流程的深刻理解等。对于开发架构师(development architect)业务能力则可能包含对行业规范的理解、对开发环境(编程语言、开发平台与框架、开发流程等)的熟悉和很强的软件查错能力等。
5)需要较强的组织能力(含沟通)。软件架构师在日常工作中需要做不少的协调工作,包括组织技术会议的召开和带领团队攻坚,这些都需要一定的组织能力。拿组织会议来说,有些工程师不喜欢在会议之前进行事先准备和与相关人员进行允分沟通,而是喜欢开会时事无巨细地讨论,这势必造成会议低效。面对这样的会议,软件架构师需要很好地判断是终止会议重新安排呢,还是继续进行。如果继续进行就得在会议中很好地掌控会议的话题和节奏,并依据自己的概念能力让与会者更有效地达成共识。
6)敢于承担责任。软件架构师在不少情形下是技术层面的决策者,他必须敢于“拍板”,这就要求他承担起相应的责任。当然,责任的承担不能“人有多大胆,地有多大产”那样,而应建立在自己的职业素养和能力之上。软件架构师如果不勇于承担责任,那就容易造成开发工作开展不下去的局面。
7)面对挑战的勇气。其实,这一点对于每一个职场人士都很重要,但对于软件架构师尤为重要。与软件开发工程师相比,软件架构师所面临问题的复杂度更高,既会有技术因素,也会有人为因素。解决这些问题有时是很大的挑战,也让人觉得痛苦。有挑战就意味着其中一定蕴涵着其中存在可收获的内容,每克服一次我们的能力就获得了提高。在面对挑战时,我喜欢对自己说“没有痛苦就没有成长”;也会设想自己在面对挑战的环境中工作了一年、几年后将会有多大的收获啊!这种设想会给我们的职业发展带来更大的想象空间,使得自己面对挑战时更具耐心、信心和勇气。
如何获得前面所提及的一些能力相信是读者比较关心的,我的回答是“需要时间和坚持”。有些能力的获得不是简单地掌握技术知识就行了,而是需要一定的人生阅历,比如概念能力就是这样的。对于开发软件架构师,如果要设计出一个好的软件架构,除了接触和学习已有的出色设计外,还得需要一定的行业积累和很好的概念能力。对于概念能力,我认为它是依托于生活的,这就需要时间。这种理解也解释了为什么业内流传着成为软件架构师得30岁以后才更可能。
至于坚持,它同样很重要。一个人的能力是有限的,很难做到这个也懂那个也会。某种程度上,所掌握知识的广度对于我们的职业发展是有益的,但这是基于我们在某一方面很精这一前提的。要精于某一方面,就一定离不开在同一领域的不断坚持。坚持意味着我们在那个领域会碰到更多的问题和做更多的思考,这是成为领域专家的唯一途径。
或许有读者会问,在这些能力中为什么没有谈及文档编写能力呢?原因不是因为它不重要,相反,这是软件架构师所需具备的最基本能力之一。其实,文档编写能力考验的是前面提到的逻辑思维、概念和运用UML的能力。一个说话没有障碍的人,只要具备这三大能力就一定能写出好的技术文档。在日常工作中,如果某人不喜欢写文档、或认为写文档不重要,那是因为这三大能力还不过关的缘故。也正因如此,我建议工程师不要想当然地以为“只要会写代码,文档编写能力并不重要”。如果这样想,那么软件架构师一职也就离我们远去了。
分享到:
相关推荐
总结来说,软件架构师的培养涉及多个层面,包括个人特质的培养、沟通技巧的提升、问题解决能力的锻炼,以及对软件开发过程的深入理解。无论是个人还是管理者,在考虑这个转变时,都需要综合考虑这些因素,以确保成功...
作为一名专业的软件架构师,面试是展示自己技能和经验的关键环节。以下是一些关于软件架构师面试的常见问题及其回答策略,这些将有助于你为应聘这一角色做好充分准备。 1. **为什么离开上一份作为专业软件架构师的...
【架构师的角色与职责】 架构师在IT行业中扮演着至关重要的角色,他们是技术团队的领导者,负责设计和指导系统的整体构建。优秀的架构师不仅要具备深厚的技术功底,还需要有卓越的沟通技巧,以便将复杂的系统设计...
【高级软件架构设计】是IT领域中的一项核心能力,它涉及到软件开发的多个阶段和方面。...此外,良好的沟通和领导能力,以及在不确定性和复杂性中作出明智决策的能力,都是成为一名优秀软件架构师不可或缺的特质。
在个人简历中,这位Java系统架构师提到他有良好的自学能力和创新精神,这在快速发展的IT行业中是非常重要的特质。他注重细节,热衷于编写高质量的代码,并且能够应对技术挑战。他的沟通能力和团队协作精神对于项目的...
常见误解包括将系统架构等同于系统设计、基础结构或硬件组合,认为好的架构仅依赖于单个架构师,或者认为架构是可以独立于软件架构之外的。实际上,架构是多方面的,涉及多个层面的决策,需要团队协作,且可以通过...
11. 零束架构师的工作职责理解:零束架构师通常负责汽车电子系统的集成设计,包括软件架构设计、硬件接口定义、系统性能优化等,需要有深厚的计算机科学和汽车工程背景,以及跨领域的协调能力。 12. 汽车领域建造...
【系统架构师简历样本】揭示了系统架构师这一角色的核心职责和所需技能,以及求职者谷宏的专业背景和职业经历。系统架构师是信息技术领域的...这些知识和技能是系统架构师成功的关键,也是企业在招聘时所看重的特质。
Java系统架构师是软件开发领域中的关键角色,他们负责设计和构建复杂的应用程序体系结构,确保系统的可扩展性、性能、稳定性和安全性。以下是一份详细的Java系统架构师个人简历的知识点解析: **个人背景与技能** ...
接着,将专业领域进行细分,设定不同等级,比如咨询顾问、UI工程师、架构师等,并根据工作内容、任务数量、流程规范化程度和专业深度来设置等级标准。 每个等级应有明确的条件,包括项目经验、必备知识、学历要求和...
随着从业时间的增长,测试人员可以逐步晋升为高级职位,如测试架构师或客户经理。这一过程不仅需要技术能力的提升,还需要不断学习项目管理、团队协作等方面的知识。 #### IT行业性别平等观念 长期以来,IT行业被...
1. 工作流程涵盖软件开发全过程,包括与软件架构师、项目经理、项目管理员等紧密协作,确保软件开发系列流程的顺畅进行。 2. 工作环境为开放式,工作时间有一定的灵活性,但需要具备良好的时间管理能力,每周加班不...
此外,随着年龄增长,可能需要从一线编程转为更高级的角色,如架构师、项目经理等,这些都需要不断提升管理能力。 3. **综合素养的完善**: 除了专业技能,人格魅力也是优秀软件人才不可或缺的部分。这包括责任心...
可担任行业顾问、架构师等。 - **五级:行业内资深专家** — 精通多个技术领域,在业内具有较大影响力。可担任高级顾问、高级架构师等。 #### 三、职业发展通道的基本构成要素 - **基本条件**:担任某个职位所需的...
首先,软件需求分析是指通过一种明确且无歧义的表达方式来理解和表述用户的需求,以便所有参与软件开发的人员,如系统架构师、项目经理、系统分析师、设计人员、测试人员以及最终用户,都能对需求有清晰的理解。...
9. **软件开发测试过程**:涉及架构师、开发经理、测试经理、程序员和测试员等角色,测试员主要负责执行测试用例。 10. **软件测试/质量保证理解**:测试是检查软件功能、语言有效性和外观的过程,质量保证通过监控...