济南IT培训的老师说啊,不是每一个程序员都能成为优秀的架构师,但一个架构师必须是一个出色的程序员.架构师是一个比较"虚"的岗位,所用问题都需要"落地"过程中,这就要求架构师不能想当然,要不断的去实践才行,实践中难免对遇到一些问题,这就需要架构师具备解决问题的技能,那么,一个架构师需要具备哪些知识技能才才是优秀的?
一个架构师不但要会后端编程,也要会前端编程,能根据产品所需的关键技术系统的解决问题,还能画出漂亮的UML/原型,这就要求架构师在通往大神的路上不但要懂需求,还要懂设计、代码、部署、架构、运维、服务器等等知识,这就需要架构师具备7大知识技能才可以.
1、数据层:重点在于集群方案的选择,比如MySQL集群,集群方案很多,需要选择符合业务的方案,比如多主,主备,读写分离等等,是否还需要做高可用,是用lvs,还是zookeeper,是否需要例如mycat类中间件来管理数据库或者做数据分片等等.
2、应用层:框架太多,ssh,ssm,jfinal等等,选择适合项目团队的框架;UI界面,h5很美观,但对于浏览器的兼容就把开发人员搞哭了,可以选择成熟的ext或者easyui,或者最近很流行的node.js.
3、服务层:时髦一点,选择dubbo,微服务让团队开发耦合度没有那么高,各自关心各自的模块,都以服务方式发布出去.传统一点用springmvc+restful,在我看来,对于并发不高的系统,没有必要用dubbo.?缓存的选择,涉及到文件缓存、数据库缓存,可以用memcached、ehcache、redis.
4、网络层:多数开发人员都不用涉及,能了解下f5之类的就好.
5、安全:大多数安全在网络层就解决了,但应用的安全不容忽视,比如需要考虑SQL注入,授权认证,这些目前框架都能解决,重点的安全问题来自框架本身,大多数应用选择框架都是开源的,如果团队没有能力修复漏洞只能等更新.
6、部署:是否需要用docker来部署,开源docker容器让部署轻量化,很容易就可以扩展一个节点,对于高并发、伸缩性要求高的场景可以使用.docker的出现,完全可以实现一键部署.是否需要负载均衡,可以选择硬负载(就是前面说的f5),也可以用软负载(nginx).软负载的方案简单一点可以是apache+tomcat,需要考虑session复制,复杂一点选择lvs+haproxy.?打包发布,熟练使用maven,能建立自己的maven私服,能指导项目成员使用maven打包发布.
7、其它方面:测试(自动化测试),版本管理(git or svn),大数据(奇热无比),人工智能(高大上)等等.
而这些知识点的提炼是促进你技能提升最好的依据,也需要架构师从程序员成长起来,也要善于沟通,只有具备出色的交流能力,才能推动大家朝着某个方向使劲,虽然并非每一个程序员都希望能成为一个架构师,但潜意识里他们是尊敬架构师的--而一个优秀的架构师往往在举手投足中显示出一个编程大师的风范.
可能会有人问,成为一个优秀的架构师,是否有快速的成长捷径呢?普通程序员如何向架构师靠拢呢?
不可否认的回答,是存在捷径的,但要看机遇.
对国内而言,如果一个人一直从事M(RMB)级以下项目,那么做10年或者做100个项目还是不能很快成长,如果他从事100M(RMB)、 B(RMB)、10B(RMB)项目,并且在其中负责全局性的技术工作,那么一两个项目就可以快速成长,可能4、5年就能成为不错的架构设计人员(不过还要看她/他交付成果的质量).
普通程序员成为A最重要的是他自己有信念和行动,其他的都是其次的.
哪怕是Assistant Programmer,只要有信念和行动,应该可以承担各种压力和困难,逐步走上Programmer、S. Programmer、Developer、S. Developer、Designer、S. Desinger、A、S. A、D. A、C. A.
总的来说,要成为一个软件架构师往往需要具备10年以上的软件开发经验.而架构师的工作与实际项目经验是密不可分的,尤其是在互联网产品愈发重要的当下,一个软件架构师往往需要掌握多项技能.程序员如果想要修炼为一个架构师,究竟需要培养自己的哪些技能?
更多济南IT培训相关咨询,请扫描下方二维码