灸哥问答|程序员在没有大项目或者复杂项目的时候应该如何提升自己的技术能力

灸哥问答|程序员在没有大项目或者复杂项目的时候应该如何提升自己的技术能力_第1张图片

这个问题实际上是很普遍的,并非每位程序员都有机会参与高并发、复杂业务场景的开发工作。在这种情况下,作为程序员,我们应该如何提升自己的技术水平呢?

在深入回答这个问题之前,我想先提出一个反问:你选择成为程序员是出于谋生需要,还是因为对这个行业充满热爱?由于个人目标和动机的不同,对于技术成长的追求也会有所不同。选择成为程序员意味着需要持续不断地付出努力,因为没有持续的努力,即使你接触到大型项目和复杂业务,也难以实现真正的能力提升。

现在回到本身的问题,基于我的从业经验,我想给大家提出以下建议:

1、创建一些个人项目来练手

开发一些小型的个人项目来练手,这里说的小型项目,不是说你拿一个课本中或者网络上的例子来依葫芦画瓢敲代码运行就可以了。而是切实尽可能符合常见的项目,可以是任何你感兴趣的主题。通过独立完成项目,你可以知道项目的全生命周期,从需求分析、方案设计、编码开发、测试部署、上线运行。

有几个建议细节给到你:

  • 关于选择小型项目,可以考虑一些相对典型的常见场景,比如搭建个人博客。你可以通过添加一些具有一定技术复杂度的功能,比如同步阅读数计数器、排行榜等,这样在你的项目中就可以把 Redis 很好地利用起来。进一步地,你可以通过添加可视化的阅读数据报表等功能,可以学会前端埋点和可视化图表的前端组件研发。这样的项目选择和功能扩展,不仅能够锻炼技术实践,还能够拓宽对多种技术领域的理解。
  • 项目的代码建议托管 GitHub,环境部署建议选择云原生部署,这个不用花太多钱的,只要买一台主流云厂商的 ECS 实例即可,应用的部署、容器化技术、中间件的软件安装等等,自己都可以尝试地去走一遍,但要记住走的过程中要有总结沉淀,最好能有文档记录。

2、对新技术要有持续学习总结应用的实际行动

在你确定的技术栈生态中,首先要对你的主程序语言、框架和工具要有深度学习和使用经验,在这个基础上,你还需要对生态中的新技术保持持续学习总结应用的实际行动。它不进可以扩展你的技术视野宽度,也能同步增强你在这个领域的技术深度。

我的建议细节就是,要么不学,要学就好好学,学就要写,写就要干,要明白你学习的是知识,不总结不用它不会成为你的能力,知识存储在脑子里是会被遗忘的,只有通过不断的联系让它成为你的“肌肉记忆”。

3、对基本算法和数据结构要有了解和掌握

这个没什么特别说的,因为现在很多公司的面试都有这个环节,同时算法和数据结构的掌握对于你解决复杂问题也是非常有帮助的,这方面的建议就是利用好 LeetCode,常去谢谢,看看自己的正确率。我到现在,偶尔手痒还是回去 LeetCode 上写点代码的,不过加入到这家创业公司之后去的时间少了很多。

4、对技术知识的学习要有体系化

互联网时代,学习的渠道、来源都太多了,有些人看知乎文章、有些人看 B 站视频、有些人听极客时间的音频、有些人抱着书啃。但从我的个人习惯和经历角度,我还是建议在学习之前,先用对自己的职业有充分了解,先明确你当前的职业对能力要求都有什么,用思维导图好好整整,当然这些网络上也都有,后面我可以分享出来我帮下属整理的知识体系。

拿着这个知识体系针对性的去补充学习,学习是一个以慢打快的过程,不能急躁,要有计划,不要怕自己差太多,一定要有聚焦,比如这个月我就学习 Redis,那就不要去加上对 Kafka 的学习,不然你坚持不下去的。

在学习渠道的选择上,我个人建议是书籍,这是我喜欢的方式,当然,现在 B 站的视频也是一个很好的学习渠道了。

5、想尽一切方法拓宽自己写代码的路子

这里的一切方法我能给到的一些建议比如参与到一些开源项目中去,当然如果你的能力还不够,可以找一些那种小型的个人的开源项目练手,这种开源项目的参与,可以让你学习到项目的组织和写作方式,能够从其他协作者那边通过互动的方式,得到反馈,获得经验。

其次就是通过阅读技术博客、参与技术社区,与其他开发者分析经验和学到的东西,看到他们好的代码动手谢谢,从模仿做起,这样有助于你扩宽视野。

最后就是阅读开源组件的代码,看别人写的好的代码,然后模仿着学,比如单例模式,去看看 Spring 中的单例模式实现,比如异常边界的处理,去看看 Netty 的源码,这些都是经典的。

6、总结反思自己沉淀属于自己的代码风格和能力

从学习、练手的过程中,不断总结反思自己,提炼自己的收获,总结自己的不足,不断去补足提升自己,可以开通自己的专题文档库、技术博客,把自己的总结写出来,分享出去,获得反馈。

以上是我个人给到大家的建议,这样你应该可以在没有大型项目或者复杂场景项目下,可以不断提升自己的技术能力。

你可能感兴趣的:(灸哥问答,程序员,程序员成长)