做了4年的java程序员,一直考虑自己以后的发展方向。自己是一个不适合走管理路线的人,所以考虑继续在技术方面深入下去。
相信好多程序员都和我有相同的感觉,做了好多年代码民工,感觉自己每天都在重复着相同的事情。
Copy代码复制粘贴,感觉过了这么久自己的进度很小。
辞去了之前的工作,打算静下心来好好考虑下自己以后的道路。打算在这段时间,学习下如何成为一个好的架构师。
第一节:
首先了解了下什么是架构师,架构师都有那些?
架构师实际上就是软件的总体设计师。首席设计师就是总设计师,打个通俗的比方:***是中国改革开放的总设计师,我们用现在的说法可以讲,***是中国改革开放的首席架构师。架构师的形成一定是在实践中积累起来的,而并非上了几次培训班,读了几本书就可以成功的,架构师是在工程实践中培养出来的。
软件架构师
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员
信息架构师
信息架构师即Information Architecture,是一个常常被误解的职称。他们是设计者?开发者?管理者?还是以上全部?我们在本文将探讨信息架构师是做什么,为什么它和可用性相关,以及在信息架构中需要用到的工具/软件。我们也会顺便分享一些对于信息架构的初学者来说有用的tweeters(twitter用户)、书籍和资源。即使您已经对这些内容非常熟悉了,您也可能从中发现一些可能错过的内容。
网站架构师
网站架构师是网站系统、功能、模块、流程的设计师,架构师,好比是高楼大厦的设计人员,通常一座大厦在建之前,都先由设计师将蓝图描绘出来,包括其形状、结构、尺寸、材料等等,然后建筑工程师带领工人们按照蓝图将大厦一层一层地建起来。
第二节:
成为一个架构师需要掌握的知识?
Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求。 总结起来大概有下面几点技能要求:
一、 架构师有优秀的编码能力,解决开发人员无法解决的难题。
二、 架构师对系统的大数据容量高性能高并发高容错的网站有架构设计和开发经验。
三、 架构师对操作系统、数据库、服务器各种软件使用的配置比较了解,比如Linux、Web负载均衡、反向代理、数据库集群、容灾等比较了解。
四、 架构师对软件开发过程有清晰明确的认识,也就是对软件工程有有明确的认识,并能把需求进行分析、建模。
五、 架构师学习能力很强、接触知识面要很宽广、喜欢关注和接触各种新的技术。
六、 架构师沟通能力很强。
七、 架构师对从事的行业的业务要有深刻的了解。
换个角度看看这些要求把:
第一条要求你是个优秀的程序员。
第二、第三条要求你要懂DBA,运维都需要懂的知识。
第四条要求你是个项目经理。
第五条要求你是个技术全才,不仅学的要深,还要学的广。
第六条、第七条要求你熟悉公司业务人员、产品人员要懂的知识。
这个要求太高了,架构师就相当于战争中的司令员的位置,是整个团队的核心和灵魂,这种技术要求甚至技术总监和CEO都不具备,唯一要求少点的就是管理能力,如果再具备管理能力,那就甚至能超过技术总监和CTO了,而中国不乏管理人才,怪不得有人总结说,中国没有合格的架构师呢,也难怪,大概算一算,这种要求相当于一个人学6个人的知识,并且都能达到专业的水平,这就意味着你的领悟能力和学习能力,要高于常人几倍!所以说,成为架构师确实需要天分啊。
再具体到.NET架构师,我归纳一下要学的知识:
成为优秀程序员,需要学好的知识:
1、 面向对象编程、UML画图、设计模式、代码重构
2、 常用ORM工具
3、 MVC,WCF,XMl, JQuery ,SQL以及性能优化
4、 FrameWork一些深入的知识
5、 高性能代码,比如静态化,MemCached等手段。
6、 最好也了解一些其他语言,比如Java,PHP等。
成为DBA,需要学好的知识:
1、 常用数据库,MSSQL、MySQL、Oracle,性能调优熟练,备份、负载均衡、集群、容灾熟练
2、 大数据量处理熟练
3、 各种数据库监控软件
成为运维,需要学好的知识:
1、 各种Web负载均衡的硬件,比如F5,软件,比如Nginx等原理和配置
2、 反向代理加速,比如SquID等
3、 操作系统,Linux是必须懂的,各种好的工具都在Linux下。
4、 各种性能监控软件。
成为产品和业务以及项目经理,需要学好的知识:
1、 沟通和理解能力。
2、 该行业和本公司的业务逻辑。
3、 软件工程的知识。
4、 质量控制、进度控制、人员组织等。
看来想成为合格的Web架构师,需要学太多东西了,只有一条路可走--持续不断的修炼和学习。
另外学习中,采用先深后广的策略是明智的选择,一门学深了,其他知识可能都会融会贯通,那样比较的学起来会很快。否则可能陷入知识的海洋里,没准淹死了。
总体的看来,Web架构,分为服务器架构和程序架构两个方面的架构,一般的Web架构师还是偏向程序架构,因此学好语言,程序架构是基础,学好了这些,做一个合格的架构师没大问题,毕竟DBA,运维的东西在公司都有专业的人在干。
所以深度还是要深入学习编程的知识、软件架构知识,有了这个基础后,Web架构师应该在大数据量、高并发、高负载、以及高容错方向再有所了解和涉及,再返过来促进我们对软件架构的思考,这种深-广-深-广的模式是我们学习的方法,只要坚持不懈努力几年,做真正合格的Web架构师是没大问题的。