如何成为一个软件设计架构师?

How to become a software architect?

 
In industry specific forums, I often see questions like “what certification do I need to do to become an architect?”.  The simple answer is that you don't need a certification to become an architect. It may help, but there is a lot more to it to become an architect.  
You can't just only study to become an architect. The best way to become an architect is to start thinking and acting like one. If you start thinking like one, you will start to observe the architects and learn. This is true for the other roles like becoming a manager, lead, etc. These roles require technical skills complemented with good soft skills, attitude, and work ethics.
(你不能只通过学习去成为一个架构师,要学会思考)

Any self-help book will tell you -- what you think and do is what you become. This is why many interviewers ask open-ended questions like who are your role models? what books did you read recently? how do you keep your knowledge up to date? tell me about yourself? what are your short term and long term goals?, etc. These questions can reveal a lot about your passion, enthusiasm, attitude, communication skills, and technical strength. 
(你的榜样,最近读什么书,怎么保持你的知识的更新,你的长期目标和短期目标是什么,这些问题可以反映出你的各个方面)

Here is my take on the road map to become a software (e.g. JEE) architect. 

  • Learn to draw high-level conceptual and UML diagrams: Know the various architectural stylesJEE layered multi tier architecture, and various integration styles. You must be confident to draw these diagrams on a white board with regards to the actual application you had worked on or how would you go about designing a new application in question.
  • (学习画层次概念图和UML图去表现出:架构styles,J2EE多层次架构,架构各种集成 ,当你设计一个应用程序时,你能有信心把图画出来并在实践中应用)
  • Learn to ask the right questions -- what if ...? how about ...?, design alternatives, pros vs cons, tactical versus strategical, strategical vs political, weight the risks against the benefits, build vs buy, etc. Ask questions pertaining to the 16 key areas. Think in terms of scalability, transactional boundaries, best practices, exception handling, development process improvement, etc.)
  • (了解正确去提出问题,思考架构的扩展性,事务的范围,最佳实践,异常的处理,提高开发效率等,主要是下面16个方面)
  • Get a good handle on the 16 key areas and proactively apply these key areas.

Language Fundamentals (LF)

(语言语法)

Specification Fundamentals (SF)

(一些基本规范)

Platform Fundamentals (PF)

(架构规范或者说层次规范)

Design Considerations  (DC)

(设计的规避,避免过渡设计什么的 ,*LZ理解)

Design Patterns (DP)

(设计模式)

Concurrency Management (CM)

(并发管理)

Performance Considerations  (PC)

(性能的思考)

Memory/Resource Considerations  (MC)

(内存资源)

Transaction Management  (TM)

(事务管理)

Security (SE)

(安全性方面)

Scalability  (SC)

(扩展性)

Best Practices (BP)

(最近实践)

Coding (CO)

(编码)

Exception Handling (EH)

(异常处理)

Software Development Processes (SDP)

(软件开发管理)

Quality of Service  (QoS)

(服务质量)
  • Look at things from both business and technical perspective: architects form a bridge between many cross functional teams like business analysts, stake holders, project managers, developers, testers, infrastructure team, operational and support staff. Know your target audience and learn to convey technology to the business non-technically and the business requirements to the techies technically.
  • (从业务和技术角度分析)
  • Learn to look at the big pictures and also pay attention to details where required.
  • (学会全局分析并注重细节)
  • Get a well rounded hands-on experience. For example, client side, server side, application integration, full SDLC, etc. Nothing beats experience, and you can proactively fast-track your career by learning from others' experience via good books, blogs, industry specific web sites, and helping others on the forums.
  • (获得全面的经验,比如客户端,服务端,集成方面的等,可以通过书籍论坛等去学别人的经验)
  • Also, should have a good domain knowledge 
  • (域名方面的知识? 我想他是指行业知识,这里谁帮忙翻译下)
  • You don't have to be the "jack of all trades" but as a technical leader and a bridge between various stake holders and the development team, you need to have good soft skills to make things happen by engaging the right team and expertise. The key soft skills to have are communication, interpersonal, leadership, analytical, negotiation, and problem solving. The soft-skills and domain knowledge are the most important in the list.
  • (你不必了解每个方面,或说不必成为万金油,但必须作为一个技术领导去沟通你的老板和开发团队,你需要有的包括:沟通能力,领导能力,分析能力,谈判能力,解决问题的能力,当然行业知识和软件开发技能是最重要的

So, the combination of all the above can transform you into an architect.
 
LZ转帖者话:
帖子是转的,我只是很简单翻译了下,可能翻译有很多错误,欢迎指出或者补充,原文地址如下
 
原文转至 http://java-success.blogspot.com/search/label/How%20to%20become%20an%20architect%3
F
原文地址:https://www.cnblogs.com/springsource/p/2435812.html