从设计师到软件工程师再到解决方案架构师:我的旅程

2025-05-28

从设计师到软件工程师再到解决方案架构师:我的旅程

我想以一个常见的免责声明作为本文的开篇:这是我的旅程,其中的一切,都与我的本性息息相关。不同的人,在相同的环境下,可能会经历完全不同的事,得到截然不同的结果。

要解释我是如何走到这一步的,得从我学习绘图员的时候说起,当时我正准备继续深造成为一名(建筑)建筑师。后来,我爱上了CAD、电脑和平面设计,甚至在参加完Photoshop、Quark和Freehand速成班后,还在一家印刷厂找到了一份工作。

2003年我搬到了西班牙。移民很不容易,尤其是当你需要完全自食其力的时候。不过,我很幸运,因为自己有超过五年的平面设计师经验,所以一搬到这里就很容易地在一家小型设计公司找到工作。我们出版了一本专注于房地产的杂志,几个月后,我被提升为创意总监,负责杂志和一些客户的企业形象设计。我的团队里有几位设计师,工作很愉快。

情节转折

一年后,很明显所有业务都在转向线上。YouTube 即将诞生,Facebook 也处于婴儿潮时期,每个人都想在网上露面。我说服经理我们应该建立一个网站,并尝试将杂志的在线版本打造为门户网站。

“我们需要一个网页开发人员,”他说。“我来做网页开发人员。”我回答道。

我开始把所有业余时间都用来学习 Action Script。那些全屏 Flash 网站,拥有华丽的动画和图形,让我惊叹不已。我渴望学习这些。为了创建门户网站,我学习了 HTML、CSS、JavaScript、PHP 和 MySQL。我是第一批热衷于在线教程和 Web 开发书籍的读者之一。

我尝试了 Joomla、Wordpress,最后是 Drupal。

2007 年的危机给我们带来了沉重打击

我们可以通过专门销售网站来维持运营。我将负责网站设计、数据库管理、主机托管、设置DNS记录、配置htaccess、安装CMS和插件、开发前端以及维护。我当时是一位名副其实的“网站管理员”。我热爱这份工作!

但在2011年,我们跌到了谷底。我们的客户大多是开发商和房地产经纪人,随着房地产泡沫的破裂,他们也不得不关门歇业,我们也一样。我开始做自由职业。

成为一名自由网页开发者是一份全天候的工作

如果你不像我一样,在一家规模更大的公司担任顾问,而是拥有自己的客户,那工作就很辛苦了。你得身兼销售、架构师、项目经理、设计师、开发人员、质量工程师、一级到四级支持人员、系统人员,还要在后台兑现支票……你什么都得干。没有晚上,没有周末……

身为母亲兼自由职业者,是我经历过的最具挑战性的事情。我一边给孩子喂奶,一边为10个Drupal网站修补heartbleed漏洞。我一边跑着去学校,一边和客户通话。

进企业就职

所以在2014年,我把简历投给了一家咨询公司(也就是我现在就职的那家),但几乎不抱什么希望。我没有计算机科学学位,而且我读到的资料都说我根本不可能在那个领域找到工作。

但我最终还是得到了一份 Adob​​e Experience Manager 项目的前端开发人员的工作。我不得不和家人一起搬到巴塞罗那。这是一个巨大的赌注。幸运的是,一切进展顺利。虽然这不仅仅是运气的问题,其中也包含着大量的努力。

这不仅仅是运气的问题,其中也包含着大量的努力和坚持。

企业环境也有其特殊性。在企业工作还能学到很多关于政治、政策和流程的知识。;)

熟悉 Adob​​e Experience Manager

直到那天之前,对我来说,Adobe 就是 Photoshop 背后的公司,仅此而已。(而且这家公司还收购了 Macromedia,停用了我最喜欢的矢量编辑器 Freehand…… :/ )我完全不知道他们还收购了 Day Software,并且拥有了 CMS。

我对内容管理系统非常熟悉,没过多久就搞清楚了它的工作原理。有些前端开发者只想写前端代码,这很正常。但我的职业背景不同(参见自由职业者那部分!),我很乐意涉猎整个技术栈。

我的第一份工作是担任一个大型平台的前端技术主管,这个平台是从零开始构建的。一年后,我被调到一个银行平台,在那里待了六个月。之后,我被分配到一个我们刚刚获得的新客户,担任一个大型遗留平台的三级支持和解决方案工程师。我再次担任前端技术主管,我知道很多人不喜欢使用遗留软件,但我可以向你保证,每天使用这些软件所获得的知识是无价的。

