How to become a software architect?

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

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

03 2012 档案

WEB控制层,怎么实现扩展性
摘要: web 设计程序的控制层一般有3中:1,page control2,front control3, filtercontrolspring MVC ,struts 都是采用了后面那种, 其实最好的就是两种结合起来;就扩展性看来, page control 简单,front control适合复杂的 阅读全文

posted @ 2012-03-30 15:59 何锦彬 阅读(25) | 评论 (0) 编辑

探讨大数据量处理<续篇>
摘要: 接上面说用到NOSQL,但这个概念太笼统,hadoop做法: (在我看来1-3点算是NOSQL产品处理的了)1,首先一般是用MAP/VALUE进行分布式存储保证可靠性:分布式缓存,一般比如N个分布式节点,存储时同时放进M个中,你查询数据只要从N-M个中读到没此数据即为无(Quorum NRW),当然还可以进行日志记录法:记录每次的日志操作,当机器宕机可以从日志中恢复内存中的数据,redis就有这种模式做法2,然后对相同的操作进行合并,即MAP/reduce 操作(MapReduce)如何reduce操作:可以通过bloom-filter 算法①初刷, 进行找出相同的对象操作,然后对它进行red 阅读全文

posted @ 2012-03-30 15:35 何锦彬 阅读(1277) | 评论 (2) 编辑

你可能感兴趣的:(software)