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

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

原创: 码农翻身刘欣 码农翻身 码农翻身

微信号 coderising

功能介绍 工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。

Table of Contents

1. 掌握技术的原理

2. 获取项目经验和最佳实践

3. 锻炼自己的抽象能力

4. 要发出自己的声音


这是来自我的星球“码农翻身”的一个提问:

在掘金上把老刘的所有文章都读了一遍觉得特别好,现在有了压岁钱就屁颠屁颠的来加入星球啦。 

我是一个普通二本cs专业的,今年夏天就要去实习了,虽然在学校也学的很认真跟着老师做了不少小外包的项目,但是觉得自己学的好杂好乱,前端会点vue 微信小程序 后端会点php的tp框架,然后最近又跟着老师在学javaee,现在感觉自己只是一个html填空的码畜。

看了老刘的文章以后开始重视基础,最近也在看网络原理和算法还有Java虚拟机的一些书, 但我还是很迷,没有一个系统的规划,不知道我应该学什么,怎么学,学到什么效果算掌握了,请大佬指点一下,我最近想从事Javaweb方面,也梦想能在10年内成为一个架构师。

下面是我的回答:

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

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

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

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

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

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

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

1. 掌握技术的原理

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

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

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

Web开发框架

HTTP/HTTPs

SSO

OAuth

RESTful

序列化

安全框架(如Java的Shiro, Spring Security等)

RPC及相关框架

Web安全攻防

虚拟机

并发编程

缓存

数据库相关的范式、SQL,事务,索引,锁

.....

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

举个例子,现在大家都知道websocket是做什么用的,但是它要解决什么问题? 为什么不能直接在JavaScript中使用原生的Socket呢?  为什么还要用HTTP协议作为“启动”,然后切换成websocket?

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

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

2. 获取项目经验和最佳实践

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

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

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

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

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

3. 锻炼自己的抽象能力

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

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

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

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

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

一是从项目中来,我相信你的项目肯定有这些思想的体现,只是你去用心去发现。

二是阅读书籍,阅读源码,看看牛人们是怎么做的。

三是自己要总结思考,总有那么一刻,你会顿悟: 啊,原来如此!

4. 要发出自己的声音

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/Rong_Toa/article/details/88702206