作为diycode社区管理员之一,表示还没好好推荐下diycode社区,有点惭愧。今天来宣传一波,https://www.diycode.cc,是一群爱好分享的工程师发起,属于非盈利性组织。点击原文,可以直接访问。diycode的apk也已经公测。可以直接下载。每天都有我们认为高质量的干货share在这里。今天这个问题是diycode一年前有同学发起的问题。干了四五年Android 开发了,如何突破成长中的技术瓶颈期?,这个问题放到现在也是非常值得深思。
干了四五年Android开发了,感觉做App几乎没有什么技术门槛越来越像搭积木了,现在每天都特别烦恼和焦虑,感觉自己遇到了非常大的技术瓶颈了!而且做很多事情都很难获得成就感!
想知道有小伙伴也和我一样遇到技术瓶颈期的么?你们都是如何解决的呢?
补充,其实不仅仅是技术的瓶颈期,感觉工作,生活都处于这个状态之中!!
yasic · #1
这是我在知乎的收藏、没事就看看反省一下
ServiceManager、ActivityManager、packageManager 、*****Manager 都弄懂了?
Binder 也搞清楚了?
IPC 也弄明白了?
FrameWork 层的每个类都折腾了?
Hook 会玩了?
各种 SystemService 也知道怎么运行的了?
View 的渲染你明白是怎么回事了?
Intent 是如何实现 Activity、Service 等之间的解耦合的?
单元测试会写了?Monkey 能跑多长时间?性能测试通过了?
ClassLoader 和 DexLoader 会玩了?
Context 是个啥你也知道了?
权限机制也弄清楚了?
触屏事件的分发呢?
Handler 、Message 和 Looper 是怎么跑起来的?
如果上面超过一半的东西题主还没有弄清楚,洗洗睡,明天早点起来看书。
tangtao316 · #2
仔细看了下楼主的问题,感觉问题的关键不在于技术瓶颈。
1. 考虑清楚自己的职业规划
也许你根本就没有你想象的那般热爱技术,也许你只是想多挣钱让家人过上更好的生活,刚好技术还有那么点意思也能有份体面的收入,如果你的问题不是提高技术能解决的,那一切都白费。
2. 全面与坦诚的剖析自己
就技术而言,你目前在哪个Level,有哪些薄弱的地方,基础是否足够牢固,也许身边开始有不少人喊你大神,那只是虚名而已,不要自己欺骗自己。可以的话,建议去一些不错的公司面试看看,即便你不是为了换工作,能更清晰的让你了解自己的水平,在业内是一个什么层次。
3. 制定合理的学习计划
知道哪里不足,就要制定计划,坚持学习,你的不足也许是英语(这个真的很重要),也许是不好的技术习惯,也许是计算机基础知识,也许是Android某些知识的理解,总之可以有针对性的制定合理的学习计划,学习完了之后务必要及时总结,可以是读书笔记,可以是博客文章。
4. 着眼于要解决的问题,而非技术本身
我见过很多同学,看起来技术热情很高,一直研究各种新技术,但总是忽视对公司与团队业务的贡献,学习到的东西也不能落地,这有点本末倒置,我们应该首先关注于公司团队业务,更多思考如何以技术的角度,给业务做出更多贡献。抱着这样的思路,其实你往往不会再纠结于自己是否是一名Android开发,是的,我们是工程师,是要解决问题的工程师,至于需要怎样的技术来解决问题,并没有那么重要。我所见过的最优秀的工程师,都不会局限于Android技能,但往往他们在Android这块的研究都非常深入。
5. 也许可以换个环境
上面提到的,更多是自我突破,但更多时候,我们往往陷入温水煮青蛙的困局,很难从舒适区跳出来,如果你没有足够的毅力与坚持,我建议换个环境,在一个更优秀的平台中去,与更优秀的同事一起共事,成长会比你想象得要更快。
colorfulcat · #3
感觉楼主应该是只是在做项目的过程中积攒了很多技术和经验,还没有深入到Android开发的某个领域里面去研究.无论是生活还是工作,都需要把精力投入进去,深挖精髓,也许可以达到更高的水平,有更广的视野。
loonggg · #4 ·
同理,其实到这个份上,工作三四年如果一直在舒适区技术遇到瓶颈是难免的,跳出去看看吧,世界还很大,焦虑也很正常,说明自己还是有进取心的。别光焦虑了,行动起来,重新认识自己,查漏补缺这是老师经常说的,其实自己也应该多自己查漏补缺。舒适区就跟井底之蛙一样,所以世界那么大,出去看看吧。相信能提高自己。
lfkdsk · #5
我觉得不能只为了Android一方面而进行学习,计算机科学内容十分驳杂,但彼此之间都有互通之处,Android只是其中很小的一方面,应该为了整体的知识水平去学习。这样无论是Android也好还是其他也好,都能有所提升
stay · #6
这个问题从前天就想上来答了,一直木有勇气。10年毕业,大四开始学java,也培训过,顺利从物理老师转成了做Android。期间也断断续续的学过其他语言,但基本上都是做Android。
我觉得视角受限可能是焦虑根源。
一方面技术更新太快,即使有心去追,但没有实践环境,连踩坑的机会都不给你,更别提解决问题的经验了。比方说hotfix,react native。
另一方面楼主更多提到的是技术的瓶颈,可能还没涉及到管理。没有冲在一线去跟产品,后台,运营'撕逼'。对业务没有参与感也会没有成就感,你只觉得自己在搭积木,而不是在做一款有意义的产品。
我也时常会有这样的体验。觉得自己技术太腊鸡。技术哪来的瓶颈,那是实用主义者的借口。上至设计思想,下至底层原理,掐在中间当然觉得自己有瓶颈啊。因为底层实现被封装,对调用者不透明。而设计思想又体现在整体的架构上,对一块一块搭积木的人也是无感的。搭积木确实不难,但每一块契合的积木如何生产出来,以及最终要搭建巨塔。可能知道的少之又少。
没有具体实施的方案,也是焦虑的原因。我要如何提升技术?走底层一定就行?如何走?要不要学习其他语言?周期是多久?回报率是多大?这些都是你技术delay的原因。这也是实用主义者的借口。
其实我也没更多建议的。能意识到自己的焦虑,并想办法去找解决方案,本身已经是一种进步,至于你要选择哪一种实践。那肯定你是集各家之言综合自身情况最优解。
很多人都在讲,学着学着---》往底层发展,才有更高的造诣。作为一名普通开发者,在这个时段的我,觉得:一步一步的理解面向对象的设计理念更为重要。很多的解决问题的手段都来源于现实生活。如果各位时间充足的话,好好深入研究下常用的开源库。
d_clock · #7
隔了这么久再来看这个帖子,感慨挺深,想说说自己当下的状态。我在公司里面做Android开发差不多2年了,不能说100%完全体会到老前辈那种感觉的,但我自己也会有类似忧患感。有好多个日夜曾经都在想我在做的工作大致都是那几样,想往上再提升好像挺困难的,那我再过一两年怎么办啊?一生只能这样了么?经过很多次思考和整理,我自己是想一生都走开发的道路的,所以自己定了一个大的主线目标,就是成为T型开发者。
所谓T,就是一横一竖,横代表广度,竖是深度,我希望自己在Android开发这个领域能有深度,但是思维和见识不限制在Android上。因此,我会找一些框架去看代码,学习人家如何解决问题和优雅的写代码技巧,会去学习服务器方面相关的知识,拓宽一下自己平时搞开发时候的思考方式。这样带来的好处是,我能更好理解,为什么这些放在服务器完成比较好,这些应该客户端处理比较靠谱。以上是目前的一些想法,各位大牛觉得不妥,可以交流指点一下。
另外想说一点别的感受,关于学习提升的,下面这草图X轴代表着时间,Y轴代表着技术实力,蓝色的点代表着关键点。
向上的直线表示随着时间提升技术实力也跟着提升,这是顺畅期。到了蓝色的点开始就是瓶颈期的开始了,时间在推移,但是技术没怎么长进,这是瓶颈期。这段时间就需要开始思考解决自己的瓶颈问题究竟在哪,争取早日突破,到达下一个蓝点,也即当前瓶颈问题已经解决,达到下一个提升阶段。我觉得人的一生很多时候,都在周而复始这个过程:提升,遇到瓶颈上不去了,解决瓶颈又上去了,提升。遇到瓶颈期,我会不断的提醒自己:
我需要时间积淀,欲速则不达
保持好心态,调整好心情
相信自己可以的
jack_xp · #8
android 3年,也是楼主现在的感觉,经常容易焦虑,失眠,而且现在的年轻人顶着买房,买车,结婚的压力,技术更新也如此快,真的很容易焦虑,但是看过罗升阳的博客,基础的东西总是不变的,上层的思想总是基于底层和基础的东西来变化的,所以以前大学时老师说基础很重要,这个确实是真的,感到迷茫的时候就想出去走走,或许能改变一些想法和观念,总之人生会面对许多的考验,要做许多难做的选择,没有什么建议,只是说说自己的想法,人生没有过不去的槛,我们总能跨过去的,生活总会对你微笑的
roxas · #9
问题不在还有多少技术没弄懂,如果仅仅靠“不捣鼓明白就去看书”来驱动你的学习,将会非常被动,也会是无底深渊。
问题在于“追求”,如果你觉得现目前android开发就像你说的那样“搭积木”,那么你可以转行或者跳槽了,出去看看,拓展追求。
我一直相信需求驱动技术,这是一种被动的“追求”,需求越复杂,追求就越高。“搭积木”的难度也就越大,你现在需求太弱了。
还有一种主动的追求就是自省,我做到最好了吗?这是最优解吗?“和谐”,“高效”,“智能”,“稳定”,我的团队做到了吗?
只有当你的追求和能力不符时,才能叫做瓶颈,学习是唯一突破瓶颈的方式,这时候你才有目标有动力,因为你有追求了。
第一时间获得【不止个人原创 android/音视频技术干货,问题深度总结,FrameWork源码解析,插件化研究,FFmpeg研究,直播技术,最新开源项目推荐,还有更多职场思考】,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码