个人技术成长之路

本文首发于微信公众号——世界上有意思的事,搬运转载请注明出处,不然将追究版权责任。微信号:a1018998632,交流qq群:859640274前端

最近发了一个专题 从零开始仿写一个抖音App 承蒙你们的关注阅读量也挺多了。因此在群里的同志们“鼓动”我写一篇成长和技术路线的文章,以飨读者。注意本文只是给在技术路上迷茫的人一个指引,大牛的话其实彻底没必要看:)java

1、我为啥能写这篇文章

看到这篇文章的人第一个反应确定就是:这人是谁,为啥能给我指引,他很牛逼吗?因此我先列举一下个人现状,这样能够给比我能力弱一点的人一些指引。固然比我牛的大佬我也但愿能在评论区给我一些指引。python

  • 1.目前本科毕业已经有4个月了吧,我本科是浙江杭州的一个普通一本(双非)。去年春招的时候在中国有赞实习过半年java 开发,错过秋招以后今年春招投了几个大厂,也收获了几个大厂 offer,最终选择的目前公司的薪资福利还算不错,看了今年19届的各类 offer show 感受仍是比通常大厂的白菜高一些的。
  • 2.从开始写文章到如今已经有两年多的时间了,目前的成绩也还算不错。写了三十几篇文章总计11万字,各个平台上的粉丝数接近3k,点赞数接近4k,阅读量有十五万左右
  • 3.github 上有三十多个 repository,总计 start 也有1k 了。上过几回 github 的 developers 和 repo 的热门。
  • 4.最近简书也有找我商量出版书籍的事情,不知道最终能不能成吧。但这也是对个人能力的一种确定。

上面就是我目前的状态了,若是你们以为能力比我弱那么一丢丢的话,那么仍是能够继续把文章看下去的,应该会对你有所帮助。linux

2、基本面

咱们在新闻中经常能看见基本面这个词,在我看来基本面对于一我的的成长来讲就是他的性格与习惯。一个好的基本面能让一我的有持续成长的动力。这一章我就来简单说说这方面的东西吧。android

  • 1.你们能够先想一想本身坚持过最长的事情是什么,坚持这件事情是各类文章中老生常谈的东西。我这里就给它补充个人两个例子好了:1.我坚持看**科幻世界(当初三体三部曲就是在这本杂志上连载的)**这本杂志有9年了。2.我坚持夜跑有三、4年的时间,毕业后荒废了半年,最近又从新开始跑了。补充这两个例子实际上是为了说明:坚持作某件事情其实在潜移默化中会让你的性格和精神发生某种变化,这个变化能对其余各类事情产生正向的影响。好比我去年的时候花费了一个多月的时间整个翻译了 Fresco 的源码,这就是之前的坚持给当时的我带来的影响。又好比我一直写博客也是之前的坚持带来的影响。固然你被坚持影响的事情后来也会成为坚持的一部分而后对后面的更多事情产生影响,这是一个正向的循环。这就是我要说的第一个基本面:坚持
  • 2.你们再想一想本身上一次抬头看星星是多久之前?咱们都知道有一句话叫:仰望星空,脚踏实地。前面的坚持就是脚踏实地的部分,而我这里要说的仰望星空部分就是说要有好奇心(求知欲、探索精神等等)。或许是由于年轻,或许是由于科幻小说看多了,个人脑子里总会冒出各类奇奇怪怪的想法。在技术方面的表现就是经常去了解各类各样的技术,但愿搞懂它们的内在原理。大学四年我由于好奇心接触的东西有不少:android、java后台、cv图像处理、深度学习、前端、vr游戏等等。我固然也不是只停留在表面玩玩 Hello world,你们能够看看个人历史文章,其中好几个技术我都写成过博客。这里我想要表达的就是作技术就要保持对技术的好奇,这样才能持续的进步。这就是我要说的第二个基本面:好奇心

3、技术路线

扯了上面扯了这么多,接下来我开始说一下我以后的技术路线和计划吧。下面是我整理的思惟导图,我接下来会结合这个图来说解我本身制定的成长计划。c++

