ArchSummit全球架构师峰会是InfoQ中国团队推出的面向高端技术管理者、架构师的技术大会,参会者中超过50%拥有8年以上的工作经验。
那先来说说什么是架构师?是不是混了8年就能成为架构师?
曾经有人从一些社群成员的会话记录来分析,得到这样的结果:0-1年的程序员什么都不知道,他们正在熟悉职场和他们要实现的功能;1-2年的程序员可以独立实现产品某些功能;2-3年的程序员可以独立完成一个模块;3-5年的程序员可以带人完成一个项目;5-10年的程序员关心管理、资源协调、成本控制、项目管控、平衡利益。
举一个架构师JD为例,如下:
1.精通分布式系统的设计及应用;精通多线程及高性能的设计与编码;熟悉unix/linux操作系统的使用和某种脚本语言编程(如Shell编程等)和大型数据库;
2.3年以上大型互联网电子商务系统或者其他大型企业应用系统开发相关经验精通Java EE技术和框架(包括Java语言基础/多线程/Spring/Remoting/iBatis/Cache/Messaging/Workflow等);
3.熟悉DB2、My SOL、Oracle等主流数据库系统的设计原理、相关技术及工具;
4.精通面向对象分析设计方法,逻辑能力佳,具有丰富的OOA、OOD、OOP以及UML建模经验,熟悉软件工程、编程规范、有过程控制意识;
5.对技术发展趋势有非常高的敏感性和预测能力,并能制定技术创新方向,专注于技术,精益求精;
6.符合如下条件者优先:具有交易系统或风控系统开发经验
然后我们以这个JD为例,猜测一下要成长为架构师,路径是什么?
首先你要是一个高级java工程师,熟练使用各种框架,并知道它们实现的原理,了解他们的使用场景和性能问题。不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。
熟练使用各种数据结构和算法,数组、哈希、链表、排序树...,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题;有时间再补充。 熟练使用linux操作系统,熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头;session和cookie的生命周期以及它们之间的关联。不然这个《手机淘宝Hybrid APP框架的架构演进》的演讲该完全不知所以然了吧?
系统集群、负载均衡、反向代理、动静分离,网站静态化。分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。 于是要开始向百度、腾讯的架构师探讨关于《大规模集群上的多业务线环境部署》 、《万级逻辑服务器的高效技术运营》。
分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。 工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。再往高提升就可以关心百度《如何实现超大规模分布式安全系统》。
数据库的设计能力,mysql必备,最基础的数据库工具,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb,还有队列中间件。 这些是常用的技术,还有很多东西要了解都要靠自学,比如,《大数据里的Scala》,《深度解析云数据库 TiDB》《SQL-on-Hadoop方案在FreeWheel的实践》。
最后,必须要提的是技术是为业务服务的,技术提升还可以推进业务的发展。架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,你听酒仙网的架构师谈谈垂直电商,海南易建科技的架构师谈谈传统金融领域的解决方案就能知道他们对业务的理解有多深刻(见:《大数据驱动下的航空电商应用实践》《垂直电商服务化之路》)。Uber的袁泳从在Netflix构建云平台的时候就在研究分布式跟踪系统,现在加入Uber构建实时物流平台为司机分配任务,他对物流平台的业务实现应该有很深的研究吧(Uber的流处理系统及实践)。就如果一个几百名用户的系统,访问量不大,数据量小,就上集群、上分布式存储、上高端服务器,为了架构而架构,或者一开始把系统架在node上,这都是最不切实际的。架构师的作用就是第一满足业务需求,第二控制硬件网络成本和技术维护成本。关于成本控制可看研发体系构建这类文章,如《如何通过高效能来克服高成本》,《快速发展转型期的研发体系构建》。
你看本软文最开头的架构师JD第5点就提到了架构师要预见技术发展趋势,架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,Docker热吧,要不要了解下《容器时代的云计算》?并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。
刚入职场的程序员,如果要缩短这样的程序员职业发展时间,还要好好喝下这些鸡汤,比如《为什么别人一年能有你三年工作经验》、《比你厉害的人都在奔跑,你活着还有什么意义》这些。必要的成长时间还是需要的,要花时间coding,要花时间了解并参与业务领域的发展,踏踏实实,勿在浮沙筑高台。用时间用经验用见识见危于无形,见祸于未萌,建高楼于平地,这也许就是对架构师的一部分要求。
最后的最后,老师说要好好加reference的孩子才是好公民!
本文关于Java架构师的成长例子引用来自知乎用户@哈哈的回答。
链接:http://www.zhihu.com/question/29031276/answer/54631312
最后的最后的最后,ArchSummit秉承“实践第一、案例为主”的原则,展示新技术在行业应用中的最新实践,技术在企业转型中的加速作用,帮助企业技术管理者、CTO、架构师做好技术选型、技术团队组建与管理,并确立技术对于产品和业务的关键作用。欢迎关注12月18-19日在北京国际会议中心举办的ArchSummit架构师峰会。
网友评论