阅读 1965

我的技术成长之路

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

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

一、我为啥能写这篇文章

看到这篇文章的人第一个反应肯定就是:这人是谁,为啥能给我指引,他很牛逼吗?所以我先列举一下我的现状,这样可以给比我能力弱一点的人一些指引。当然比我牛的大佬我也希望能在评论区给我一些指引。

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

上面就是我目前的状态了,如果大家觉得能力比我弱那么一丢丢的话,那么还是可以继续把文章看下去的,应该会对你有所帮助。

二、基本面

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

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

三、技术路线

扯了上面扯了这么多,接下来我开始说一下我之后的技术路线和计划吧。下面是我整理的思维导图,我接下来会结合这个图来讲解我自己制定的成长计划。

我的技术成长之路.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 的话。前面我列举的很多东西你将学的举步维艰。所以花几个周末去学学吧,比起编码还是简单的,学不会的原因可能只是因为你不愿跳出舒适区。

四、尾巴

上面这些就是我今天要聊的东西了,希望能对大家有所帮助。另外希望大家能持续关注我的从零开始仿写一个抖音App这一系列文章,因为这个项目就是我学习各种知识之后的练手之地,关注了之后大家就能与我一起成长了:)。

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

世界上有意思的事

关注下面的标签,发现更多相似文章
评论