高手勿进!写给初中级程序员以及还在大学修炼的“准程序员”的成长秘籍

1、不要畏惧英文

互联网上很多优秀的技术资源和社区的内容都是英文,如果畏惧英文,就没办法从中汲取富有营养的知识,也没办法跟上技术的发展潮流,那么技术能力就会很难再上一层,技术的眼界就会受限,所以需要去突破语言这关。

A、从改变语言环境开始

你可以将手机、电脑、平板、各种APP的语言设置为英文,让自己的平时习惯都处于英文环境中,慢慢的去适应。

B、用英文开始入侵

将你的每天的一些想法用英文记录下来,将一些使用中文记录的日常替换成使用英文来记录。然后慢慢的尝试完全用英文写一篇文档。

C、阅读英文技术文章和文档

尝试去阅读英文文档或者翻译英文的技术文章,哪怕是借助翻译工具,这样不仅仅能开阔技术视野,还能让自己进一步的适应英文环境,接触更多的生词和专业术语。而技术文章或者对应的技术文档中会出现该技术的一些专业术语。

D、进一步学习英语

大学四级六级没过,并不能阻挡你继续学习英语。一门额外的语言技能可以很好的助力职业发展,可以利用一些英语学习工具和学习教程,根据自己的情况来制定目标和学习计划。

2、善用工具

除了平时开发工作本身的工具来提升开发调试的效率之外,分享一些其他的工具,这些工具不仅仅可以辅助开发工作,对于个人其他方面的成长提升也有帮助。

A、科学上网

前面说到互联网中很多优秀的技术资源的内容都是英文的,这些基本上都需要科学上网的工具才得以访问,所以要学会使用科学上网工具,透过它访问国外的各个技术社区和资源平台,接收到最新的技术资讯和学习资源,探索更宽阔的世界,关于这点就不过多讲述。

B、Google搜索

在平时的开发工作中如果遇见了问题,经常会使用搜索引擎来搜索问题,使用Google搜索引擎搜索问题,其搜索结果的丰富性和准确性都要远超越其他搜索引擎,但这个也需要借助科学上网的工具来使用。很多技术问题大都数前辈都已经踩过坑,但也基本上都是发布在国外的技术社区中,国内的一些搜索引擎都是抓取国内的内容,不仅仅重复冗杂质量低,还不少广告。

使用搜索引擎也是有一定的方法和技巧的,可以有效的提高搜索问题的效率和精准性,关于这部分的内容请参见下面的 #提升搜商

C、Grammarly

这是一款英文写作辅助工具,拥有英文语法错误监测功能,如单词的用法、语句的搭配等。能够在英语写作或学习时进行更好的提升,从而有效提升写作效率。使用 Chrome 插件可以在网页的文本输出框中检测你的英文语法错误,像在 Github 上进行 Code Review 时需要留下英文的 Comment,那么试试它,相信你会爱上这款工具。

D、Deepl

在用 Google/有道翻译?来用用这款翻译工具,DeepL是一款基于机器学习和神经网络技术,并支持多语言的翻译工具,翻译会比其他翻译工具更加的贴和日常当中的语句。多有贴近?可以看看下面例子的对比。

PEOPLE MAKE A lot of noise. Cars rumbling along streets, planes roaring overhead, feet slapping the sidewalk—these and other actions create countless tiny vibrations in the ground. A global network of seismometers registers those oscillations 24/7. But since world leaders have urged citizens to stay home and maintain social distancing to slow the coronavirus pandemic, the hum of daily life has quieted.

这是一段有关于新冠的新闻。

下面是 Google 翻译的结果:

人们发出很多噪音。汽车沿着街道嗡嗡作响,飞机在头顶咆哮,双脚拍打人行道,这些动作和其他动作在地面上产生了无数微小的振动。 全球地震仪网络记录这些振荡24/7。 但是,由于世界领导人敦促公民留在家里并保持社会距离,以减缓冠状病毒的流行,所以日常生活的嗡嗡声已经平静下来。

这是 DeepL 翻译的结果:

人们制造了很多噪音。街道上隆隆作响的汽车、头顶上轰鸣的飞机、拍打人行道的脚步,这些行为和其他行为在地面上产生了无数微小的振动。全球的地震仪网络24小时不间断地记录着这些振荡。但自从世界各国领导人敦促公民呆在家里,保持社会距离,以减缓冠状病毒的流行,日常生活的嗡嗡声已经安静下来。

