- 浏览: 549880 次
- 来自: 广州
文章分类
最新评论
-
moshalanye:
不是没人顶,而是江南白衣 是SpringSide的创始人,C ...
编写对GC友好,又不泄漏的代码 -
awdxzc:
请教,stand meeting要怎么开效率比较高? 要求团队 ...
假如只能把四种软件开发实践写在手背上 -
congjl2002:
你好,我使用的JDK6,以下信息是否说明MaxPermSize ...
JDK5.0垃圾收集优化之--Don't Pause -
步青龙:
好书啊,顶下!!!
架构师09年书单 -
Wuaner:
这么好的文章, 没人顶?! 引用6.内存泄漏 java 不 ...
编写对GC友好,又不泄漏的代码
作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/02/18/1511545.aspx,转载请保留。
引子:
"这个项目的架构是什么?"
对方爽快的回答:"Spring+Struts+Hibernate。"
嗯,这位很可能不是架构师......
一、核心竞争力
架构设计的理论、模式与技术
架构师们从试验与挫折中获得架构设计的技能,但其中大量的原理、模式和技巧,都经历了一个重复发现的过程。
其实,各路神仙在这个领域虽则没有捣鼓出大热的畅销书来,但前篇的架构师书单,也足够为我们作一个系统的知识整理。
痛苦回首,发现自己的再发现式积累还是太慢、太片面,大多局限于GOF23、Java EE架构模式、RUP4+1视图等方面。
有序的以方法为驱动源的任务执行
匠级的架构师多有一套自己的方法论、过程论,每回设计都是熟练而有序的执行。
其中架构师的小过程可以参考书单反复试验,独家秘制。
而与开发团队配合的大过程,以RUP为基础的剪裁被描述得最为详细,可执行度最高的。
领域知识
技术人员一般抗拒学习软件开发以外的东西,但架构师却非如此不可,因为架构师的职责就是将业务需求转化为系统设计。那又如何快速成为新领域的专家呢?精通快速业务建模吗?
BTW.G9写过一篇很有意思的〈商业软件编程很无聊?〉
大型项目的经验
中国有多少架构师,不在于有多少人通过了什么考试培训,而在于中国大型项目的数量。
问:你这个项目的架构是什么?一口回答:Spring+Struts+Hibernate。这位很可能就不是架构师了,因为这仅仅是技术Stack,项目规模不大时Spring+Struts+Hibernate才会成为架构的重点。
除了亲自担任大型项目的架构师,如果了解这些项目为了满足怎样的功能与非功能需求而把架构设计成这样子也一样的。所以,尽量多读一下公司项目的设计文档,愉快的接受其他项目组架构评审会的邀请。
二、基本能力
完整的软件开发生命周期经验
这个不用说了,幸好中国的架构师什么脏活累活都做过,甚至跟着市场人员跑去做演示这些国外架构师不一定有的经验我们都有了,差别只在于一些理论知识--RUP + CMMI3 + 敏捷原则的细节掌握程度。
精通一两种主流开发语言、保持当下架构的开发体验
国内的架构师到了三十岁以后很多就往理论上跑,而国外的架构师则在往上发展的同时保持下面的编程体验,所以国内多水王,而国外则多大师。
水王的设计一般会层次过高,与实现之间有断层,与开发人员沟通困难,自己哗啦啦编个验证原型的日子更是一去不返。更痛苦的是,人过三十之后学习能力下降,手艺一旦放下了想重新上手还很难:(
但是,也不必要挽起袖子每月编码若干行,很可能你的"亲自出手"因为时间安排不来反而拖了大家的进度,但一定要保持一个体验。
宏观上的,广度优先的了解当前主流的技术与产品
架构师如果连Tuxedo与IBM MQ都分不清,一句"这里搞个异步调用的middleware,有commercial support的",同样是层次太高了。架构师对各大公司的完整产品线和著名的开源项目应该有宏观上的了解,最好在Wiki里编个索引。
但同时也要抵制成为某项技术专家如Oracle启动参数优化专家的诱惑,技术细节掌握到业务职责需要的程度就刚好了。除非如Spring Framework进一步了解能带来天大好处。
与业务域开发域人员沟通的能力及其他领导能力
IT 架构师处在客户和开发人员之间,必须能够使用各种媒体(代码、模型、文档、PowerPoint以及谈话和讲座),与技术和非技术的干系人进行沟通。另外,架构师好歹也是个半大不小的官,其他领导必要的能力就不列了。
参考了IBM DW中国上的两篇文章:
三、镜子做好了,自己先照一下
- 要把书单啃完;
- 要熟悉NGOSS、3G、IMS这些业务知识;
- 要把公司几百个项目的设计文档抽好的看一遍;
- 要跟随公司最新一波RUP+CMMI3行情;
- 要重修C++;
- 要完整了解一遍IBM、BEA们的产品线;
- 要从那些写得好的架构PPT中偷师...
评论
江南白衣所提到的项目就是我认为的复杂到了一定程度的项目。
客观来说,过分的民主还不如集中有效率。(当然,我非常赞成软件开发过程中,民主的正面作用)。我觉得Architect的职责在很多大型项目里面的作用和必要性还是很显著的。至少,不可能指望所有的工程师对项目都有全局认识,对于大项目,这个对很多普通工程师来说,要求太高了。
但书单的书,应该对战术层面的架构师也适合吧。IBM DW的文章里还有架构师组的提法,一些大的项目,由一组架构师互补长短的进行共同设计,应该也是指战术层面的架构师。
DW是默认RUP为官方方法了,所以他们提出这样的概念我一点也不奇怪。
然而古话说“名不正,言不顺”。将Architecture无限放大将压缩下层技术人员的技术决策权利,同时造成对Architecture为核心构建程序的组织以臃肿组织结构和庞杂的管理系统。在我看来Architecture更多的是被提炼出来的设计规则,而不应该去被设计。
白衣其实也不必太关注隐藏票的增减。
从文章上看,白衣很努力, 不过如果跟我们现在大多数人的理解差不多,而表述又不够清楚精炼的话,难免受到打击。 继续努力哦...
但书单的书,应该对战术层面的架构师也适合吧。IBM DW的文章里还有架构师组的提法,一些大的项目,由一组架构师互补长短的进行共同设计,应该也是指战术层面的架构师。
可以说构架师80%的成分是管理和企业组织以及市场方面的,只有20%才是技术方面的。当然这20%的重要程度是50%。然而一个小型的软件公司(基本上国内所有的软件公司都包括在内),他们没有复杂的产品线,也没有很多历史用户负担,更没有那么多的细分市场,搞一个构架是不核算的,更不用说搞一个构架师了。
NO!
这个时候你的工作最多的依然是framework层面的。Architecture最大的用途,是治理公司的经营和生成结构,和人员结构,以及销售策略,更多的是战略层面的,而不是战术层面的。
可以说构架师80%的成分是管理和企业组织以及市场方面的,只有20%才是技术方面的。当然这20%的重要程度是50%。然而一个小型的软件公司(基本上国内所有的软件公司都包括在内),他们没有复杂的产品线,也没有很多历史用户负担,更没有那么多的细分市场,搞一个构架是不核算的,更不用说搞一个构架师了。
可以说构架师80%的成分是管理和企业组织以及市场方面的,只有20%才是技术方面的。当然这20%的重要程度是50%。然而一个小型的软件公司(基本上国内所有的软件公司都包括在内),他们没有复杂的产品线,也没有很多历史用户负担,更没有那么多的细分市场,搞一个构架是不核算的,更不用说搞一个构架师了。
可惜现在这样的人不多。
发表评论
-
Software Craftsmanship可以做些什麼?
2012-01-15 22:23 1895週末都在學習"軟件匠藝",去那些出書的,開 ... -
SSO中的Pattern
2009-05-29 23:49 3051SSO方案中太多平行对称的分支选择,就像博而赫斯那小 ... -
ESB笔记2009
2009-04-05 01:08 5442又过一年了,更新一次自己的ESB笔记,内容实在,枯燥无味 ... -
要不要就一起升级JDK6.0?
2009-03-19 10:22 6909背景音乐:《要不要就一起加入G C D》,唱:陈珊妮 ... -
架构师09年书单
2009-03-18 16:22 10863年又过年,去年在 ... -
一个Java架构师的新年期望
2009-01-24 16:17 10802年末最后一天,昭事上帝 ,聿怀多福,祈望来年的Java社 ... -
一次Java垃圾收集调优实战
2008-07-09 10:39 87531 资料 JDK5.0垃圾收集 ... -
Mule ESB 2.0 苦斗两周之后的初印象
2008-07-04 10:27 6740与Mule 2.0抵死缠绵了两周,喜忧掺半。但只在2. ... -
Terracotta,POJO开发模型的最后一块拼图
2008-05-29 10:22 3014Terra ... -
08年的读书计划
2008-05-04 16:31 711008已过了一季,马上就要三十的人了,总有些脱不开烟火气 ... -
设计美好的服务器(7)--Apache CXF笔记
2007-12-29 11:52 5609OverView Apache CXF ... -
设计美好的服务器(6)--SEDA架构笔记
2007-12-21 00:33 71961.Overview SEDA Ad ... -
设计美好的服务器(5)--Shoal集群框架
2007-12-20 10:06 4721Overview Shoal Sho ... -
数据服务笔记
2007-10-26 09:07 52241.Overview 数据 ... -
ESB架构笔记
2007-10-09 23:42 19249ESB是什么 ESB综述1:定 ... -
Prototype.js--Javascript编写者的小军刀
2006-08-08 08:37 2251Overview Prototype.js官方文章 ... -
轻的,谁都会写的Service方案--REST与JSON
2007-06-15 11:26 120951.REST 1.1 缘起 N年前,一说到跨平台的服务 ... -
架构师书单
2007-02-10 14:35 169472月份买了过千元的书后,重列了一个2.0 版的架构师书单,请 ... -
Pragmatic Struts
2006-11-17 11:59 18990本文来自SpringSide WIki,请留意Wiki上的最 ...
相关推荐
本文将为你推荐一系列适合Java程序员到架构师进阶的自学书籍,旨在帮助你提升专业技能,逐步成长为一名出色的Java架构师。 首先,对于初学者,选择合适的入门书籍至关重要。《Java编程思想》是一本经典的Java教程,...
"web工程师养成"这一主题涵盖了从初学者到资深架构师的成长过程,旨在帮助有志于在Web领域发展的技术人员建立扎实的基础,逐步提升自己的技能和视野。本篇文章将深入探讨Web工程师的成长路径、所需技能以及如何通过...
2. **Think In Java.chm**:这是经典的《深入思考Java》电子版,作者Bruce Eckel深入浅出地讲解了Java语言的核心概念,包括面向对象编程、集合框架、多线程、异常处理等内容,是Java初学者必读的书籍之一。...
* Testing工程师、测试负责人、业务专家、项目经理、测试领域专家、测试架构师、测试开发工程师等职业发展路径 六、职业发展方法 * Sustainable pace:有限目标,循序渐进 * On Job Training:带着思考去工作,...
另外,"Agile Java"中文版虽然被作者定位为入门书籍,但其以单元测试和TDD(测试驱动开发)为核心的教学方式,可以帮助读者在学习Java基础知识的同时,养成敏捷开发和高质量编码的习惯。 【Java编程进阶】: 在掌握...
以下是一份根据学习进度推荐的书籍列表,旨在帮助初学者逐步提升编程能力直至成为专业架构师。 1. **Java编程入门** - **《Java编程思想》**:对于初学者而言,此书能够深入浅出地解释Java的基本概念和面向对象...
综上所述,校企合作开发工学结合核心课程标准是一个系统工程,需要教育与产业界紧密合作,共同设计课程内容、共同制订课程目标、共同实施教学活动,最终实现培养既有理论知识又有实践能力的技术技能型人才。
2. **《Expert One-on-One J2EE Development without EJB》**:由gigix组织翻译,这本书探讨了不依赖EJB的J2EE开发,对于想要成为Java架构师的人来说,是必读的参考书。 3. **《企业应用架构模式》**:Martin ...
而架构师则需设计容错能力强的架构,以应对可能出现的问题。 4. **数据安全与零丢失**:尽管领导和厂商可能会追求数据零丢失,但DBA和架构师需要平衡成本和收益。大多数系统可以通过数据备份和恢复策略来处理数据...
9. 业务沉淀与专家养成:通过中台战略,企业可以沉淀业务知识,培养专家,提高整体运营效率,就像我们在学习过程中不断积累知识点,形成解决问题的能力。 中台战略的本质是将共性的服务和能力抽象出来,为前端的...
3. **提升管理能力**:通过职业素质培训、管理类培训等方式,提升各级管理人员的职业素养、管理意识和管理技能,搭建公司的人才梯队,逐步培养公司急需的各层级管理人才。 4. **建立学习型组织**:利用两年的时间,...
总的来说,《网页设计与制作》课程是一门注重实践操作和技术应用的课程,旨在通过系统学习和实践,培养出具有专业技能和创新能力的网页设计师。学生不仅需要掌握网页设计的基本技术,还要养成良好的学习习惯和职业...
标题与描述概述的知识点主要围绕着程序员应具备的素质和能力展开,强调了作为一个真正的程序员,不仅需要掌握编程技能,更重要的是要有团队精神、协作能力、文档习惯、规范化的编码风格、需求理解能力、模块化思维...
8. 总结与创新:养成总结工作经验的习惯,将成功的解决方案整理成个人源码库,逐渐构建自己的系统架构或框架,以便重复利用和改进。 以上经验不仅适用于软件开发新人,也对有经验的开发者有启发作用,通过不断学习...
游戏可能包含了数码宝贝的收集、养成、进化等核心玩法,以及团队战斗、竞技场等多种在线互动元素。 服务端源码的获取意味着玩家或开发者有机会搭建自己的私人服务器,实现单机或局域网内的游戏体验。不过,值得注意...
因此,优秀的硬件工程师实际上扮演着项目经理的角色,需要从外部交流中获取对自己设计的需求,并具备良好的团队协作能力、透明的项目沟通机制、精细的研发计划及充足的物料和人力资源支持。只有这样,才能确保项目的...
在VB毕业设计中,通常会涉及以下几个核心知识点: 1. **VB基本语法与控件**:VB使用可视化界面设计工具,通过拖放控件(如按钮、文本框、列表框等)并编写事件处理代码来构建程序。理解VB的基本语法,如变量声明、...
最后,商超龙头公司,如永辉超市、家家悦等,这些公司受益于必选消费需求的稳定性,并且能通过强大的经营能力在行业集中度提升的过程中获得优势。 报告还对行业数据进行了综述,包括2020年1月行业指数与沪深300指数...
在当今社会,随着科技的快速发展,健康管理已经不再局限于健身房和营养师的建议,而是越来越多地融入到我们的日常生活中。"健康生活"是一款专为Android平台设计的应用程式,它利用Java语言进行开发,旨在帮助用户...