我每天处理遗留代码所获得的知识量是无价的;我必须解决的问题也是独一无二的。

在我看来,没有其他经验比这更好地理解耦合、依赖关系并获得系统的整体概述。

剧情再次反转

除了支持之外,我们还集成了新功能,但到了某个时候,我们决定不再冒险在此基础上构建,而是选择尖端技术。因此,一年多之后,我得到了第一份架构师的工作,负责同一平台 2.0 版本的概念化和定义。

我爱上了设计系统。这很像用乐高积木搭建。而且我可以运用在学习建筑设计过程中学到的原则。毕竟,你对建筑的期望和你对系统的期望是一样的,希望它们符合质量标准,具有韧性、安全性和耐用性等等。

我的第一次售前体验非常紧张

2017年8月,我还参加了人生中第一次RfP研讨会。一家全球领先品牌为一个非常大型的企业项目发布了一份RfP(提案请求),我协助制定了整个DevOps战略,并与客户经​​理、一位用户体验工程师和两位高管一起前往现场,对我们的提案进行辩护。

我必须展示整个 DevOps 方案。

我们赢了。

会议和公开演讲以及它们如何帮助我成为一名更好的建筑师

作为一名建筑师,沟通至关重要。你必须向团队、其他项目负责人以及客户传达你的想法、定义或决定。将这些非常专业的概念转化为任何受众都能理解的简单语言和概念,需要高度发达的沟通技巧。你需要能够清晰地表达和传达那些有时非常抽象的想法。

在会议和其他技术活动上发言确实帮助我更好地适应了演讲者的角色。但我必须承认,与一群同行或其他开发人员交谈和与客户交谈是截然不同的。

关键在于,无论你面对的是谁,你都需要建立融洽的关系。而建立融洽关系的最佳方式,就是通过构建叙事结构,让听众产生共鸣,从而展现更人性化的一面。

一定要努力提升你的沟通技巧。尤其是如果你将来想成为一名建筑师的话。

与销售团队合作

通常,解决方案架构师拥有更多的后端/系统背景。4年前,我就已经意识到,随着前端工作量的不断增长,集成也变得更加复杂,需要整合的东西也越来越多。在发现阶段,前端专家的作用不仅是必要的,更是不可或缺的。我开始为此铺平道路。

我加入了一个在北欧运营的销售团队,同时担任我被分配到的项目(我们赢得的项目!)的混合技术主管/架构师。

作为该团队的一员,我审查潜在客户/领导的代码库,参加会议以了解他们的问题和需求,撰写从基础设施到技术堆栈的架构愿景论文,估计和定义时间表,估计人员需求等。在 COVID 之前,我到处旅行以展示这些分析或收集更多信息,或与客户建立联系,或就某个主题对他们进行教育。

有时我会飞到阿姆斯特丹或哥本哈根,只待一天,参加一个会议,然后晚上准时回来和家人共进晚餐。这很令人兴奋,但也很紧张,如果你想要那种感觉,你必须做好准备。在去程中,我整理了会议的幻灯片和文档。在回程的航班上,我审阅了自己项目的PR。(感谢挪威航空和所有提供机上无线网络的航空公司!)

告别技术领导角色

去年某个时候,我们开始着手一个全新的概念,它需要大量的高层定义,于是我正式踏上了解决方案架构师的职业道路。在我所负责的项目中,我已经正式担任架构师两年了,作为我们全息组织的一员。

每家公司都有自己的角色定义,激励这些角色的人也需要以不同的方式完成工作。在我目前的公司,架构师绝对是亲力亲为的。我们的文化提倡并鼓励架构师和首席开发人员之间的互动。

然而,架构师和技术主管的工作领域虽然有所交叉,但却位于高级设计假想线的两端。对于那些不熟悉这些差异的人来说,这张图或许能提供一些帮助。

架构师 vs. 技术主管

建筑师做什么?

架构师负责系统的高层定义。他们是业务愿景、需求和技术知识之间的连接点。即使他们能够做到,架构师也不会关心具体实现的细节。

架构师是业务愿景和需求以及技术知识之间的连接点

当你从 Tech Lead 转型时,这或许是最难摆脱的部分。当你审核一个 Pull Request 时,你的意见其实没那么重要,比如“你本来可以用这个方法,而不是那个方法”。你关心的是全局。

