软件开发工程师的职业发展无非两大类:一是作“官”,从事管理工做;二则继续从事技术工做。对于后者,软件架构师(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的能力。一个说话没有障碍的人,只要具有这三大能力就必定能写出好的技术文档。在平常工做中,若是某人不喜欢写文档、或认为写文档不重要,那是由于这三大能力还不过关的缘故。也正因如此,我建议工程师不要想固然地觉得“只要会写代码,文档编写能力并不重要”。若是这样想,那么软件架构师一职也就离咱们远去了。