个人技术成长之路.png

  • 1.首先说说我技术上的目标吧,个人目标分为近、中、远三个层次:
    • 1.近:指的是一年之内。个人目标是干好本身的本行工做 android,同时吃透公司中 android 相关的各类技术,而后有目标的学习公司中有关音视频的技术(目前有权限接触)。
    • 2.中:指的是两三年内。个人目标是慢慢开始接触公司中的音视频开发,同时吃透公司中音视频相关的技术,而后有目标的学习公司中的关于图像视频方面的各类算法(目前没有权限接触)。
    • 3.远:三年以后,估计我会跳槽或者与靠谱的人一块儿创业啥的,此时个人目标是成长为T型人才,能担任起技术负责人的角色,再也不局限于某种技术。
  • 2.再说说我我的的定位吧,首先咱们经常会听见你们会将算法工程区分开来,我自认为在这两个之中在我在工程这边的优点更大一些,虽然我对算法也挺感兴趣可是毕竟比不上各类paper拿到手软的硕士博士。这个时候个人定位就是了解算法的工程型程序员,这样能让我在两边都各有优点。
  • 3.最后就是技术路线了,前面说了个人技术目标,这样一来个人技术路线就比较好理解了。
    • 1.思惟导图中的路线分三个等级:红色(须要了解源码原理,或者精读书籍)、蓝色(须要会使用)、灰色(只需了解)
    • 2.首先是 android 方面,这也是我最近在作的事情:
      • 1.架构分 mvc、mvp、mvvm:mvc 已经腐朽、mvp 是目前各大厂商使用的主流框架,不过大多公司不会遵循 mvp 的原始设计而是进行合适的魔改、mvvm 中的 databinding 2015年就出来了可是如今仍是上不了台面,剩下的几个是这两年 google 推荐的架构框架,标红的是能够被整合到 mvp 中去的,因此值得学习。
      • 2.数据库分为两大类:sqlite 与 realm(一个性能比较好的移动端数据库)。由于 realm 是 c++ 实现的因此并不须要去特别的了解其原理只需会用便可。sqlite 中又有许许多多的 orm 这里面以 greenDao 和 room 性能最佳。room 彷佛用的人很少,因此去了解 greenDao 的原理便可。
      • 3.网络这边:目前 retrofit + okhttp 是绝对的王者因此必须了解其中原理。socket 是网络库的基石会用便可,固然这里面涉及到的计算机网络知识仍是须要了解原理的。volley 这东西很是老的项目中应该还会使用,在我这边不做要求。
      • 4.代码生成:这东西用好了能够作大量有意思的东西,android端的 aop 就能够用这些技术来实现,不过也不须要了解其原理,会用就行。
      • 5.动态框架中 flutter 目前看来有称王的趋势,因此不只要会用,还须要了解其原理。而其余两个东西估计是打不过 flutter 了,不学也罢。
      • 6.图片处理框架中:Fresco 以性能强、功能多、定制性强著称。glide、Picasso等等以轻量,侵入性弱著称。像短视频这种场景,在图片处理方面的需求不少,天然是使用 Fresco 并且需了解其原理。
      • 7.序列化与反序列化中:json 是老牌霸主。但 protobuf 的性能极强,又有 google 背书。因此两个都不能拉下。
      • 8.剩下的日志、kotlin、插件化、推送、im 等等就不一一列举的,这些都是须要了解其内在原理,这样才能在本身写轮子或者基于开源组件定制轮子的时候不出纰漏。
    • 2.接下来是音视频方面:这些里面的东西大多也是我须要学习的,因此能够与读者一同成长
      • 1.音视频的基本原理与概念是必须知道的东西,这里随意列了两个东西,更具体的也许要等我学习以后再进行补充了。
      • 2.c++ 是进入音视频领域的敲门砖,不了解你连代码都看不懂,因此这里列了三本书能够按顺序观看
      • 3.雷宵骅的博客,雷宵骅是个大牛级别的人物,惋惜英年早逝。他的博客必定要去看。
      • 4.FFmpeg 也是一个难啃可是必须啃的骨头,这里列了两本书和一个类库,红色优先级。
      • 5.protobuf前面说了就再也不赘述。OpenGL 与 OpenSL 这两个技术只需会用便可。
      • 6.最后就是 gpuImage 和 grafika 了。这两一个是基于 OpenGL 的封装库,一个是 google 开源的 android 端图形图像处理项目,都必须去看源码了解原理。
    • 3.而后是后端技术:这里的话没有兴趣的同窗其实能够不去了解,这里只是个人我的喜爱。由于我也实习过半年的 java 后台,因此后端我也比较熟悉,能够闲着没事玩玩,拓展拓展。
      • 1.rpc 是微服务架构的前提,各类大厂都出过本身的 rpc 架构。我在这篇文章中分析过这些东西,有兴趣能够去看看。我这里列的红色优先级都是与 python 相关,缘由是 python 在深度学习中很是有用,并且在写后台方面也能快速迭代。
      • 2.数据库和消息队列是两个在后端很是经常使用的技术,这里我只将他们列到了会用的范围,由于并无太多的时间去了解他们的技术原理。
      • 3.服务治理这方面了解便可
    • 4.接下来到了算法方面:其实音视频的深了以后天然而然的会须要用到各类算法,包括视频特效,视频渲染,人脸识别,美颜瘦脸等等等等。
      • 1.图像处理,这一块我在毕业设计的时候作过,仍是挺有意思的。Opencv就能解决大多数这方面的需求了,若是能再看一看《数字图像处理》这本书,你将会别的更加完美:)。
      • 2.深度学习。这一块我也在毕设中用到过,其实这里对数学知识要求有点高,真的有兴趣的同窗能够按顺序把前面三本书看完,而后学学 python 和 c++ (这也是我前面学这两个语言的缘由之一)。最后看一下 cs231n 的视频进行实战。若是此时还知足不了你的话,就能够去看前沿论文了。我本身的目标也是只要能复现论文就行。
      • 3.推荐算法的话了解就行。
    • 5.最后一个东西是 linux/unix:这里面的东西我以为仍是挺重要的,虽然你不须要去了解原理,可是若是你不会用 shell 和 vim 的话。前面我列举的不少东西你将学的举步维艰。因此花几个周末去学学吧,比起编码仍是简单的,学不会的缘由可能只是由于你不肯跳出温馨区。

4、尾巴

上面这些就是我今天要聊的东西了,但愿能对你们有所帮助。另外但愿你们能持续关注个人从零开始仿写一个抖音App这一系列文章,由于这个项目就是我学习各类知识以后的练手之地,关注了以后你们就能与我一块儿成长了:)。git

不贩卖焦虑,也不标题党。分享一些这个世界上有意思的事情。题材包括且不限于:科幻、科学、科技、互联网、程序员、计算机编程。下面是个人微信公众号:世界上有意思的事,干货多多等你来看。 程序员

世界上有意思的事