我在一个组织工作,这个组织几乎是大公司中的一个初创公司。该团队有几名数据库工程师和几名软件工程师(在数据挖掘领域)。我们正在以快速的速度增长,这就需要在未来几年内有一个整体的架构战略或技术路线图(或指南针)。作为一名软件工程师,我的任务是开始每两个月一次的会议,以领导讨论。所以,我的问题是,你是如何开始扮演架构师的角色的?您如何开始组织范围内的架构讨论?我开始读“每个软件架构师都应该知道的97件事”这本书,但我想从你的经验中听到更多。那么,作为一名架构师,你是如何起步的?
诚挚的问候,
发布于 2010-08-24 05:52:15
找出你的团队中的成员
之外
在你知道你要从什么开始之前,不要开始谈论架构。在其他人也开始讨论架构之前,不要开始讨论。
发布于 2010-09-18 00:46:53
您的问题很难回答,因为它涉及到许多领域:流程、领导力和软件设计(或架构)。我假设你已经有了一个标准的流程,但如果你没有,那就试试敏捷流程吧。我将讨论领导力和软件架构。
Leadership。弗雷德·布鲁克斯的名著“The Mythical Man-Month”谈到了拥有一个技术领导者,就像外科手术团队拥有一个领导者一样。就我个人而言,我更喜欢与医生合作,所以让我们将Brooks的手术团队视为一个极端。尽管如此,你仍然需要有人在技术上协调谁在做什么,比如分配人在系统的不同部分工作,决定最困难(风险最大的)部分是什么(这样他们就不会被推迟,直到他们改变/修复的代价很高),并在团队不同意时做出选择。无论您是在构建软件、汽车还是pogo棒,都需要这种技术领导能力。
Architecture/Design.标准的咒语是“每个系统都有一个架构”,但由此推论,并不是每个架构都是经过深思熟虑选择的。您可以隐式复制上一个项目的体系结构,例如3层系统。或者,一旦您知道您正在使用像EJB这样的框架,它可能是预先决定的。在项目开始时,您将制定架构决策,其中一些将很难在以后更改。你将如何持久化数据?你会使用框架(例如Spring,EJB,RoR)吗?您将以增量方式还是批量方式处理数据?
几乎任何架构都可以强制满足您的需求。例如,您可以使用RoR构建一个恒温器。但是,当您的体系结构能够很好地满足需求时,您将会更加轻松。有时,您会有一些需求,比如低用户界面延迟,这可以通过明智的架构选择来解决,比如使用AJAX。因此,项目的开始是一个思考这些事情并使其正确的机会。(这并不意味着您要上山,努力思考,然后向团队口述您的答案--在这一点上,我还是倾向于协作)。
不要害怕预先考虑架构,特别是它可以帮助你避免困难的方法,但也不要试图提前决定所有事情。如果团队中的一部分开始使用Ruby on Rails,而另一部分开始使用EJB,那么您将遇到麻烦--因此,做出一些技术决策,那些强加给您的决策,以及那些将解决您最大风险的决策。
最后一件事:早期的架构讨论是福也是祸。它们是一种福气,因为它们提早获得了想法,并允许您选择您的设计,而不是错误地进入其中。但它们是一个诅咒,因为每个人都会有自己的观点,而且很难让它们都指向同一个方向(即回到对技术领导的需求)。
我推荐使用Applied Software Architecture的第12章来指导您的问题。标题列表很好地说明了它的建议:创建愿景,架构师作为关键技术顾问,架构师做出决策,架构师教练,架构师坐标,架构师实施,架构师倡导。您提到的97 Things这本书更像是智慧珍珠的集合,而不是一本有凝聚力的架构指南。
乔治·费尔班克斯,Just Enough Software Architecture的作者
发布于 2010-08-24 05:44:13
我个人没有这样的经验,但这里有一些提示:
https://stackoverflow.com/questions/3551903
复制相似问题