计算机从业者的技术成长学习之路

4,125 阅读5分钟

最近因为在学习一些新的东西,所以Android的东西没有怎么更新。趁着有些闲工夫,简单说说技术上的学习,也算是自己对这几年工作来的一个小结和经验吧。

英语

老实说,没有比英语性价比更高的,需要学习的东西了。靠着别人的翻译,或者机翻,终究不是办法的。笔者自己日语英语姑且算是熟练掌握的地步,但在初期直接看那些全英文的书籍,仍然会觉得头痛(谢谢HKUST虐我),但坚持下来就会发现其实计算机的英语还是有一个范围的,多看看熟悉起来,就会觉得并没有什么难,甚至比起很多翻译来说更容易看懂。

混迹GitHub就会发现国内的很多开发者英语上欠缺还是很大的,尤其是一些description和readme直接就上中文的。即便你英语渣,机翻也行啊。毕竟是计算机社区,英语才是通用语言。用中文去一些国外开发者的仓库里提issue或者回复也是一种很粗鲁的行为。

如果让我说一种对技术帮助做大的语言,那必然就是英语。有了英语,才能真正地独立学习。

Google

问小白问题之前,你Google过吗?如果让我看到一个开发动不动去搜百度,那我估计会武断地认定他很菜。其实Google是我们最好的老师,只要能正确把握问题的关键字,几乎没有找不到的答案,大部分会在StackOverflow上,其他散落在GitHub、博客等等地方。

如果你要找的知识实在冷门,比如react native的一些深入用法,android上的视频so阉割这种,那恐怕只能找找做这块的朋友或者自己研究了,国内有一些好心的开发者或许会分享在自己的博客。

至于科学上网,这个话题相关的技术太多了,请自行找方法,VPN也好,SS也好,都很简单,相对的投入和产出对程序员来说性价比是很高的。实在不想花钱的去用AWS的免费云服务器搭SS也行。

实践

看是没有用的。比如我看一篇关于Hybrid App原理的文章,或许它写得很好,但其实就算看完了,让我自己去写一个,或者讲讲怎么去做一个我们应用的版本,Android/iOS端通用的方案,最后也是支支吾吾说的不知所以。最后还是要去实践做一些Hybrid页面才能真正掌握,能说清楚这里面的原理和应用场景。

纸上谈兵终觉浅。

警惕体力劳动

当你的工作成为一种体力劳动,而自己无法从中获得新的体验和知识的时候,需要警惕究竟发生了什么。

  • 想得太少。对做的内容停留在完成的阶段,而不对更好的方案,实现细节去思考更多,比如用了某个API,会不会去仔细看看其究竟是怎么做的。或许你知道Handler,Looper,那你知不知道主线程的一切,四大组件的生命周期,各种View的触摸事件都是消息驱动,在mainLooper里面进行处理的呢?

  • 工作内容重复。当Focus在一块上太久之后,难免会碰到这种瓶颈,这时候可以看看是不是能换一块做,比如做做缓存、Hybrid、启动优化、视频等等。可以做的领域很多,实在发现兴趣不在此,换着做后台或者前端也行。如果因为个人原因,比如公司不让换或者可能工资会低很多,挤一挤时间在side project里面搞搞也不错。

  • 排期问题。发生在一些项目经理逼得特别紧,老大又比较无能的地方。项目经理为了向上面交待,对工程师说“这个进度能不能再压一下呀”,或者干脆直接不听工程师的意见强行缩短工期,导致没有时间去深入学习。老大明知这种情况,却睁一只眼闭一只眼。这种公司,还是离开为妙。

记录和总结

写博客是为了什么?

至少对我来说,写下的东西更多是对自己的一个总结和交待。如果我能写下来,至少能证明我有信心自己确实是这么去理解的,没有去坑人。另外,姑且也算是一种成长的足迹吧,偶尔自己还会去看看笔记。

分享也是目的之一吧,希望大家能互相进步,这样才能促进发展。

问自己

想清楚自己要的究竟是什么。

做全还是钻?想做一个超强并发量的后台?想黑别人的系统?想做出精准有效的推荐算法?还是想做别人能实际用到的产品?

笔者正是因为想要的是后者,所以成为了Android开发(为什么没有选iOS,大约是Android的开放性吸引了我)。而现在,因为发现自己欠缺的(对前端驾轻就熟,大部分的事情对我来说只是体力活,而自己想承担一个完整的项目却又不行),所以又重新拾起了Node.js,看起了ES6,思考设计和产品的问题。

希望大家都能想清楚自己想做的,要成为的样子。能自主地去学习。毕竟师傅带进门,修行靠个人。