事实上,你会发现自己与其他开发人员的联系越来越少,更多的是独自工作,或者与其他架构师、需求工程师、系统工程师和质量保证主管一起工作。这可能是转型过程中最困难的部分。

另外,如果你是前端技术主管,你的曝光度会更低。高层的工作虽然不那么具体、那么显眼,但同样重要。

日常生活

作为一名架构师,我(项目)一天的大部分时间都花在与客户沟通、与团队其他成员协调决策的团队会议、与合作伙伴的电话会议、绘制图表和文档以及执行概念验证上。我更关心的是 API 设计和集成、数据存储、安全性、性能、CD/CI 流水线、发布和部署。我关心的是客户的系统是否合法合规。

我不再参与开发冲刺,也不再交付其范围内的任务。我会怀念它吗?我必须承认,我越来越不怀念它了:这一次,我真的很喜欢我现在的工作。而且,我也非常享受授权他人并看到其他人像我一样朝着同样的方向成长。

我的销售支持工作主要包括支持方案和项目探索、参加与潜在客户的会议、撰写建筑愿景、审核其他建筑师的概念方案,以及准备售前和售后的培训材料。所以,除了出差之外,我之前做的所有工作都和新冠疫情之前一样。

成为解决方案架构师所需的技能

让我们把我的工作和我认为最有用的技能联系起来。成为一名优秀的建筑师所需的软技能包括:

  • 沟通技巧(表达能力和倾听能力)
  • 演示技巧(制作精美的图表和简洁的幻灯片)
  • 外交(您与客户处于第一线。一切都与业务有关,尤其是在企业中,您必须非常有耐心并保持良好的礼貌)
  • 机动性(因为与客户一起工作,所以你必须具备机动性和快速反应的能力)
  • 分析能力(你的工作就是解决抽象问题,设计或修复许多尚不存在的系统)
  • 领导技能(你必须领导你的团队和客户的团队。你必须让每个人都认同什么是最好的,并做出决定——这是一个复杂的话题,有时可能不是绝对最好的,但在时间和预算等参数方面是最方便的——)
  • 评估项目并配备人员的能力
  • 确定优先次序的能力

技术知识也与 Tech Lead 所需的知识不同。除了掌握一门编程语言外,在 2021 年,我建议你专注于

  • 云提供商及其产品
  • 水平和垂直缩放等概念
  • 复制和分片等概念
  • 无服务器计算
  • 数据库
  • API 模式和契约
  • CD/CI 以及如何有效地构建管道
  • 自动化
  • 集装箱化
  • 编排
  • 架构趋势(如微服务)
  • 设计模式
  • UML 和不同类型的图表(流程图、思维导图)
  • 安全和协议(网络)

如果你专注于前端,你可以查看我之前整理的有用技能思维导图

前端架构思维导图
https://twitter.com/AnfibiaCreativa/status/1331565865196777472/photo/1

此外,也要保持关注!以下是我关注的一些建筑师,以便随时了解建筑趋势。这份名单对我来说很有意义,你可能需要自己寻找合适的信息来源 ;)

卢卡·梅扎里拉
曼弗雷德·斯泰尔
马丁·福勒
丹·瓦林
加布里埃尔·沃尔特

我是否感觉我的编码技能受到了影响?

目前肯定不会。我花了很多时间在编程上,作为一名 GDE 以及我参与的其他社区活动都对此有所帮助。我觉得自己会花很长时间编程,而我的新专注只会增加我的价值。

最后

另一项非常重要的技能是接受反馈并采取行动。如果你想成为一名优秀的建筑师,那就找到那些从事该行业多年的人(当然,这适用于任何职业),并向他们寻求反馈和指导。让他们针对你最薄弱的领域分配任务,这样你就有机会积累经验。

并且...享受旅程!

附言:感谢 Mario、Ina、Conrad、Tomasz、Andreas 和 Georg,他们一直是我的导师,从基础设施到建筑再到软技能。

文章来源:https://dev.to/this-is-learning/from-designer-to-software-engineer-to-solutions-architect-my-journey-2p5b
PREV
Is 0kb of JavaScript in your Future? Progressive Enhancement React Server Components Islands Partial Hydration So 0kb? answer re: how to make screen reader read document loading and document loaded?
NEXT
♻️ 立即删除未使用的 node_modules 并享受一些可用空间!