我想分享一下我刚刚在我国一家大型公司获得了我的第一个入门级软件架构师职位,担任如此重要的职位有点不真实,但我想分享一下迄今为止的经历,也许可以帮助其他寻求类似职位的人。
职位
我将以解决方案架构师 I 的身份加入,负责定义和设计高级和详细架构,以帮助该公司实现其战略目标。这意味着从数据建模和系统设计到单元测试、编码和文档的方方面面,同时遵循最佳实践和标准。
我还将与跨职能团队密切合作,确保我们的解决方案可扩展、高效且切实可行。他们似乎也非常热衷于探索新兴技术,所以这是一个在极具前瞻性的环境中学习和发展事业的绝佳机会。
面试
面试过程非常紧张,但这是好事。他们非常关注我在敏捷环境中领导团队的经验,似乎对领导力、沟通和解决问题的能力与技术技能一样重视。
当谈到技术部分时,他们想看看我如何思考系统设计和抽象。我被问了很多关于过去项目的问题,以及我如何决定不同的架构选择。他们不只是问我做了什么,他们想知道我为什么这么做。在这种情况下,让他们选中这个选项的答案是我的长远思考能力——不仅了解系统的当前需求,在做决定时问这些问题:系统应该扩展到多少?
- 系统需要扩展多少规模?
- 这是一次性的解决方案,还是核心的、持久的产品?
- 如果这是一个长期解决方案,那么时间框架是怎样的(2 年?5 年?10 年?)?
- 我们计划如何随着时间的推移更新和维护技术堆栈?
我引用面试官的话:这类问题不只是面试时才问的——这才是我们对待架构的普遍态度。这不仅仅是为了构建今天能用的东西,而是为了构建经得起时间考验、满足业务需求并能随着事物变化而发展的东西。
他们寻找什么
以下是他们所追求的主要技能(适合任何考虑申请类似职位的人):
- 具有软件开发或解决方案设计经验
- 具备编程、数据库、网络和操作系统方面的丰富知识
- 熟悉容器和 Kubernetes
- 了解软件架构、设计模式和敏捷方法
- 能够与客户和开发团队清晰地沟通
- 了解 Java、C和 SQL
- 具有事件驱动架构 (EDA) 经验者优先
过去经历:
我在一家小型软件工厂担任了 3 年的后端开发人员。这是一家规模很小的公司,人员流动率很高,在最后一年,我担任了一些项目的临时技术主管。真正让我为架构师角色做好准备的经历包括:
- 管理 Kubernetes 中容器化应用程序的实施和维护。
- 根据大量软件需求文档从头开始设计、绘制图表和记录系统。到最后一年,我开始直接与客户会面,甚至亲自撰写这些文档。
- 领导一个小型敏捷团队交付生产级软件,并在紧迫的期限内完成任务。
- 使用各种架构模式和技术,让我对什么适合不同的需求、什么不适合以及原因有了深刻的理解。
- 拥有软件安全方面的亲身经验。多个面向公众的程序受到各种形式的攻击,而我负责缓解所有这些威胁。
这是一个完全远程的全职工作,但薪水很低,工作环境也很恶劣。到了最后一年,我没有任何高级指导,所以我通过艰苦的方式学到了很多教训(而且他们为此付出了代价哈哈)。对我有帮助的是我扎实的计算机科学理论基础——我学习了很多理论,我喜欢从最基本的表达方式来理解系统。
需要说明的是,我不认为自己是一名高级软件工程师。这些人正在寻找“刚从大学毕业、知识渊博、经验丰富、有动力做出巨大贡献的人才”,这对他们有所帮助。所以他们特别对我这个年龄(23 岁)和我类似的候选人感兴趣。话虽如此,这并不容易——大约有 400 名候选人,而我是唯一一个收到录用通知的人。