软件开发工程师的职业发展无非两大类:一是做“官”,从事管理工作;二则继续从事技术工作。对于后者,软件架构师(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的能力。一个说话没有障碍的人,只要具备这三大能力就一定能写出好的技术文档。在日常工作中,如果某人不喜欢写文档、或认为写文档不重要,那是因为这三大能力还不过关的缘故。也正因如此,我建议工程师不要想当然地以为“只要会写代码,文档编写能力并不重要”。如果这样想,那么软件架构师一职也就离我们远去了。
本文出自 “李云” 博客,请务必保留此出处http://yunli.blog.51cto.com/831344/719649 |
|