转载

技术小白是如何慢慢成长起来的 | 2019 与我的技术之路

写之前,先扪心自问,这两年下来,自己付出了多少?又收获了多少?

2019 即将结束,记得在 2017 年年底的时候就有过写一篇自我 review 的想法,只不过一直被搁置,没有去做。朋友圈为证:

技术小白是如何慢慢成长起来的 | 2019 与我的技术之路

借这次机会,终于把欠自己的债给还了。

这是一篇自我总结,也是一个技术小白的成长经历。

1、技术小白在毕业两年后能力如何了?

作为一个 Java 后端开发,目前的技术水平如下,希望大佬们不要嘲笑:

  • 主编程语言是 Java,也用 Scala 写过业务代码,自己在闲暇时间还写过一点点 Python;
  • 对于 Java 的基础知识都比较熟悉但不至于精通,如果问的问题层次比较深,可能会答不上来,因为还没有去深入的研究过底层源码;
  • 读过部分 Java 源码,例如: HashMapArrayListLinkedListString 等;知道它们底层的实现原理;
  • 公司使用过的后端技术栈基本上都会用;平时写代码遇到问题才会去看这些框架的源码,并没有完整的研究过这些框架的底层实现;
  • 对设计模式和 JVM 有一定的了解,基本上能定位 JVM 的一些问题;
  • 能较好的完成业务需求;
  • 基本具备独立开发项目的能力,包含 DevOps 的工作。

相信大家都知道,技术广度和深度这两个东西不可能一蹴而就,而是靠一点一点慢慢积累起来的。

我也曾是一个技术小白,在参加实习前,没有用过 Git ,Linux 下的 cdcpmv 这些最基础的命令也不知道。

两年多的时间,我从一个技术小白慢慢走到了今天。中间到底经历了什么,请听我慢慢道来。

2、小白的技术成长经历

2016 年 7 月,正值大三暑假,我是在那个时候找的实习,我实习的公司就是我现在待的这个公司。

刚进公司时,就是一张白纸,什么都不会。到底白到什么程度呢?举几个例子:

  • 没用过 Git
  • Linux 命令都不会
  • 不知道什么是 SpringBoot 框架

随便接触到一个东西就是新知识,所以那时分配给我的任务也特别少,例如花个几天的时间去实现一个增删查改的 rest 接口,而且还有现成的例子可以让你参考。

好在那个时候项目也是从零开始的,所以我不怎么需要花时间去熟悉原有项目。所以在那时我每天的工作就是参考已有代码写一些简单的业务代码, Ctrl + CCtrl + V ,然后再改一点点,完完全全代码的搬运工。碰到问题就自己去查资料,解决不了的就找 Leader 帮忙。然后每天把遇到的新知识以及问题记下来,晚上下班后回到家再继续学习,周末在家会花几小时来学习。

印象比较深的有:

  • 每天一个 Linux 命令系列:最开始我是看这个学 Linux 下的命令的,后来买了 《鸟哥的私房菜-基础学习篇》,对于零 Linux 基础的人来说这本书特别有用,强烈推荐。

  • 廖雪峰的博客:廖老师的技术博客对我帮助也非常大;

除了这些还有:

  • 相关技术的官方文档:绝大部分官方文档都比较简单,学习来也比较快,只是基本上是英文的

  • 以及很多大佬写的博客

我在此向这些帮助过我的人们表示衷心的感谢!真的非常谢谢你们!

当时也没有自己的学习体系,一般都是自己在网上找资源一路瞎学,查资料,看博客,看书。

这段实习经历让我也积累了大量的基础知识,并且慢慢的开始形成了自己的学习体系。这对于后续的成长有很大的影响。

毕业之后我就成为了公司的正式员工,也没有什么所谓的毕业旅行,直接就入职了。

正式员工和实习生还是有区别的,实习生的任务很简单,而且分配任务的时候会告诉你每一步该做什么以及怎么去做,正式员工明显就不一样,基本上就是直接给你一个需求,你自己去把它拆分成一个一个子任务,然后去完成。由于我是刚毕业,而且也一直待在公司实习,所以我是一个什么样的水准 Leader 也十分了解。所以刚开始的时候 Leader 都会指点一下,教你应该怎么拆分任务以及任务的优先级这些,后面就慢慢的开始自力更生,独立完成。我也在这个过程中不断的提升自己。

平时业务上基本就是这样子,然后我们来讲一讲技术相关的。

对于刚毕业的人来说一般是没有什么技术积累的(当然大佬们除外)。所以一般是 Leader 提出要用什么框架,然后你自己在平时以及下班后研究研究,学会怎么用,然后直接就应用到项目上了,也没有去思考为什么要用这个框架而不是其他框架?属于 “ 知其然而不知其所以然 ” 的层面。所以基本上就是搬砖、搬砖,再搬砖。

由于我待的是一家创业公司,并且规模不大,所以呢基本上我什么都能接触的到。另外我又比较喜欢 “多管闲事”,像平时升级部署呢我也要去参一脚,出了什么问题也会第一时间去帮忙解决,所以也学到了不少 DevOps 相关的东西,并且把学到的 Linux 相关的知识运用了起来。

不到一年的时间,公司用到的技术栈基本上都会用了,然后 DevOps 相关的也能折腾一下。然后自己平时写的代码质量也还不错(测试大佬说比较喜欢测我写的代码,因为很少出 BUG!小小的夸一下自己哈哈哈),所以也就有了下面的故事。

