既然聊到,索性整理了这篇文章。由于本身也是从一个普通的开发人员过来的,站在个人角度,聊一聊职业或者工做生涯中的一些困惑。由于我的技术栈的缘由,这里只举 Android 端的状况。那些大牛程序员不按套路出牌,不在讨论范围。程序员
其实须要恭喜你,当你意识到遇到了技术或者发展的瓶颈,感到比较困惑时,代表你来到了工做或者职业的一个分界点,一旦突破瓶颈,你又会达到另一个境界。这个很像长跑,长跑的人在跑步的过程当中都会出现几个极点。到极点的时候你会以为腿特别沉,虽然有力气,可是就是感受抬不动腿。通常的人可能到了极点以后就放弃了,可是有经验的人到了极点后,他会慢慢的调整,突破这个极点。突破以后,跑步就变成了一个机械的过程,甚至不须要去关心是否有在用力,整个腿步肌肉会自动带着你往前跑。也就是说,这时候达到了另一个境界。算法
不管是工做仍是人生,咱们的成长过程就像是在不断攀登一座巨大的山峰。若是山脚表明你出生的那一刻,那么山顶表明你死亡的那一刻。而你遇到瓶颈的时候,犹如你爬到了山峰的某一层,你发现彷佛没有能够攀爬的地方,没法再往上。每一层都会有不少人,你要作的就是利用你以前的经验、知识、认知,去发现你的落脚点,爬上去。这时候你就又达到了一个全新的高度。数据库
因此,遇到瓶颈不用太慌,你甚至应该为即将碰见全新的本身而窃喜。canvas
遇到瓶颈后的困惑是天然的,大部分是由于不了解产生瓶颈的缘由,当你了解了以后,一切也就那么回事。设计模式
程序员,通常会经历几个瓶颈(时间段):安全
这个阶段刚刚学校毕业,带着书本里的知识,投入到了工做当中,除了一些研究性的工做,大部分的工做会跟着产品的业务线走。这时候你会发现不少东西和学校里学习的有很大差异。这时候的瓶颈,是实际工做经验的缺少。可是突破的方法也很简单,学就是了。难度也不大,由于这时候的你,应该是学习速度最快的时候。对于不少的业务内容,和书本的知识不太同样,会有很强的新鲜感。书本更多传授的是理论知识,而公司的项目和产品要解决的大部分是工程问题。这是一个能够充分把理论的东西结合实践的阶段,你终于发现了学校里学习的那些东西的真正用处。性能优化
通过了第一个时间段,若是产品自己比较好,基本上移动端 Android/iOS 的边边角角都会涉及到。UI、网络、数据库、安全、适配、性能优化、第三方库的使用等等。这时候的挑战会慢慢从技术上变成项目管理上。由于这个时候你对业务比较了解,不少的技术也基本掌握了,会天然的承担部分项目管理的角色。这会是另一个挑战,从跟机器打交道变成了和人打交道。这时候考虑的不必定是要把某一块技术作的多好,而是须要综合各个业务,达到项目总体上的最优。微信
好比项目的前期,时间是第一位的。首要的任务是如何在最短的时间内产出最小可行性产品(Minimun Variable Product:MVP)。质量和代码的架构重要性就会相对变低。最主要的是考虑如何最快的把产品推出去。可是,等 MVP 验证经过后,就须要不断迭代,一方面优化功能,一方面须要偿还以前快速开发欠下的技术债。网络
作了不少的产品,项目管理也作过了。这时候会面临几个抉择,继续作技术仍是转管理,仍是拓展其余的职业。对于那部分技术上想要继续深刻的同窗就会有这种困惑。由于作了不少的项目,或者在摸个产品或者项目中作了不少的功能,大部分的知识点都覆盖到了。可是因为平时主要仍是围绕业务展开,因此潜意识里是解决了what的问题。好比数据库会选用 GreenDao,也会使用 SQLite,网络会使用 OKHttp + Retrofit,图片会使用 Glide 或者 Frasco 等等,这个阶段不少的时候咱们会由于业务二陷入怎么用的阶段。这也是为何你们以为好像各个方面都懂一些,可是深度不够的缘由。怎么突破,须要去了解它是如何实现的,有哪些小的功能模块组成。架构
了解的时候不要贪多,有一句话形容一些读书人:买书如山倒,读书如抽丝。一样也能够形容开发对技术的态度。不能想着这也要了解,那也要明白。一我的的精力有限,就像作产品,须要找一两项核心的功能去深刻打磨,而不是全部的功能都作一遍。
怎么去找那个点。根据本身的爱好。一句话,你对哪方面感兴趣,或者目前你擅长哪块,就深刻下去。
举个例子,有的人喜欢 UI,那么布局,动画,事件这些基本的东西确定是了解的。这样的话就是属于第一个阶段了。第二个阶段,你须要关注一些自定的 UI ,须要了解 View 的绘制过程,熟悉canvas,熟悉paint,对于一些比较有意思的 UI ,可以仿写。开始关注性能方面的东西。如何可以减小绘制次数,如何减小内存使用等等。第三阶段,就要从源码入手,去了解背后实现的原理,好比 TextView 究竟是如何实现绘制在屏幕上的,都作了那些优化。通过这三个阶段,基本上 UI 相关的东西就没有什么可以难倒你了。
在第三个阶段,虽然看似只在某一个点深刻了解,可是须要补充不少相关的边缘知识进来。好比说设计模式,GPU 的工做方式,算法等等,这个过程也就完成了从点到面的扩展。相信突破这个瓶颈,跟别人聊起技术,不再会以为本身仍是那个什么都懂一点,又好像什么都不够深刻的工程师了。
这个阶段,就须要考虑的更加长远。是继续往技术方面深刻,仍是考虑其余方面。技术方面,好比全栈、技术经理、架构师、技术总监、CTO等,管理方面,好比项目经理、团队Leader 等,其余如产品经理、产品总监等等。
遇到瓶颈,说明你知道了本身不知道。不少的时候,咱们的悲哀不在于不知道,而在于不知道本身不知道。
雅典人说,苏格拉底是雅典最聪明的人,他什么都知道。
苏格拉底说,「我惟一知道的就是我不知道,而大家也不知道,可是大家不知道本身不知道。」
当遇到瓶颈,知道本身不知道的时候,也是提高本身,让本身知道的好机会。跨过去,美好的风景在等着你。
完!
想获得及时信息,欢迎关注「ibrothergang」微信公众号。