“全球地震仪网络记录这些振荡24/7。” 与 “全球的地震仪网络24小时不间断地记录着这些振荡。” 这两句话的差异就能体现 DeepL 更能贴合日常。

如果这个差异不能体现,那么试着翻译下面这句:

货拉拉不拉拉布拉多!

Google 翻译结果:

Labrador, Labrador!

Deepl 翻译结果:

Cargo puller does not pull Labrador!

哈哈,是不是很因吹斯挺?!

E、Miro/ProcessOn

善用思维导图工具梳理和呈现脑中的思路,也可以用来去构建自己的知识图谱。

ProcessOn是一个国内的在线画图工具,支持流程图、思维导图、原型图、UML图等图形的绘制。

而 Miro 则是国外的一个在线协同白板平台,最大的特点就是用无限白板来自由组织和编辑元素,比如内置的形状、文字、连线、便签等,除此之外,它还支持创建思维导图、看板、图表,以及 iframe 嵌入、网页截取。还可以安装 App,来插入诸如谷歌文档、Dropbox 等等。

这两款工具的共性与差异性其实能从官网的介绍中就能明白,可以根据自己的需求来选择。如果你偏向于脑暴、自由发挥组织那么可以选择 Miro,但是 Miro免费版只支持 3 个画板,私密分享、高清导出等额外的特性会受限,但是免费版对于个人来说已经基本上是够用了。如果你更习惯于用 xmind 这类的软件来梳理和构建知识图谱,那么可以选择 ProcessOn,它可以发布自己的模板来获得收益,也可以将自己的读书笔记,分析亦或是经验流程图公开上传,学习交流。

欢迎读者在下方评论区说说自己觉得很好一些工具。

3、学会正确的提问

在平时的开发工作或者学习中遇见问题是很正常的事情,但是遇见问题的时,不要随便或者立即问其他人,要学会独立解决问题。先利用搜索引擎搜索一下,大部分的问题其实都能在搜索引擎上搜到,以免浪费大家的时间,另外,问题代表着突破自我的一个机会,给自己一定时间努力的去解决它,每一次畏惧就是一次退步,每一次突破就是一次积累。在尽力解决但无果的情况下,再考虑寻求他人的帮助,但提问的方式是有一定讲究的,因为不正确的提问浪费的是你和帮助者的时间,无法高效率的解决现有问题。常常在社区或者技术群里能看到一些这样提问:

你(有人)用过 xxx 吗?

xxxx 操作抛出问题,该怎么解决?

xxx 进行 xxx 操作,为什么不行?有人知道吗?

此时,[黑人脸+问好号.jpg]。

这里大家可以阅读下《提问的艺术》这本书,这是一本教你如何通过富有技巧性的提问来提高沟通效率并提升自身影响力的书。

Github 上一些开源项目会有 Issue Template,最主要的目的也是让提问者更仔细的去描述遇见的问题,让维护者更容易明白以及给出帮助。

4、多参与技术大会

参与技术大会并不是为了能在现场掌握多少知识或者在朋友圈“凡尔赛”。

A、开阔视野

开发者大会的内容一般都是技术的发展趋势、行业的动向和解决方案。比如如何做的技术拆分、如何进行架构设计、如何通过技术解决业务问题、一些技术会向什么方向演进等等。所以开发者大会对于开发者来说是开阔视野和获取思路的途径,不至于自己闭门造车。对于参会者本身来说也需要一定的技术积累,不然大会的内容可能不容易吸收。

B:社交活动

参与大会的人基本上与你都是同样的岗位或者相关的岗位,从大会的另个角度来说,这是就是一场社交活动。而社交则是可以给自己来带来潜在的机会,比如新的朋友、好的就业机会、兴趣相投的人、与业内大佬更进一步的机会。这些都是可以在大会中自己去捕捉的。

大家可以阅读下勾三股四的《我对技术会议的一些看法》,这里面对技术会议有一些更详细的阐述。

5、开始项目的复盘

有回顾、归纳、总结,才有成长。通过回顾项目以往的处理细节,一些技术方案的产生的实际效果如何,怎么进行衡量,对比之前的项目,哪些技术方案在特定的场景中更为有效,看看是否还留有技术债,项目中每个知识点是否都已熟练掌握级运用,项目的流程和质量是否有进一步优化、提升的空间,如何在将来做得更好。

