架构师应该是一种角色,而不是一个职位
2017-12-04 09:13
429 查看
架构师应该是一种角色,而不是一个职位
昨天看到一篇关于“架构师”的文章,读后非常有感触。我个人比较认同作者的大部分观点,故决定将原文进行翻译,和国内的开发者一起分享。原文地址:“Architect”Should Be a Role, Not a Position”。
当一个资深的开发者变得更加资深时会发生什么事情?他们经常会被提拔做去“架构师”。有时一个架构师也不一定非要是开发者,如果他们能看到更大的蓝图。最终,总有一个人挂着“架构师”的头衔:他对要开发的系统和正在开发的系统做出架构上决策。在一些更大的公司,还有“架构师议会”,每个团队指定的架构师们聚在一起决定着一些明智的事情。
但我认为专门设立“架构师”的职位是一个糟糕的想法。架构师应该是建筑行业的一个职位,这是说的过去的,因为你不能在项目中期改变和调整架构。但是软件架构是十分灵活的,不应该预先就严格地定义好。而且开发工作和架构设计是如此的紧密关联,所以说某个人决定“什么要做”和“什么不要做”是不科学的。这会带来各种各样的问题,主要是因为架构师经常无法全面的考虑到具体的实现是怎么样。如果一个架构师长时间不写代码,他们更加倾向于忽略“实现细节”,转而仅仅考虑抽象设计。然而,抽象总是伴随着遗漏,只考虑抽象而不考虑特定的实现这样的解决方案很少行得通。
我的第一个论点就是:在不知道详细地编写所有代码地情况下,你无法在成为一个优秀的架构师。大多数情况下都不是“简单地编码”。如果你已经成为架构师多年,同时也多年没有写过代码了,那几乎可以肯定你不是一个优秀的架构师。
当然,你可能是一个优秀的架构师。或许在你所在的那个特别的公司里,有人坐在象牙塔中,指挥着码农去整合这个实现那个,这可能说的过去。但即使是这种情况,也有更好的方法。
架构师应该是一种角色。每个资深的团队成员都可以也应该扮演架构师的角色,不用每个团队指定一个人来当。实际上,最好有多个人来扮演架构师。在会议中讨论架构设计和讨论功能设计类似,如果你是那个要实现所有事情的人,那么你需要带着明确的想法去参会。任何的过度设计(大部分架构师经常会犯这个错误)需要在你面前证明是合理的——“我是否愿意去写这些模板代码,或者是否有一种更简单优雅的实现方式”。
职位可以使“软件工程师”,但角色可以是“敏捷大师”、”架构师”、”持续集成官”,等等。如果公司需要一个“架构师议会”去决定系统间更宏观的整合,开发者可以提名某个人去参与这些会议,这个人有可能是对这些系统最了解的人。
我知道现在架构师在想什么——有一些更加高层次的关注点开发要么不太能理解要么不应该为此被打扰。大错特错!如果你的开发不理解更高层次的架构规划,那么迟早你会遇到问题的。是的,因为他们要让代码适应你正在规划的更大的蓝图,他们需要被打扰。
还有一方面于团队成员的态度和动态的交流。如果某个不是特别优秀或者受人尊敬的开发被提升为“架构师”,那么可能破坏团队的和谐。另一方面,某些人被提升为“架构师”以后可能会过于自信,以至于他们会想当然的去做出设计决定,而不管那些反对他们的好的争论点。
所以,理想的情况(这是我的第二个论点)是取消架构师的职位。确保你团队中资深的成员能够参与架构设计和决策,那样他们可能会更有干劲,他们也会对他们开发的成果有一个更加清晰的规划。最为重要的是,架构决策不能脱离日常的“现实”的开发环境,否则它们会不必要的复杂化。
出处: http://michael-j.net/
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢。
-END-
相关文章推荐
- 架构师应该是一种角色,而不是一个职位
- 程序员应该是一个牛逼的职业,绝对不是屌丝职业
- a标签的下载链接,如果是图片,点击链接是下载一个图片而不是直接打开,应该怎么办?(添加download属性)
- 做一个java高级程序员甚至架构师 应该掌握哪些技术
- 云计算是一个概念而不是一种技术
- 站长,你不是技术员,而应该是一个销售员
- 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”
- 一个游戏中玩家总经验值达到200就可以到达2级,达到400可以升到3级,达到600可升4级,达到800可升5级依此类推(玩家新创建的角色为0经验1级)。游戏中有一种超级经验丹,玩家1级的时候使用超级经
- C++中有string类,string是一个类不是一种类型,c语言中没有
- 博客园博客评论一个奇怪的现象~~这应该不是圣诞礼包
- 最喜欢的一种人生应该是名利淡泊一点的人生,是一个努力奋斗的人生
- 我眼中的架构师:一个优秀的架构师应该具备什么?
- 我是一个商人,我不应该考虑穷人。如果考虑穷人,我作为一个企业的管理者就是错误的。因为投资者是让我拿这个钱去赚钱,而不是去救济穷人
- 作为一个初学者或者进阶者,这并没有什么错。当一个有能力的程序员而不是领导者,这也没有什么错。真正的错误是,当你知道应该如何去提高时仍然选择做一名初学者。
- 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF",6,应该输出为"我ABC"而不是"我ABC+汉的半个"。
- 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
- 不想当架构师的程序员不是一个好的程序员
- 云计算是一个概念而不是一种技术
- 给定一个链表,一次颠倒链表k的节点并返回其修改列表。如果节点的数量不是k的倍数,那末最后的剩余节点应该保持原样。
- 情感是热血的,商业是冷血的,产品经理应该很多时候是一个凭热血去做冷血事情的角色