一名十余年资深Java架构师的经验之谈

杜弥 · · 1236 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

所谓架构师,思考的是全局的东西,是如何组织你的系统,以达到业务要求,性能要求,具备可扩展性(scalability),可拓展性(extendability),前后兼容性等。可能涉及到的东西包括了从硬件到软件的方方面面,实在是一言难尽。

要想往架构师的方向发展首先要知道架构师是什么?架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。

天马行空

架构师在软件开发的整个过程中起着很重要的作用。

说的详细一些,架构师就是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。

架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。在成为Java架构师之前,应当先成为Java工程师。熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池……Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。

如果你立志做架构,首先打好基础,从最底层开始。然后发展到各种技术和语言,什么都要懂两点,要全面且不肤浅。为什么不是懂一点?你要看得透彻,必须尽量深入一些。别人懂一点,你要做架构师,必须再多懂一点。比如你发现golang很流行,别人可能写一个helloworld就说自己玩过golang,但你至少要尝试写一个完整的应用。不肯下苦功,如何高人一头?

另外你要非常深入地了解至少一门语言,如果你的目标是java,就学到极致,作为敲门砖,先吃饱了才能谈理想。而Java学到极致势必涉及到设计模式,算法和数据结构,多线程,文件及网络IO,数据库及ORM,不一而足。这些概念放之一切语言都适用。先精一门,为全面且不肤浅打基础。

另外就是向有经验的架构师学习,和小伙伴们讨论辩论争论。

其实最重要的能力就是不断学习。在思考新的技术是否能更好地解决你们遇到的问题之前,你首先得知道并了解新的技术。

架构师都是从码农过来的,媳妇熬成婆。

千万不要成为不写代码的架构师,有些公司专门产不写技术的架构师。

所谓架构师,只是功底深厚的程序员而已。个人认为应该扎扎实实学习基础知识,学习各种规范,架构,需要广泛的知识面,懂的东西越多视野越开阔,设计的东西当然会越好越全面。

成为架构师需要时间的积累的,不但要知其然还要知其所以然。平时的一点一滴你感觉不到特别用处,但某天你会发现所有东西都没有白学的。

努力成为架构师吧!

Java架构师要求 专业素质要求:

1、理解架构师的职责和架构设计的目标、原则及取舍;

2、精通架构模式,Transaction、Security、Persistence等机制及实现,IOC、AOP、SOA等理念及实现;

3、精通Transaction、Security、Persistence等机制及实现,IOC、AOP、SOA等理念及实现;

4、精通面向对象技术、设计模式、OOAD、UML等技术;

5、精通各种主流应用架构和平台,熟悉工作流引擎、规则引擎等中间件等;

6、深入理解spring、iBATIS、hibernate、Struts、Webwork、JSF和Tapestry等框架的设计思想和实现方式,精通J2EE、XML、WebService、分布式、多线程等高性能架构相关开发技术;

7、精通主要应用服务器(Weblogic/WebSphere/Tomcat等)的配置和使用,熟悉Linux操作系统;

8、了解Web应用的性能瓶颈和调优方式;

9、熟练掌握Oracle/DB2/SQLServer数据库,至少熟悉其中一种数据库优化与数据挖掘技术;

10、良好的沟通协调能力,团队合作精神和执行力,思路开阔,积极上进,不断学习;

11、有银行业呼叫中心产品研发经验者优先;

12、有J2EE大型项目架构设计经验者优先;

13、有J2EE架构产品研发经验者优先;

14、通过SCEA认证者优先;

职位描述:

1、负责公司软件产品的技术选型、架构搭建;

2、负责设计和搭建软件开发项目系统架构(平台、数据库、接口和应用架构等),解决开发中各种系统架构问题;

3、负责软件系统平台核心功能模块设计、核心代码开发;

4、负责技术解决方案的编制工作,并能够将解决方案清晰的传达给客户和项目组成员;

5. 负责组织技术架构、解决方案的评审;

6. 主导项目关键技术问题的攻关,协助项目管理对技术问题进行跟;

7、对开发团队进行技术指导和培训;

下面是我总结多年经验开发的架构师知识体系:

开源框架源码,源码是你进阶必不可少的一步。

微服务架构专题

架构筑基专题

设计模式

工程化

B2商城项目实战

有了思维导图,有没免费的Java架构师进阶资料领取?

加入Java进阶架构学习交流:171662117:可以领取免费的架构师学习资料。

了解最新的学习知识点

了解最新的BAT招聘资讯

获取更多的面试资料


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:杜弥

查看原文:一名十余年资深Java架构师的经验之谈

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1236 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传