A. 回顾

  • 最开始项目想要达到的目标或者意图是什么?
  • 预先制定的计划是什么?
  • 预选设想要发生的事情是什么?
  • 项目的实际情况与预想的差异?

C.归纳

  • 设定几个维度去划分整个项目,具体的业务是否可以分类进行整理?
  • 每个技术方案的效果和业务场景是否有特定性和通用性?
  • 技术方案效果的评估可以用哪些数据指标来进行衡量?
  • 哪些有待提升和注意的地方?
  • 有哪些做得好的地方?

D.总结

  • 项目的整个过程中学到了什么?
  • 做的好的地方如何保持?
  • 做的不好的地方如何提升?
  • 解析来可以做什么?

项目的复盘不仅仅可以让你再学习一次,为之后的项目做更好的服务,在你更新简历的时候也不会为写些什么或者没有亮点而发愁了。

6、主动分享

分享的表达方式是多样化的,可以是文档的方式,可以是会议的方式,不管以什么方式,主动分享、积极参与分享在整个成长的过程中也是很重要的一环,这一能力是很多人都欠缺的。对于文档,偏向于写作表达,对于会议,就偏向于语言表达,无论哪种表达能力,都是在向你的受众表达你的意图和内容,越强的表达能力,受众就能越完整清楚的明白所表达的内容,感受到内容的真实性和你的主张。

好的作家,一段文字就能让带着你去向远方。

好的导演,一段视频就能给你身临其境的感受。

他们都是在进行表达,而分享就是锻炼表达能力的一种。在你准备分享的过程中,你会去论证并确认分享的内容,这让你更加严谨。分享内容还需要进行归纳分类,层层递进,这让你思维更加清晰有逻辑。分享的时候还需要调动受众的情绪或者使其受你感染,支持你的主张,这让你更能把控现场,更有气场。分享锻炼的不止表达能力,一场成功的分享是多种优秀能力组合使用的表现。

所以,不管是一份技术文章或文档,还是一场内部的技术分享,只要是一次分享,就主动积极的去参与吧,多次分享后,你会看到自己与之前不同的地方。

7、主动规划你的职业生涯

这世界上一部分人是因为兴趣使然,选择了自己的职业和发展道路,这是很幸运而美好的,因为兴趣是可以给自己正向反馈的,但是有很大一部分人并不是也不能根据兴趣来优先选择,因为没有那个机会或者资源支持,只能被动的选择,就像有一部分转行进入互联网的开发者,其实之前的职业他们并不喜欢,转入互联网行业也只是因为高薪。但高薪相比之前只是一时的,如果不主动的去规划自己的职业,那么一段时间后将会遇见瓶颈,各种迷茫和焦虑就会随之而来,可能会发生再次转行的情况。不能根据兴趣来选择自己的发展道路,这不是最糟糕的,最关键的是要主动的思考,规划自己的职业,这样才会让道路更清晰,自我发展的曲线才会尽可能的符合预期。

8、不断学习提升

我自己做Android开发已经是第8个年头了,见证了太多人的起起落落,印象很深一个同事,跳槽阿里薪资直接double,但也看到很多人镀着“大厂”的金四处碰壁,终究还是倒在了技术上!

以下分享一下我几年来具体的学习路线及笔记文档,希望能帮助到有心提升技术的朋友!

以下完整学习笔记PDF,点击这里免费下载获取

  • 架构师筑基必备技能

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

架构师筑基必备技能

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

设计思想解读开源框架

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

1、设计思想与代码质量优化

2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化

3、开发效率优化

  • 分布式版本控制系统Git
  • 自动化构建系统Gradle

4、项目实战

  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践

360°全方位性能调优

  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

本篇知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析

Android框架体系架构

  • NDK模块开发(音视频系列)

NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

本篇知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

NDK模块开发

  • Flutter学习进阶

2019 年无疑是 Flutter 技术如火如荼发展的一年。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

本篇知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门

Flutter学习

  • 微信小程序开发

微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

微信小程序开发

  • Android相关源码解读
    只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

Android相关源码解读

Android相关源码解读部分内容

由于篇幅原因,如有需要以上完整学习笔记PDF,可以点击这里免费自取!!

猜你喜欢

转载自blog.csdn.net/Androiddddd/article/details/114538227