软件架构师的成长之路


Image source: monument valley game

您是否想知道开发人员有哪些职业机会? 什么方向是开放的,超越了什么视野。 最重要的是,超过45岁的开发人员在哪里? 您的朋友中是否有45岁以上的开发人员? 我认识几个超过这个年龄的开发人员,其中许多是铁杆程序员,甚至在过去也看到过打孔卡。

开发人员可能会采取以下几种职业道路:

●最明显的第一个方法是在您工作的区域中成长。 如果您是初级开发人员,那么请担任中级,高级和首席程序员。

●过渡到另一个技术堆栈。 iOS和Android OS普及后,大量开发人员进入了移动领域。

●担任经理角色。 作为开发人员,我看到的最大的人员配备问题是缺少能干的经理。 聪明的管理者很昂贵,因此稀缺。 如果经理具有技术背景,那将使他与开发人员处于同一频道。

●成为软件架构师。 本系列文章中将考虑这个方向。

●走出IT。 有时会发生这种情况。 做自己喜欢做的事永远不会太晚。

文章系列

  • 成为软件架构师的道路
  • 软件架构中的利益相关者
  • 软件架构师的类型
  • 软件架构中的质量属性
  • 软件构架中的文档
  • 软件体系结构证书
  • 软件架构书籍
  • 系统设计备忘单

是的,这是我的路

在过去的八年中,我曾与Java EE合作,然后转移到iOS,并成为团队负责人。 我管理了包括Android和Web堆栈在内的各种开发人员团队。 使用套接字和REST API为公司开发的多种服务创建了网络层的体系结构。 在担任团队领导职务超过两年的时间里,我熟悉了管理角色和朝着这个方向发展的前景。 在我的下一个职位上,我的目标是成为一名软件架构师。

对于大多数开发人员来说,架构师在项目上的功能通常不清楚,因此在本系列文章中,我将尝试找到这些相关问题的答案。 谁是架构师,职责范围是什么,如何朝这个方向发展,并为自己和希望沿着这条道路的初学者制定一个行动计划?

谁可以从中受益?

如果您属于以下类别之一,则本系列文章将为您提供帮助:

●IT开发人员或工程师。 您仍在以开发人员的身份成长,但是您正在展望并计划您的职业生涯。 即使目标最初是模糊的,有意识地制定战略目标的人也会比没有计划前进方向的人更快地实现目标。

●团队负责人,首席软件工程师。 您处于软件开发学科的最高阶段。 要进一步发展,您可以选择学习更多技术,从事软件工程以外的职业或成为软件架构师。

●软件架构师。 您最近担任这个职位,或者已经在这个领域工作了很长时间。 这样的专家的主要素质之一可能是理解一个人总是不了解某些领域,并且学习过程是连续的。

●IT经理。 尽管您是一名经理,但您完全理解,您至少应该大致了解下属或同事的工作。 管理的最严重问题是经理在其所管理领域中的技术能力不足。

谁是架构师?

在继续讨论更具体的问题之前,有必要定义软件架构师的角色和职责。