差不多在 2018 年 9 月份的时候,公司接了上海一个项目,当时这个项目是我们的重中之重,我们就叫它项目 A 吧。公司准备挑几个能力还不错的人来做这个项目,由于 Leader 才结婚不久,公司也不好让他去出差,然后另外一个也是才当了爸爸,另外项目本身也不会用到太高深的技术。最终,因为各方面的原因,我被挑选上了。

10 月开始,我和另一个后端(应该属于 3 - 5 年工作经验的那种)开发人员 Y,以及一个前端,一个测试,四个人形成一个小组,开始了项目 A 的开发。应甲方公司的要求,11 月的时候我们去了上海在甲方公司驻场办公。

在甲方公司上班压力要大得多,而且时间也比较紧。

技术小白是如何慢慢成长起来的 | 2019 与我的技术之路

不过甲方公司的办公环境给了我们一个大大的惊喜,就在外滩边上。

  • 晚上的时候可以看外滩夜景
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路

这个项目从 2018 年 10 月做到了 2019 年 7 月。

那么我在这个项目担任什么角色呢:

  • 前期负责自己的功能模块,后来慢慢成为了公司在甲方的形象大使,跟甲方公司相关的产品对接、技术对接等等事项都经由我去沟通(没办法,小公司缺人,被赶鸭子上架了)。在年中 review 时老板有意让我成为 PM(Project Manager),不仅仅指当前项目,包含当前项目结束之后未来的其他项目;同时,在此期间,甲方公司的负责人也曾向我抛出了橄榄枝。

后来一期结束,公司双方在某些观点上存在分歧,最终没有进行二期,我也回到了成都继续开发。

我说一下自己在做这个项目的感受吧:技术深度上几乎没有成长,主要是与客户打交道,沟通与对接需求,以及实现业务。

所以这一段时间主要是软技能的成长(虽然我也没看出来表现在哪里),技术上的成长真的很少。平时主要跟客户沟通,对接需求,下班也比较晚,回家之后学习也比较少。在这段时间里,粗略看完了《Head First 设计模式》这本书,然后也翻了一些《高性能 MySQL》这本书(30%不到),也只是如此了。

讲到这,技术上的经历也差不多讲完了。

下面是我整理的这两年用过的一些技术,希望能对大家有些参考。

毕业到现在用过的一些技术(大部分只是在会用级别,准备后面在每一类当中选择一个研究其源码实现):

  • 数据库:Cassandra、Redis,Oracle、MySQL
  • 编程语言:Java、Scala、Python
  • 代码构建工具:Gradle、Maven
  • 持续集成:Jenkins、Docker、Rancher
  • 版本控制:Git、SVN
  • 框架:
    • Spring 相关:SpringBoot、SpringDataJpa、SpringCloudConfig
    • ORM 框架:MyBatis、Hibernate
    • 语法分析器:antlr
    • 日志相关:SLF4J 和 Logback、log4j2
    • 数据库 Migration:flyway、liquibase
    • 鉴权:OAuth 2.0、JWT
    • 单元测试相关:JUnit、Mockito
    • 并发框架:Akka 和 Actor 模型
    • 消息队列:kafka
    • Excel 框架:poi、easeexcel
    • 流程引擎:camunda

接下来再来分析一些生活上的经历。

3、小白的生活是啥样的?

  • 正式毕业啦!
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 拿到正式员工的薪水之后立马更新了自己的装备!大爱 FILCO
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 在自己生日的时候给自己买了一台 iPhone 8!
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 某一次加班到深夜之后对人生的思考
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 开始自己做饭、带饭
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 大学室友齐赴宜昌一聚
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 带父母在杭州上海玩
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路
  • 买的书(小说基本上已经看完,技术类的还在慢慢啃)
技术小白是如何慢慢成长起来的 | 2019 与我的技术之路

其实这里面有些经历已经有一点模糊了,翻看以前的说说和朋友圈还是能大概想起。好了,咱们继续,来看看小白憧憬的未来是什么样子的。

4、小白所憧憬的未来

目前最想要的就是尽快提升自己的 技术深度

早在 18 年 5 月的时候开始写博客,每个月坚持写 2-3 篇,坚持了几个月,后面由于去上海之后,于 18 年 12 月停止更新博客。

到了成都,事情自然没有在上海多了,时间也空了起来,在自我颓废了 3 个月左右,然后突然开始勤奋起来,继续开始更新起自己的博客。

经过最近这一两月的阅读和学习,我明确了自己的目标,也认识到了之前自己走了一些弯路:之前学习的顺序不大对。

举个例子吧,我在 18 年的时候就把 《深入理解 Java 虚拟机》这本书就啃了一遍,到现在大部分只是有一些印象;后面也大致看过 SpringBoot 的相关源码。而对于 Java 中 j.u.c 、NIO 相关的源码却几乎没怎么读过,怎么说呢,感觉就像是基础还不牢固就想去学层次更高的东西,有点本末倒置了。

我目前打算提升的顺序大致是这样子的(最近在看 j.u.c 相关的源码):

  • JDK 源码
  • 数据结构、算法相关等等
  • JVM、GC 等等
  • 数据库相关,数据是如何存储的,索引、调优等等
  • Spring 源码,AOP、IOC,Tomcat 等等
  • 其他平时经常用到的一些框架源码
  • 热门技术
  • ...

先把前面四个搞个通透,剩下的应该也就不在话下了。

说起来容易,做起来难,最主要的还是要坚持。

哈哈哈,我仿佛已经看到了大佬在向我招手...

原文  https://juejin.im/post/5e00c542e51d45584968872d
正文到此结束
Loading...