Java程序员应当如何向架构师的目标迈进?

网友解答: 我来讲一个身边的朋友的工作经历,希望能对各位一点启发。这个朋友毕业7年,目前是一家小公司的架构师,可以说是在架构师的路上了吧。1到3年--练技术这个阶段就是练技术。只要是工作

网友解答:

我来讲一个身边的朋友的工作经历,希望能对各位一点启发。

这个朋友毕业7年,目前是一家小公司的架构师,可以说是在架构师的路上了吧。

1到3年--练技术

这个阶段就是练技术。

只要是工作中用到的技术,遇到的难题都是要吃透的。

经过这几年,应该达到高级工程师的水平。精通java,这里可不是说简历上写的那种精通。应该对JVM调优,多线程编程,常用设计模式,spring框架信手拈来,

对缓存,nosql等使用熟练。

这个阶段最开心的事应该是遇到困难,解决困难。只有解决了难题,才能真正获得成长。

还有一点是看源码。使用api,大家都会用,这个区分不出水平。既然题主是希望成为架构师的,那么源码一定要看。分析清楚源码的架构,自己debug一下。

3到6年--大平台

经过几年的技术积累后,这个朋友选择跳槽去了阿里。

想成为架构师的话,去互联网大厂工作一段时间还是很有好处的。

1,大公司的技术架构基本已经成型,有非常多的成功经验可以拿来主义

2,有很多问题,在小公司是遇不到的。只有业务量达到一定程度,才可能遇到架构或者其他问题

3,镀金。这也是很现实的一个考量。有BAT工作经验是为你的能力提供一个背书。

6年之后--创业公司架构师

在阿里工作了几年后,这位朋友选择了一家小公司做了架构师的岗位。

为什么这么选择呢?

1,阿里牛人太多,自己没机会出头。只能开发业务代码,没机会深研技术。

这其实是个鸡头凤尾的选择了,见仁见智吧,不抬杠。

2,去创业公司,很多技术方案需要自己研究。很多技术方案,看起来都懂,但是不自己切身走过这段路,真正的核心技术还是掌握不了。

3,大公司太忙,没时间研究技术。希望多参与开源社区

技术之外

架构师其实已经不单单是个技术岗位了。更多的需要和业务打交道,根据业务指定合适的技术方案。另外架构师是一个领导岗位,是需要带领程序员一起往前冲的。所以

1,人际沟通能力。可以做一个闷头干活的程序员,但是没有闷头编码的架构师

2,总结展示能力。架构师很多时候要对老板或者业务领导讲解技术,所以需要很好的总结和演讲能力,让不懂技术的人信赖我们技术团队

3,责任心和不屈不挠的毅力。架构师是团队里技术难题最后依靠的人。普通开发人员可以指望你,但是架构师没有人可以依靠了。遇到问题,百折不挠,迎难而上,是一个架构师最基础的觉悟。

网友解答:

要进阶为架构师,首先得具备高级java工程师的能力。比如对java语言非常熟悉,精通面向对象和常用设计模式,深入jvm调优和垃圾回收机制等。其他诸如操作系统、数据库、缓存、消息、框架等就不用说了。

除了以上,还需要以下几项能力。这也是区别于普通、高级、资深工程师的能力:

首先,架构师面向的是业务,是熟悉业务的能力。所以架构师一定要非常熟悉系统要解决的业务模式和业务流程问题,这样才能描绘系统的基本结构来。也就是你要弄清楚做这个系统干什么,为什么要这么做,这么做带来的收益和代价是什么。这就需要架构师深入理解业务模式,跟运营、产品、市场以及领导等深入沟通,了解系统等本质意义。

其次,架构师要把业务问题用系统的方式解决,需要画图并且把架构表达出来。画图是什么意思呢?就是抽象与归纳总结能力。把一个复杂的业务场景,通过归类、分层、模块化、删减浓缩为一个一个普遍意义的抽象问题。比如某大学生饿了要去食堂吃饭这个具体问题,要抽象为年轻大学生如何解决饥饿获得满足的通用问题。画图是为了利于表达,只有思想在自己的脑海还不行,别人无法理解,还需要图表、文档以及不断沟通来有效传递给他人。所以这个能力是问题的系统化归纳和表达能力。

再次,架构师需要横向的广阔知识。架构师不一定是系统具体的编码者和实现者,而是设计者。这就需要考虑很多实现人员不太关心的问题。比如网络部署、数据备份、机器运维、广告接入,以及与其他系统耦合和通信,如何集成测试,如何灾备,如何重构,如何扩展、如何重写等等。这要求架构师博学多识,还需要与时俱进,更需要触类旁通,用最新的也是最合适的技术方案来实现业务架构。

最后,架构师必须具有超强的责任心和毅力。系统的设计非常繁琐和无序,如果前期需求不是很明朗或者业务不清晰会导致方案反复修改,而架构一旦确定再更改的风险极大,所以前期充足的准备就非常重要了。这个就需要超强的责任心,一定要仔细审度,反复验证。毅力是因为架构师要贯穿项目始终,无论项目早起还是攻坚还是收尾都需要参与,无论哪个环节都需要了解现状。我们知道项目后期大家都会疲惫,这样对于架构师来说毅力很重要,绝不能放弃,需要与技术经理或项目经理一道为整个项目(系统)负责。

说了这么多,其实也很简单。除了基本编程能力,有好的解决问题的能力即可。不用多说,而是清晰表达,把图和方案画了就行。

标签: