从初级“码农”到高级“架构”,个人成长之路(Java向)

从初级“码农”到高级“架构”,个人成长之路(Java向)

我是如何走上技术这条路的?

2008 年大学毕业,我离开了母校武汉理工大学,在院长老师的推荐下,我来到了上海,这个对于我来讲很是陌生的地方。我有幸加入了一家创业公司,刚开始工做的时候我学习了什么是云计算?什么是 SaaS、PaaS、IaaS?咱们花了三年时间开发了一款PaaS 平台,让用户能够在该平台上量身定制本身的软件,最终为客户提供基于 SaaS 的产品。确实很骄傲,那时咱们已经在作云了,只是没想到后来云会在中国获得这么好的市场。前端

在 2008 年,我为公司拿回了“第一桶金”,这也是我从程序员转向项目经理的里程碑。当时我带领团队远赴深圳,为国信证券公司开发经纪人管理系统,这个项目对于我我的而言倒是一笔至高无上的财富,我开始学习如何与人打交道,如何作需求分析,如何将需求转变为技术,如何带领团队小伙伴一块儿工做。学到了太多太多,但我依然选择在我工做第四个年头里离开了公司,我刚加入的时候,公司只有 5 我的(包括老板和前台),当我离开的时候,公司已经有 200 人左右了。感谢老板!我在他身上学到了不少,他的思想和态度直到今天都还在影响着我。java

个人第二份工做仍是选择了我最熟悉的证券金融行业,一样也是一家创业型公司,在这家公司里我担任了技术经理,管理了整个技术团队,从项目的售前到售后,我都亲自带领团队来完成。虽然在这家公司我只作了两年,但在这短短的时间里,我学会了如何提升开发效率、如何培养技术团队、如何选拔技术人才、如何创建企业文化。但最后我发现了一个问题,越是想作好,越是很难作好,为了作成一件事情须要作不少的尝试,作事情缺少正确并有效的方法。程序员

一个架构的成长

合格的工程师须要 1~3 年时间,其典型特征是“在别人的指导下完成开发”。工程师阶段是最原始的“基础技能积累阶段”,主要积累基础知识,包括编程语言、编程工具、各种系统的基本使用。web

高级工程师须要 2~5 年时间,其典型特征是“独立完成开发”,包括需求分析、方案设计、编码实现,其中需求分析和方案设计已经包含了“判断”和“选择”,只是范围相对来讲小一些,更可能是在已有架构下进行设计。spring

从普通工程师成长为高级工程师,主要须要“积累方案设计经验”,简单来讲就是业务当前用到的相关技术的设计经验。包括:表设计经验、缓存设计经验、业务流程设计经验、接口设计经验等。当接到一个业务需求的时候,高级工程师可以组合这些设计经验,最终完成业务需求。编程

技术专家须要 4~8 年时间,其典型的特征是“某个领域的专家”,通俗地讲,只要是这个领域的问题,技术专家均可以解决。设计模式

从高级工程师成长为技术专家,主要须要“拓展技术宽度”,由于一个“领域”必然会涉及众多的技术面。要成为一个 Java 开发专家,须要掌握 Java 多线程、JDBC、Java 虚拟机、面向对象、设计模式、Netty、Elasticsearch、Memcache、Redis、MySQL 等众多技术。缓存

初级架构师须要 5~10 年时间,其典型特征就是可以“独立完成一个系统的架构设计”,能够是从 0 到 1 设计一个新系统,也能够是将架构从 1.0 重构到 2.0。初级架构师负责的系统复杂度相对来讲不高,例如后台管理系统、某个业务下的子系统、100 万 PV 量级的网站等。mybatis

初级架构师和技术专家的典型区别是:架构师是基于完善的架构设计方法论的指导来进行架构设计,而技术专家更多的是基于经验进行架构设计。简单来讲,即便是一样一个方案,初级架构师可以清晰地阐述架构设计的理由和缘由,而技术专家可能就是由于本身曾经这样作过,或者看到别人这样作过而选择设计方案。多线程

从技术专家成长为初级架构师,最主要的是造成本身的“架构设计方法论

