Java 杂谈互联网科技Spring-Boot

我的梦想是十年内成为架构师,该怎么办?

2019-03-22  本文已影响11人  Java高级架构狮

现在已经有确定的目标了,真不错!很多人连自己的职业目标还没有确定。

架构师这个职位没什么神秘的,简单点儿说就是用户需求转化成技术实现,只是在转化的时候会遇到一系列问题,比如:技术如何选型? 如何设计才更简洁、更容易实现和扩展?如何满足非功能性需求,如性能、安全、高可用性、审计......

除此之外,还得和客户以及分析人员沟通需求,确保没有跑偏,有时候还得引导一下,去除或者改变那些不可能实现的需求。

和程序员沟通,让大家理解技术选型和设计,顺利开展设计和编码。

软件架构师自身需要是程序员,并且必须一直坚持做一线程序员,还需要承接编程任务,如果不亲身承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。

软件架构师不是一蹴而就的,是一个循序渐进的过程,是一个职责不断扩大的过程

刨除好奇心和对这个行业的热爱, 我个人认为至少需要在这些方面进行发展:

一、掌握技术的原理

做一个架构师会涉及到很多技术,要求技术的广度,如果掌握了原理,不但对技术认识深刻,学习新的东西就能迅速抓住本质。

计算机的基础知识就不用说了, 网络、操作系统、数据库、编译等, 相对枯燥,最好在大学阶段完成。

你是Java开发方向发展, 至少要掌握这些应用层的东西

真是不少啊,关键是在应用层学习的时候,要多问为什么? 我建议你用这样的句式: “因为有xxxx的问题,现有的xxx和xxxx解决不了,所有才出现了xxxx这个技术。”

当你在追寻这些技术的本源的时候,对一个技术的思考就会更加深刻,就能超越很多人。

那怎么算把一个原理给掌握了呢? 我认为标准就是你能用自己的语言给别人讲出来,让别人能理解。

二、获取项目经验和最佳实践

只知道原理,还是纸上谈兵,必须得做很多项目,在项目中去体会它们,应用它们,获取一些最佳的实践。

现在能从头开始设计项目的机会不多了,作为初级程序员,只能从现有项目中去学习,去研究下系统中的网络请求是怎么走的? 负载均衡是怎么做的,四层还是七层? 如果做的集群?如何做的复制? ......

一定要努力地往上看,看到整个系统,看到端到端的流程,不能把自己局限在一亩三分地里, 做一个认领工作,完成工作的HTML填空人员, 那样路子真的就越走越窄了。

同样,要多问为什么, 在你通过自己或者求助别人探寻答案的时候,也许会发现现有设计的问题,这就是你的机会。

当你从局部慢慢走到整体以后,你的机会自然就越来越多,承担的职责越来越大,话语权越来越重,离架构师越来越近。

三、锻炼自己的抽象能力

写程序是一件挺简单的事情,把一个高中生拉来培训一下,就能写得像模像样。

但是想写好程序又是一件非常难的事情,因为系统越来越复杂,通过堆砌代码的方式来实现,很快就干不下去了,难度会成几何级数增长。

解决这个问题的关键就是抽象,架构师得找到系统中那些不变的东西,把他们作为支点来架起整个系统的设计,升华一下就是一些正交、分层等思想。

通过把系统的组件划分到不同维度,不同层次就可以实现封装“变化”的目标。

这些思想从哪里学习? 怎么内化成自己的能力

四、要发出自己的声音

做开发的很多都是性格偏内向,喜欢和电脑打交道,但是想发展成架构师,只是闷头干活肯定是不行,必须得在小组内,部门内,公司内发出自己的声音。

例如对于架构,设计,编码,工程实践,技术发展趋势都能提出自己的见解,让别人能信服、尊重你的意见,这样才能成为自然的技术领导。

如果只是靠领导的任命或者威权来领导,那下属可能要造反。

对了,这里的“声音”可以是小组讨论,部门会议,紧急任务处理,技术演讲,博客,客户交流等等。

总之,等到你精通原理,能把基本的思想应用到项目中, 还能看到全局,有足够的项目经验,被别人尊重、信服,那架构师离你就近在咫尺。

有梦想就去追!

针对上面的Kafka、Mysql、Tomcat、Docker、Spring、MyBatis、Nginx、Netty、Dubbo、Redis、Netty、Spring cloud、分布式、高并发、性能调优、微服务等架构技术我给大家准备一些学习资料和学习视频,如果你开发了1~5年,技术遇到了瓶颈,但是你又拒绝平庸,期待蜕变,我相信资料一定对你有用

资料领取方式:加入粉丝群963944895,私信管理员即可免费领取

上一篇 下一篇

猜你喜欢

热点阅读