Look at an architect as being a bit like a flight traffic controller. They determine where the pieces go and how they relate to each other. It is a very fine line to be able to walk.
Not only is there a large technical knowledge required, but also a great deal of common sense. An architect should be able to see the entire project landscape and how to get there, all the while promoting new technologies to provide efficiencies, introducing frameworks and concepts, documenting and describing the path chosen, plus (in my opinion) being able to jump in and get their hands dirty.
一名架构师需要有广泛的专业知识和良好的意识。他能够从宏观把握整个项目以及从概念到实现的整个过程,在这个过程中能够提出新的技术来保证效率,并为其他人清楚的讲述选择的框架、概念和文档,并且自己也能承担一些编码工作。
Most architects I have worked with have a stellar understanding of the language or platform that they are working on. Additionally, they should be extremely well versed in how code can be used to create and meet repeatable goals, stable releases, and an all around good performing product that meets the goals of the project.
架构师应该对他使用的语言或者平台有深刻的理解。并且他们能够精通于如何组织代码来满足可重复的目标、稳定的发布以及所有其他方面以满足项目的需要。
Some specific things that might help:
- Know your platform. Live, eat, and breathe the platform you plan on architecting within. You need to not only be an expert on what is available now, but you need to know what is in development and coming down the road in the future. (For example, in a Microsoft .NET shop, stay current on beta products, explore new related technologies, etc.)
- 深入理解所用平台。从里里外外各个方面理解设计所在的平台。你不仅需要对现有的功能有深入理解,并且需要知道正在开发的功能以及将来的情况。
- Know sound fundamentals. If you are using a OOP capable language, be fluent in all of the concepts of OOP. Be a champion of the technical capabilities of the language and temper it with sound development theory.
- 充分理解软件开发的基本原理。假如你用的是一门OOP语言,那么你要能熟悉各种OOP概念。透彻的掌握编程语言的用法,并且将其和软件开发理论相结合。
- Learn how to make development easier. Don't reinvent the wheel. Use existing frameworks and libraries to increase efficiencies, whether it is an AOP framework, a mocking framework, etc. Help give the developers the tools that they need to succeed and show them how to use it. Also, be prepared to role up your sleeves and get your hands dirty. Stay close to the code, and to the developers. You are a valuable member of their team, and also the other way around.
- 学会如何简化开发。不要做重复劳动。使用现有框架和库来提高开发效率。帮助软件设计师找到恰当的工具并教会他们如何使用。并随时准备好参与到编码工作中。并且和软件设计师保持良好的沟通,成为开发小组受尊敬的一员。
- Learn UML. Not only do you need to be able to come up with the blueprint, you need to be able to convey it. UML is language- and platform-neutral, with tools available to easily help share your line of thought.
- 学会使用UML。不仅要会勾画蓝图,而且要回清楚的表述出来。UML是语言无关平台无关的,它能够帮助架构师分享思路。
- Anticipate failure. Not every decision you make will be the right one. Learn from your mistakes and apply them to your future projects. Describing why something could go wrong from prior experience is a very powerful tool.
- 预测失败。不可能你做出的决定都是正确的。从失败中学习并将教训应用到将来的项目中。从先前的经验学到的为什么有些设计会失败是非常强大的工具。
- Be a team player. No one wants to work with an architect who lives in an ivory tower. Work with the team to get everyone's ideas assembled, and provide comprehensive plans that take everyone's concerns into consideration. You have a distinct role of making everyone feel like they are more of a stakeholder in a project, rather than someone being dictated to.
- 做项目组的一员。和项目组的其他人充分交流,并充分收集每个人的想法,综合起来提出更好的设计。你有责任让每个人都感觉他们是项目的主人,而不是被指使的。
I have worked in shops where architects have too much power and authority. It is very important to remember that you are a team player, first. The architect should be an expert that people can look to and who will provide guidance. Wisdom and judgment are very important.
架构师首先应该融入小组中,并且是一个大家可以依赖的专家,在技术上为大家提供保障。架构师需要的是智慧和判断力。
原文出自:
http://stackoverflow.com/questions/327662/why-do-some-developers-become-architects/327677#327677
意犹未尽?
Becoming a highly competent Architect
What does it take to become an architect?
转载请注明出处http://www.cnblogs.com/hucn/archive/2011/06/03/2072216.html