今天这篇文章,我前后读了 3 遍,主人公是阿里最年轻的 P8 之一,工作五年连升三级,他在一次采访中分享了自己的成长经历和职场心得,非常接地气,我们整理了 一下,真诚地推荐给每一个渴望成长和进步的职场人,希望能带给你力量。
保持好奇心——培养主动学习的意识和习惯
我每天可能十几个小时一直在下载最新的学习资料视频,由于我的专业偏设计类,我会在网上找一大堆的,比如电影的概念画、原画集、插画集,下来自己临摹。慢慢的塑造了自己的造型和审美能力。之后去看各种各样的电影,对电影特效感兴趣,开始学视频制作。画画画久了,又去学 coding。这里有两点启示:
一是知识对我来说不再稀缺,稀缺的只是好奇心。
它让我建立了获取知识的自信心。以前我们所受的教育都是你要特别努力,经过某次考试或者某种官方的认证才能够进入到下一阶段的学习。而现在知识就在那里,只要你想要随时都可以拿到它。
二是它影响了我看待人与人之间,看待和权威间的关系。
因为信息是平等的,你和权威或者不是你专业领域的人沟通的时候,在信息的量级上就没有太大的鸿沟了,可以通过独立思考平等对话。这使得我不太会去惧怕权威。
凡事都多走一步——不断超越预期
我当时有一个小技巧,在我开始工作第一年就发现很管用。
就是我的每一个新项目,只要有新的人,我第一次合作的人,我就一定要让他们惊讶。
我觉得这个经验叫做多走一步。就是比你想象的多走一步。所谓的多走一步是全方位的。
在不同的项目里,多走的那一步可能是不一样的。
当然会根据他是谁、或者你的目标是什么做一个小的调整。但最重要的事情倒不是因为这个人的性格去做调整。而是他需要什么,你要帮他解决什么问题去做调整。
这个惊讶的点不一定会跟我的项目目标一致,我会这样来想问题:第一次合作大家要完成一个项目,那我第一优先级肯定是把这个项目做得非常好。
比如我们要去解决 GMV ,最后成交量的问题。那我首先会拆分:GMV 等于什么?等于有人来了,这个人的转化,以及这种转化的客单价。我会在这三个方向去找机会点。
在前两年,领到一个任务时,往往目标已经确定。但我会去想这个事情到底对最后的目标起到什么帮助?在目标的哪个环节起到了帮助?除了这件事情以外,有没有比这件事情还能撬动最后目标的?
目标可以拆解成很多假设,我们做的事情是因为某个假设去完成某个目标。
在你工作前两年,别人往往不会再讨论目标,往往讨论的是 to do。但是所有的 to do 都来自于一个目标。从来没有一个项目的 to do 有多么精准,一定有更优化的空间。这是我的第一优先级。
如果这个做不到,那我会在 to do 层面尽量拿到一个更好更优雅的方案。
当这两个层面都做不到的时候,我会往人上面去多做一些东西。能不能做到更贴心?别人需要什么样的东西?能不能为别人多考虑?
完整的知识体系——掌握底层原理才能举一反三
下面我详细介绍成为架构师所必须要学习的知识点:
针对以下学习方向我们有自己的高清思维方向导图以及阿里架构师讲解的架构视频分享(包括高可用,高并发,spring 源码,mybatis 源码,JVM,大数据,Netty 等多个技术知识的架构视频资料和各种电子书籍阅读)
一、分布式架构
分布式架构是 分布式计算技术的应用和工具,目前成熟的技术包括 J2EE, CORBA 和.NET(DCOM),这些技术牵扯的内容非常广:
分布式专题
二、团队协作开发
1、Maven
在如今的互联网项目开发当中,特别是 Java 领域,可以说 Maven 随处可见。Maven 的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂 Maven,那么一个多模块的项目足以让你头疼,依赖冲突就会让你不知所措,甚至搞不清楚项目是如何运行起来的
2、Git
一个专业的程序员,怎么能不掌握 Git 呢?版本控制领域,已经发展了一段时间,从古老的 CVS,到 SVN 集中式管理,再到现在的 Git。由于 Git 的分布式、everything is local、分支等诸多特性,让越来越多的项目开始从 SVN 迁移到 Git 进行管理。
3、Jenkins
Jenkins 是一个开源的持续集成工具,应用 Jenkins 搭建持续集成环境,可以进行自动构建、自动编译和部署,非常方便。
在服务器比较少的情况下,Jenkins 的优势并不明显,但是随着项目发展,服务器数量的增加,Jenkins 的优势就会凸显出来,可以很好的提高效率,减少很多人工操作。
公司的项目自动自动化部署是采用 Jenkins,并且编写自动构建的 shell 脚本。
由于项目是前后端分离,前端和后端都是单独部署的, 后端 采用 JAVA 编写,使用 Maven 管理多模块和项目依赖, 前段使用 npm 管理项目组件依赖, webpack 进行打包。
4、Sonar
Sonar 是一个用于代码质量管理的开源平台,用于管理 Java 源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如 pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持。
团队协作开发
三、微服务架构
1、微框架
微服务架构(MSA)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的类上应用很多 SOLID 原则。 用通俗的话来讲,就是为了高度解耦软件之间的依赖性,使每个独立的模块都能够单独测试,单独运维,最大限度的提高软件的开发流程。
2、Docker 虚拟化
Docker 有着小巧、迁移部署快速、运行高效等特点,但隔离性比服务器虚拟化差:不同的集装箱属于不同的运单(Docker 上运行不同的应用实例),相互独立(隔离)。但由同一个库管人员管理(主机操作系统内核),因此通过库管人员可以看到所有集装箱的相关信息(因为共享操作系统内核,因此相关信息会共享)。
微服务架构
四、性能优化
性能优化,简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。性能问题永远是永恒的主题之一,而优化则更需要技巧。
性能优化
五、开源框架源码分析
源码主要功用有如下 2 种作用:
1.生成目标代码,即计算机可以识别的代码。
2.对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。但是说明对软件的学习、分享、维护和软件复用都有巨大的好处
我们在写程式时,有不少时间都是在看别人的代码。
例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。
开源框架解析
六、电商项目实战
无需赘述,如果没有实战经验,如何成为一名架构师?
B2C 商城实战
七、并发编程
从 Java 基础接触多线程,到分布式架构环境下的高并发访问,并发编程充分利用好各个服务器处理器,以最高的效率处理各个任务协同有序工作。透彻理解锁的应用。
并发编程
八、设计模式
作为一个程序员,如果你追求的不仅仅是 crud,那么设计模式是你必须要学会的。
想要进步,看知名项目的源码是学习的重要途径,但如果你不懂设计模式,你在看源码的过程中将会异常的煎熬。你根本看不懂作者的意图和代码的逻辑
只有学会了设计模式,你才能更进一步。万丈高楼平地起,不要急躁。为了啃 spring 的源码,jdk 的源码,你必须沉住。吃了设计模式。
设计模式
资料已整理成文档,需要获取的小伙伴可以直接转发+关注后私信(学习)即可获取哦
以上,就是一整个项目的流程清单,以一步一个脚印的经历总结,不涉及具体语言代码,但是思路都是相通的,希望对你有帮助!