大家好,今天小编关注到一个比较有意思的话题,就是关于java语言目的的问题,于是小编就整理了1个相关介绍Java语言目的的解答,让我们一起看看吧。
J***a程序员应当如何向架构师的目标迈进?
感谢邀请~
其实在国内软件发展并不像美国那样长久地发展,而是在互联网时代集中爆发,架构师已经和初始的含义有所变化,目前,在国内架构师 = 真正含义上的 架构师+首席工程师。
狭义的,真正的架构师是负责处理高层的,所谓架构,高到大部分同学无法理解,比如我司全球有4万多从业人员,涉及12个大的门类,横跨从fintech到***网站的很多领域,在这样的公司负责总架构的CTO office的高级架构师他们,事实上是连特定的某个系统都不太深入去看了,他们只负责宏观的技术走向,这种宏观,既不是什么语言,什么框架,也是不是哪个类库哪个包,而其下,每个产品门类都有自己的主任架构师,这些中级架构师,包括我在内,主要基于高级架构师的指导方针,设计产品门类中所实际出售的产品群。
而首席工程师,也有叫做application architect的,主要是负责一个产品当中的技术难点攻关,这是大部分同学所能理解的“技术大牛”,他们是精通某些语言或者框架技术的技术者,而架构师,比如我,并不如首席工程师那么精通各种技术的实际实现。
回过来,讲国内,毕竟大部分人还是在国内,在硅谷,你除了几个顶级大佬,基本上没什么机会会升到架构。国内来说,我们把目前的职称泡沫去掉,大约在国内通行的P7 level左右开始可以算架构师了,其实主要还是做的首席工程师的工作,也就是解决疑难杂症,间或做些小的组件系统的设计开发优化工作。
可以说,真正意义上的架构师,大约是三分之一实际工程能力,三分之二规划能力,而国内意义上的架构师,正好相反,三分之二实际工程能力,三分之一规划能力。
首先说说我对架构师的理解,架构师与普通程序员的主要有两方面:
一方面是其所具备的技术能力可以解决更多的、更复杂、更困难的事情,如果普通程序员能解决架构师才可以解决的问题,那么普通程序员不也就成了架构师了吗;
另一方面是在心态和责任上,架构师由于所处职级高一些,责任也就大一些,遇见问题往往会迎难而上,更具有owner意识与责任意识,因为往往他们没有人可依赖,反之一般程序员尤其是初级程序员,遇见问题往往会求助于比较厉害的程序员。
下面重点说说j***a程序员如何向架构师迈进:
1、扎实的基本功,从基础的数据结构到算法,从基本语法到语言特性都应了熟于心,如数家珍般的一一道出。这个一般通过多看一些基础书籍就可以学习到。
2、练就基本功之后应该多注重实践,对于所做的项目多思考,多总结,多优化,让项目更加健壮、可靠;性能更好,***利用率更高。并且要善于总结。
3、承担更多的责任,多做事接触的东西才能更多、更广,尤其是有参与大型项目机会时,一定多多参与,一般来讲针对一类业务,参与过几个大型项目那么在这个业务领域内便能具备一定的架构涉及能力,前提是做好第二点,对项目做到全面了解。
4、多总结,多学习新技术才能跟得上潮流,才能成为称为时下流行的架构师,过时的架构师往往没有用武之地,举一个不恰当的例子,对于曾经在4M内存时代的架构师,如果不跟进新技术,现在未必有用武之地。
我来讲一个身边的朋友的工作经历,希望能对各位一点启发。
这个朋友毕业7年,目前是一家小公司的架构师,可以说是在架构师的路上了吧。
这个阶段就是练技术。
只要是工作中用到的技术,遇到的难题都是要吃透的。
经过这几年,应该达到高级工程师的水平。精通j***a,这里可不是说简历上写的那种精通。应该对JVM调优,多线程编程,常用设计模式,spring框架信手拈来,
这个阶段最开心的事应该是遇到困难,解决困难。只有解决了难题,才能真正获得成长。
还有一点是看源码。使用api,大家都会用,这个区分不出水平。既然题主是希望成为架构师的,那么源码一定要看。分析清楚源码的架构,自己debug一下。
要进阶为架构师,首先得具备高级j***a工程师的能力。比如对j***a语言非常熟悉,精通面向对象和常用设计模式,深入jvm调优和垃圾回收机制等。其他诸如操作系统、数据库、缓存、消息、框架等就不用说了。
除了以上,还需要以下几项能力。这也是区别于普通、高级、资深工程师的能力:
首先,架构师面向的是业务,是熟悉业务的能力。所以架构师一定要非常熟悉系统要解决的业务模式和业务流程问题,这样才能描绘系统的基本结构来。也就是你要弄清楚做这个系统干什么,为什么要这么做,这么做带来的收益和代价是什么。这就需要架构师深入理解业务模式,跟运营、产品、市场以及领导等深入沟通,了解系统等本质意义。
其次,架构师要把业务问题用系统的方式解决,需要画图并且把架构表达出来。画图是什么意思呢?就是抽象与归纳总结能力。把一个复杂的业务场景,通过归类、分层、模块化、删减浓缩为一个一个普遍意义的抽象问题。比如某大学生饿了要去食堂吃饭这个具体问题,要抽象为年轻大学生如何解决饥饿获得满足的通用问题。画图是为了利于表达,只有思想在自己的脑海还不行,别人无法理解,还需要图表、[_a***_]以及不断沟通来有效传递给他人。所以这个能力是问题的系统化归纳和表达能力。
再次,架构师需要横向的广阔知识。架构师不一定是系统具体的编码者和实现者,而是设计者。这就需要考虑很多实现人员不太关心的问题。比如网络部署、数据备份、机器运维、广告接入,以及与其他系统耦合和通信,如何集成测试,如何灾备,如何重构,如何扩展、如何重写等等。这要求架构师博学多识,还需要与时俱进,更需要触类旁通,用最新的也是最合适的技术方案来实现业务架构。
到此,以上就是小编对于j***a语言目的的问题就介绍到这了,希望介绍关于j***a语言目的的1点解答对大家有用。