中级架构师须要 8 年以上时间,其典型特征是“可以完成复杂系统的架构设计”,包含高性能、高可用、可扩展、海量存储等复杂系统,例如设计一个和 Kafka 性能匹敌的消息队列系统、将业务改造为异地多活、设计一个总共 100 人参与开发的业务系统等。中级架构师与初级架构师的典型区别在于系统复杂度的不一样。

从初级架构师成长为中级架构师,最关键的是“技术深度和技术理论的积累

高级架构师须要 10 年以上时间,其典型特征是“创造新的架构模式

高级架构师与中级架构师相比,典型区别在于“创造性”,高级架构师可以创造新的架构模式,开创新的技术潮流。

从初级“码农”到高级“架构”,个人成长之路(Java向)

如何让本身成为一个优秀的Java架构师,而不是码农

回想我工做的前六年时间里,我一直都是在创业公司里成长,虽然能够快速学到东西,但彷佛很难学到更加规范的作事方法。因而我选择了新的工做机会,来到了 TCL 通信,这是一家至关大的公司,公司的研发管理流程来源于法国阿里卡特公司。我在公司担任 Java 架构师职位,也算是整个 Java 团队的技术负责人,虽然团队并非特别地大。我在这家公司作了三年,学到了如何整合现有资源、如何按标准流程去作事、如何设计系统架构、如何进行异地工做、如何跨团队工做、如何用英文来沟通。说实话,当时我没有任何的工做压力,能够按时上下班,历来都不会加班。虽然本身空闲的时间不少,但我并无选择去浪费时间,而是开始写点技术博客,也正是由于这些技术文章,才改变了我后续的职业发展道路。

从初级“码农”到高级“架构”,个人成长之路(Java向)

Java 会在很长的一段时间内是主流,如今作Java Web开发都用哪些框架呢?

经常使用的好比Spring MVC、Struts2 等,国内的 JFinal、Nutz 等也不错,固然Smart 也是一个很好的选择。
有必定Web前端开发经验的人,不少都会有这么个想法:那些写框架的人好厉害,何时我才能写一个本身的框架呢?有时候看看别人的框架代码,又以为很复杂,对此我有一些建议以及新人学习须要什么基础?分享一些好的方法。

抽象能力:对业务和技术进行抽象。业务抽象就是对需求进行分析后,可以创建完美的实体类以及他们之间的联系。技术抽象是对总体架构进行一个分层,各层之间的交互。这相当重要,若是技术抽象能力不足,这会致使整个系统的架构不灵活,难以维护和扩展。

知识的深度:至少是某个领域的专家,好比消息队列,activeMQ熟悉其源码,知道其实现。
优秀的学习能力:对新的技术和前沿性的技术进行学习,使用它来解决工做中的业务问题。

那么你该如何去作呢?我以为能够从如下几个步骤开始:

1 : 扎实的JAVA 基础,Think in java上介绍的内容都能理解,作到这一步恭喜成为了程序员。

2:熟练使用主流框架,如:mybatis,spring 等。

3:研究过至少一种以web框架的源码,如spring mvc ,struts 等。

4:架构过或者参与太高并发系统设计,知道如何应对突发状况。

5:对本身所处的业务可以根据本身的知识维度,提出优化建议或者预测其风险点。

其实可否成为架构师跟机遇有很大关系,好比一个程序员,以上都作到了,可是公司并无给他这个机会去作,一个真正架构的机会。由于以前的架构师不离职他就没有机会,这就是现实!

给你们提炼一条通用的成长路径供你参考

从初级“码农”到高级“架构”,个人成长之路(Java向)

从初级“码农”到高级“架构”,个人成长之路(Java向)

技术人的归途

走技术这条路,归途是什么?是否转型又该如何抉择呢?

至少有好几条路线是能够走的,好比:深刻技术、转型作产品、转型作管理等,须要根据本身的特长和性格来选择,作本身喜欢的事情。

从技术转管理,对自身的要求比较高,说具体点,须要看本身的情商,为人处世的经验,与人沟通的技巧,本身也须要有足够的胸怀,去包容一些事情,还须要本身有足够的人格魅力去吸引别人,让别人愿意跟着你一块儿作事。管理有些东西是很难从书本上学到的,但一些经典的管理理论是必需要去学的。

相比较而言,继续深刻技术或者从技术转产品会容易一些了,由于不少时候都不太须要与人打交道。

相关文章
相关标签/搜索