对于软件架构师( Software,SA)在StackOverflow和程序员SE上的角色,有很多问题都有很好的答案。我想问一个比这些问题更有重点的问题。SA的定义非常宽泛,因此为了这个问题,让我们将SA定义如下:
软件架构师指导项目的总体设计,参与编码工作,进行代码评审,并选择要使用的技术。
换句话说,我不是说管理休息和赋值(更多押韵词省略)类型的SAs。如果我要追求任何类型的SA职位,我不想离开编码。我可能会牺牲一些时间与客户和业务分析师等进行交流,但我在技术上仍然参与其中,而且我不只是知道会议过程中发生了什么。
考虑到这些要点,SA应该把什么带到谈判桌上?他们是否应该采取“制定法律”的心态(可以这么说),并强制使用某些工具来适应“他们的方式”,即编码指南、源代码控制、模式、UML文档等等?或者,他们是否应该指定最初的方向和策略,然后根据需要向后倾斜和跳跃以纠正船舶的方向?
根据组织的不同,这可能不起作用。一个依赖TFS来执行一切的SA可能很难在一个只使用StarTeam的雇主那里执行他们的计划。类似地,SA需要根据项目的阶段而灵活。如果这是一个新的项目,他们有更多的选择,而他们可能有更少的现有项目。
下面是我经历过的一些SA故事,作为分享背景的一种方式,希望对我的问题的回答也能为这些问题提供一些启示:
我不会用这篇文章作为发泄的平台。我在上面提到的SA故事中有积极的和消极的方面。我的问题归结为:
谢谢!我确信这些工作任务很容易扩展到高级开发人员或技术主管,所以也可以随意回答。
发布于 2010-11-11 18:29:41
系统架构师应:
SA必须知道如何编码,并且应该参与一些编码工作,弄湿自己的手,可以这么说。这使他们与开发工作的格式塔保持联系。作为Bob 曾经说过叔叔,架构师应该自己编写一些代码,这样他就可以看到他的设计给其他人带来的痛苦。
对于所有的设计、技术和编码风格的决策,SA应该有最后的决定权。但是,像所有的经理一样,SA的工作就是为他的员工扫清道路,这样他们才能有效率。这意味着,在很大程度上,开发人员可以在他们的层次上决定如何解决问题。这意味着SA不让那些头发尖的老板进入开发商的小隔间。这意味着SA会根据需要提供帮助。
和所有人类一样,SA也会犯错误。好的从这些错误中吸取教训,成为更好的SA。
发布于 2010-11-11 18:32:41
SA应该把什么带到谈判桌上?
2他们如何在决策中取得平衡?
3是否应该以必须执行某些基本规则的心态来对待SA工作(如前所述)?
还有很多,我认为会有一些很好的答案。
发布于 2010-11-12 09:35:39
我从未遇到过一位有用的建筑师,主要是因为他们不实际。
对我来说,我看到的最大问题是:
rewrite from scratch心理和我一起工作过的最好的“建筑师”:
对我来说,问题是我工作过的最好的“建筑师”没有“建筑师”的头衔。他们通常是基于特定问题和项目的软件工程师。他们明白,在大多数业务中,从头开始重写一个工作代码基是不实际的。他们作出设计决定或提供选择,以及他们的理由或理由。他们描述了如何在一段时间内将代码库迭代到一个新的体系结构中,并且仍然保持所有功能。他们给出保守的建议,而不是推荐dejour或熟悉的东西。他们将传达一种关于事情应该如何运作和为什么运作的一致愿景,但更重要的是,他们会规划出如何实现目标和成本。
https://softwareengineering.stackexchange.com/questions/18444
复制相似问题