软件架构师是一位软件专家,他可以进行高级设计选择并决定技术标准,包括软件编码标准,工具和平台。 首席专家称为首席架构师。 (维基百科,免费百科全书,“软件架构师”,https://en.wikipedia.org/wiki/Software_architect)

像大多数高级职位一样,没有明确的标准来定义此角色。 但是,可以确定有助于建筑师职业发展的几种职责和素质。

首先,让我们考虑一下架构师的特征:

●沟通。 与许多软件架构师交谈后,我听说这是该专家的基本特征之一。 在工作日中,他们必须以业务语言与客户,各个级别的经理,业务分析师和开发人员进行交谈。 如果您具有自然的魅力,并且知道如何说服人们,那么这将是一个巨大的优势,因为正确解释您的行为至关重要。 架构师精通雄辩。 我与之交谈的软件架构师在沟通和说服方面具有高度开发的技能。 此特性最重要的另一个原因是,担任此角色的架构师参与了大多数讨论过程,并且通常必须达成折衷方案,这对于所有相关方都是可以接受和有益的。

●广泛而深入的技术知识。 显而易见,不能成为具有医学背景的软件架构师。 此外,架构师通常在相当不错的几个技术堆栈上具有专业知识,并且应该对其他几个方面有很好的了解。 软件架构师还应该准备编写大量的技术文档,报告和图表。

●责任。 您应该了解,架构师的决定通常是最昂贵的。 因此,这个职位的人应该对自己的工作和做出的决定采取最负责任的态度。 如果开发人员的错误花费了一个人几天的工作,那么架构师的错误可能会花费很多人年的时间才能完成复杂的项目!

●耐压力。 您将必须做出决策,因为在此职位上,您将被要求这样做,并且您需要做出回应。 您将与来自不同领域的不同人员一起工作,并且您将不得不应对快速变化的需求,甚至是不断变化的业务环境。 因此,有必要准备好承受压力并寻找一些逃避负面情绪的方法。 工作带来快乐时,总会变得更加愉快。 因此,如果您仅选择赚钱的角色,请再考虑一下。

●管理技能。 这包括组织和领导技能。 领导一支团队的能力是至关重要的,该团队可以由非常不同的专家组成,并且可以分布。

●分析能力。 即使专家对技术有广泛的了解,他还是自己尝试了许多事情或参加了各种类型的项目。 它不能保证他可以轻松地改变架构师的思维方式。 最有价值的任务之一是能够以系统的,有限实际对象的形式表示抽象问题,开发人员已经在评估,设计和开发该对象。 优秀的沟通技巧对于以团队成员和客户的最终系统形式的表示抽象至关重要。 必须与业务和开发进行沟通,这仍然有待完成。

如果我们谈论架构师的责任,那么这就是19世纪桥梁建设的完美范例。 当时,对新建桥梁的测试如下:工程师,架构师和工人的主要团队站在桥下,而第一批车辆还在上面。 因此,他们将生命投入到结构的构造和强度上。 因此,如果有一个问题–软件架构师在项目中的职责是什么? 答案是,他应对一切负责。

如果您放弃大声而优美的短语,那么架构师的工作包括:

●确定项目的利益相关者。

●确定业务需求和项目利益相关者的需求。

●根据收到的要求设计整个系统。

●从高层选择系统架构和该系统的每个组件。

●选择用于实现每个组件以及各部分之间的连接的技术。

●体系结构审查。 是的,是的,它存在。

●代码审查。

●编写项目文档并提供支持。

●在公司中创建统一的开发标准。

●在系统版本的下一个迭代期间控制体系结构。

它只是软件架构师职责的一部分。 最重要的责任是从项目开始到产品发布,一直到开发增强功能,对项目提供全面的技术支持。 并支持下一个版本。 在工作日中,有必要在不同任务之间进行大量切换。

如何成为软件架构师?

首先,必须定义里程碑目标,以实现您成为软件架构师的战略目标。 对我来说,未来六个月的目标是:

●了解并尝试几种技术堆栈。 我目前的知识集中在iOS领域。 有必要尝试使用Android和几种服务器语言来启动python并刷新Java EE技能。 架构师是一名全职开发人员,因此拥有广泛的技术知识至关重要。

●阅读文学。 需要确定最有价值的书籍和文章,以帮助朝这个方向发展。 通常,查找此类文献的最有效方法是向该领域的其他专业人员寻求建议。 在以后的文章中,我计划为您提供这样的文献清单。

●查找导师。 理想的是在您当前的工作地点找到一名软件架构师。 从受过训练的专家那里获得经验总是比从头开始考虑某个特定领域要容易得多。 有必要准备向导师提出正确的问题。

●学习课程/获得证书。 有许多课程和认证可用,但只有少数值得他们花钱,高级课程花费很多钱。 我参加了Luxoft的架构师课程,事实证明这是值得的投资。 该课程的讲师是该领域的专家,并且能够回答问题,这一点至关重要。 至于证书,在开始之前,最好先了解是否有针对架构师的权威认证体系,以及是否值得获得认证。 这一点我将在本系列的后续文章中进行讨论。

基本部分之一是清晰,稳定的计划审查。 已完成的工作,应进行的审查以及在何处加速或删除了无用的目标。

检查您的准备水平

如果您对该系列的入门文章感兴趣,例如如何成为软件架构师,或者您突然有想法尝试这种方法,那么一定要确保您愿意。

首先,人们害怕一切新事物。 一个新的位置,一种新的压力,而不是舒适的现状。 当然,选择并不总是那么明确,取决于您愿意改变生活中的某些事情。 同时,它不仅取决于您,而且取决于家庭,您的财务承诺,父母和其他因素。

其次,这条路要花几年的时间。 成为软件架构师的过程并非一促而就。 作为团队负责人,仅当我被任命为正式职位后一年,我就意识到该怎么办以及如何应对压力。 同时,在此之前的六个月,我进行了非正式的表演。 我认识的一位软件架构师说,他了解升职18个月后的职责。 这样的时间间隔是合理的,并且您需要知道您是否准备好朝这个方向前进。 即使您没有一个稳定的计划,也最好开始采取一些小步骤以使自己前进,而不是呆在原地。

站在IT的同一位置是生活停滞和个人束缚的代名词。

推荐书籍

  • 实践中的软件体系结构(第3版)(SEI系列软件工程)
  • 基本软件架构


(本文翻译自Nikolay Ashanin的文章《The Path to Becoming a Software Architect》,参考:https://medium.com/@nvashanin/the-path-to-becoming-a-software-architect-de53f1cb310a)

举报
评论 0