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

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

我是一个普通二本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. 要发出自己的声音

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

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

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

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

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

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

  1. 高性能mysql_「高性能MySQL」十年阿里架构师推荐,这份高性能MySQL文档送给你

    MySQL MySQL的概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle旗下产品.MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方 ...

  2. 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段。

    淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 文章目录 淘宝十年资深架构师吐血总结淘宝的数据库架构设计和采用的技术手段. 本文导读 1.分库分表 2.数据冗余 3.异步复制 4.读 ...

  3. 架构 php_十年PHP架构师的成长之路,程序员必备

    不知不觉自己做开发已经十年了,这十年中我获得了技术能力.CTO.大公司的经历.但再仔细一想,这十年中我至少浪费了五年时间走了很多弯路,这五年可以足够让自己成长为一个优秀的程序员,我用这五年时间和很多程 ...

  4. 数据库设计优化(来自十年经验架构师的课堂)

    昨天听了一节公开课,上课的人是一个有十年左右开发经验的架构师,讲的是数据库的设计优化以及SQL语句优化,讲的很浅显易懂,在这里先把数据库设计优化分享给大家. 1.适度违反范式. 如果严格遵循三大范式, ...

  5. 一个十年Java架构师的成长之路分享

    前言 我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的 ...

  6. 十年Java架构师分享

    1.源码分析专题 详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美.提高核心竞争力. 帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华.知其然,并知其所以然.把知识变成自 ...

  7. 十年java架构师分享:我是这样手写Spring的

    人见人爱的 Spring 已然不仅仅只是一个框架了.如今,Spring 已然成为了一个生态.但深入了解 Spring 的却寥寥无几.这里,我带大家一起来看看,我是如何手写 Spring 的.我将结合对 ...

  8. 由十多位架构师打造的《面试突击核心讲》到底有多强?肝完金三银四稳了。

    又是一年一度的 "金三银四" 春招大热门,为助力广大程序员朋友 "面试造火箭",小编今天给大家分享的便是这份马士兵内部的面试神技--1658页<Java面 ...

  9. 2021金九银十,java架构师直通车全套百度网盘

    前言 消息中间件是分布式系统中的重要组件,在实际工作中常用消息中间件进行系统间数据交换,从而解决应用解耦.异步消息.流量削峰等问题,实现高性能.高可用.可伸缩和最终一致性架构.目前市面上可供选择的消息 ...

最新文章

  1. 滴滴ElasticSearch平台跨版本升级以及平台重构之路
  2. 《Greenplum企业应用实战》一2.3 畅游Greenplum
  3. 如何根据指定软件版本制作属于自己的puppet yum源
  4. 贵州·中国南方数据中心示范基地获批
  5. Python Django单表查询之日期查询(大于小于范围查询)
  6. [Java] webservice soap,wsdl 例子
  7. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  8. 《软件工程》individual project开发小记(一)
  9. 洛谷 P5742、P5743、P5744 题解
  10. 音频社交Clubhouse将支持空间音频,让聊天更具真实感
  11. linux中的轮询机制select/poll/epoll特点分析
  12. 详解 undefined 与 null 的区别
  13. 数据算法_数据结构和常用算法
  14. 第一篇博客--大学成长指南
  15. HP Proliant DL360 Gen9服务器开箱
  16. 善于做“加减法”的百分点科技 成就数据智能的先行者
  17. 入侵检测系统(IDS)与入侵防御系统(IPS)的简单理解
  18. inventor(2):设置单位,显示完整工具区/功能区,创建分割面
  19. 用智能手机让台式机连接无线
  20. android 微信朋友圈 全功能,Android仿微信朋友圈文字展开全文功能 Android自定义TextView仿微信朋友圈文字展开全文功能...

热门文章

  1. 惨一个字!Windows 10 October 2018 Update市占率太低
  2. 说说 XSRF 防范
  3. jQuery学习笔记(四)——表单选择
  4. EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
  5. 高性能网络编程1----accept建立连接
  6. 华一银行开发安全内部培训圆满结束
  7. 10分钟让你明白什么是ERP
  8. Nginx正向代理与反向代理
  9. FFMPEG音视频同步-音频实时采集编码封装成MP4
  10. Javascript中{}+[]===0为true,而[]+{}===0为false