Java程序员怎么迈向架构师
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作三五年之后开始迷茫的老程序员经常会问到的问题。
什么是架构,什么是架构师?这似乎是聊架构话题时永恒的问题。
从内心讲我真的不想回答架构具体需要做什么,架构师应该具体负责什么。因为从实际情况看,在不同的系统层级,不同的需求下架构师的职责也会不同;从不同的技术角度看,架构师又是个变色龙——一时是技术的大拿,一时是技术的规划者,一时是技术团队的指挥者。
那么,该如何回答“什么是架构,什么是架构师”这个问题呢?这或许需要先搞清楚另外一个问题——一名程序员是如何走上架构师之路的?我从许多朋友那里了解到了很多实际案例,程序员走上架构师之路,总结起来最多的原因是因为他早前代码写的好。
架构师的定义?
个人觉得架构师需要具有以下几特点:
知识广度:需要知道主流技术为什么诞生,能解决什么问题?如果同一种业务用不用的技术来实现,会有什么哪些优缺点?比如:流行的ORM框架Mybatis 和 hibernate ,他们之间的优缺点是什么?要有清晰的认识会能在技术造型时做出正确的决定。
抽象能力:对业务和技术进行抽象。业务抽象就是对需求进行分析后,能够建立完美的实体类以及他们之间的联系。技术抽象是对整体架构进行一个分层,各层之间的交互。这至关重要,如果技术抽象能力不足,这会导致整个系统的架构不灵活,难以维护和扩展。
知识的深度:至少是某个领域的专家,比如消息队列,activeMQ熟悉其源码,知道其实现。
优秀的学习能力:对新的技术和前沿性的技术进行学习,使用它来解决工作中的业务问题。
那么你该如何去做呢?我觉得可以从以下几个步骤开始:
1: 扎实的JAVA 基础,Think in java上介绍的内容都能理解,做到这一步恭喜成为了程序员。
2:熟练使用主流框架,如:mybatis,spring 等。
3:研究过至少一种以web框架的源码,如spring mvc ,struts 等。
4:架构过或者参与过高并发系统设计,知道如何应对突发情况。
5:对自己所处的业务能够根据自己的知识维度,提出优化建议或者预测其风险点。
其实能否成为架构师跟机遇有很大关系,比如一个程序员,以上都做到了,但是公司并没有给他这个机会去做,一个真正架构的机会。因为之前的架构师不离职他就没有机会,这就是现实!
Java程序员怎么迈向架构师的更多相关文章
- 【转】java架构师之路:JAVA程序员必看的15本书的电子版下载地址
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- Java架构师之路:JAVA程序员必看的15本书
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- Java程序员到架构师的推荐阅读书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- Java程序员进阶架构师推荐阅读书籍
[IT168 技术]作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些 ...
- 一名资深架构师规划Java程序员五年职业生涯指南
每个程序员.或者说每个工作者都应该有自己的职业规划,如果你不是富二代,不是官二代,也没有职业规划,希望你可以思考一下自己的将来.今天我给大家分享的是一篇来自阿里大牛对五年工作经验程序员的职业建议,希望 ...
- 一个4年工作经验的java程序员的困惑,怎样才能能为一个架构师,请教大神
一个4年工作经验的java程序员的困惑,怎样才能能为一个架构师 LZ本人想往架构师发展, 业余时间也会看一些书籍, 但是感觉没有头绪, 有些书看了,也没有地方实践 我做了4年的java开发, 在一个公 ...
- 腾讯架构师分享的Java程序员需要突破的技术要点
一.源码分析 源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 我认为是阅读源码的最核心 ...
- Java程序员如何从码农晋升为架构师,你跟架构师的差别在哪里?
一.如何定义架构师 Java架构师,首先要是一个Java程序员,熟练使用各种框架,并知道它们实现的原理.jvm虚拟机原理.调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,怎么解决并发量. ...
- (转)致Java程序员:你离架构师还差多远?
转至:https://blog.csdn.net/ityouknow/article/details/82782965 几乎每个Java程序员心中,都有着成为架构师的技术追求.那么,成为Java架构师 ...
随机推荐
- JSR303验证
转自:http://blog.csdn.net/lu930124/article/details/52587135 JSR-303是一个数据验证的规范,这里我不会讲这个规范是怎么回事,只会讲一下JSR ...
- Linux cal命令
cal命令时查看日历的相关命令 1.用法 cal [选项] [[[日] 月] 年] 2.命令选项 -1, --one 只显示当前月份(默认) -3, --three 显示上个月.当月和下个月 -s, ...
- python web框架 Django的APP以及目录介绍 2
app: migrations 数据修改表结构 admin Django为我们提供的后台管理 apps 配置当前app models ORM,写指定的类 通过命令可以创建数据库结构 tests 单元测 ...
- 图书源代码下载: Modern Differential Geometry of CURVES and SURFACES with Mathematica
http://alpha01.dm.unito.it/personalpages/abbena/gray/ Contents 1. Curves in the Plane | 2. Famou ...
- Lepus_天兔的安装
一.安装平台 Centos 32位 二.依赖软件 依赖软件包:mysql.php.apache集成在xampp中,python,MySQLdb模块安装包在lepus安装包目录中 以下标红软件是必须安装 ...
- NOSQL概念入门
一.NOSQL概念 随着大数据时代的到来,分布式存储得到了快速发展,其中比较受欢迎的,主要以key-value键值对存储的非关系型数据库进入了大家的视野. NOSQL的全称是Not Only Sql, ...
- docker——镜像(image)
镜像相关命令一览表: docker images docker tag docker inspect docker history docker search docker pull/push doc ...
- python全栈开发从入门到放弃之模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- HttpClient使用详解(转)
http://blog.csdn.net/wangpeng047/article/details/19624529
- maven tomcat7-maven-plugin配置及背景
背景: 在研发阶段,想让一个服务通过tomcat启动起来有很多的方法,常用的idea都有这样的支持,那么如果我们没有tomcat,能不能让服务通过tomcat启动起来呢?maven就提供了这样的支持. ...