java学习到了瓶颈期,要怎么样才能进阶?

Posted Lalalajtyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习到了瓶颈期,要怎么样才能进阶?相关的知识,希望对你有一定的参考价值。

这篇回答没有长篇大论的 Java 进阶学习路线推荐,作为纯靠自学获得大厂 offer 的过来人,给几点建议:

1、一定要动手实践

2、避免货物崇拜编程

3、提高系统设计能力

4、造轮子

5、深入学习,学会总结沉淀

当然也是需要扎实的基础的,例如先了解java的基础

1、一定要动手实践

学习任何一门编程语言非常重要的一点就是:“动手实践”。

如果没办法获得企业级真实的项目经验的话,你可以通过下面几种方式来做项目。

实战项目视频/专栏

在网上找一个符合自己能力与找工作需求的实战项目视频或者专栏,跟着老师一起做。

跟着老师做的过程中,你一定要有自己的思考,不要浅尝辄止。对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去深入学习。

实战类开源项目

Github 或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。


 

一定要记住: 不光要做,还要改进,改善。不论是实战项目视频或者专栏还是实战类开源项目,都一定会有很多可以完善改进的地方。

我在下面会详细介绍我们可以从哪些方面来优化项目。

从头开始做

自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。

这个要求比较高,我建议你已经有了一个项目经验之后,再采用这个方法。如果你没有做过项目的话,还是老老实实采用上面两个方法比较好。

2、避免货物崇拜编程

何为货物编程?

维基百科是这样解释的:

货物崇拜编程(Cargo Cult Programming)是一种计算机程序设计中的反模式,其特征为不明就里地、仪式性地使用代码或程序架构。货物崇拜编程通常是程序员既没理解他要解决的 bug、也没理解表面上的解决方案的典型表现。

简单来说,货物编程就是我们不明就理地使用各种框架/优秀实践(比如设计模式)/软件架构,最后把项目搞得像个四不像。

列举一些我身边发生过的实际的例子吧!

  • 看到一些比较火的框架就直接套用在自己的项目上,而不知道这个框架究竟能解决项目上的什么问题?是否适合项目?有没有什么风险?
  • 学习了某个设计模式/工程实践之后,不顾项目实际情况,刻意使用在项目上!
  • 直接复制从网上(比如 Stack Overflow )找到的代码,只要运行 OK 就好。
  • 看到一些比较火的概念就魔怔了,比如前两年开始爆火的中台概念。

3、提高系统设计能力

有哪些考察系统设计能力的问题

不论是面试应届生还是高级开发,系统设计能力是大部分面试官会重点关注的对象。比如面试官可能会问题你:

  • 如何设计一个 RPC 框架?消息队列?
  • 如何设计一个秒杀系统?
  • 如何设计一个排行榜?
  • 如何设计一个视频网站?有哪些需要注意的地方?(比如如何解决大文件上传问题、如何保证视频的安全性)
  • 如何设计微博 Feed 流?
  • ......

这些问题都是非常能够考验你的工程能力的,相比于理论性的题目,这种问题的细节点较多,要更难准备一些。

如何提高系统设计能力

想要提供系统设计能力,需要我们的刻意训练。那到底该怎么训练呢?

简单说说我自己的看法,欢迎大家补充:

  1. 多对你做过的系统进行复盘总结,思考一下这个系统有哪些需要改进/完善的地方。
  2. 多进行系统设计实战,比如你可以多问问自己:“如果让你去设计 xx 系统,你该怎么做?”。你最好把这个系统设计的过程记录下来,以便后续再完善改进。

系统设计不一定非要我们实际写代码去实现,系统设计好了之后,写代码并不是什么难事。我这样说并不是代码实践不重要,只是每个人的精力都有限,你应该把你的精力用在最值得你投入时间的地方。

4、造轮子

何为造轮子

在编程领域,你可以把造轮子中的“轮子”简单地理解为各种框架、标准库或者软件。

造轮子说的就是我们对现有的各种框架、标准库或者软件进行改进或者重新创造一个类似的。就比如说已经有了现成的任务调度框架,你自己又创造了一个更满足自己需求的任务调度框架。

不知道何时起,“重复造轮子”被大家看作是一个很傻叉的行为。我却不是这么认为的!在我看来,不论是对于个人还是公司,亦或是技术本身来说,造轮子都有其重要的意义存在。

虽然,造轮子很有意义。但是,有一点不可否认的是:我们在实际项目开发中,会从成本、稳定性、成熟度等方面优先考虑使用比较可靠的开源项目。

另外,我们不是每个人能够写出一个被广泛使用的框架或者标准库。这个需要坚持,也需要我们长期积累的经验。我认识到的很多优秀开源库的作者,他们大部分都是工作中遇到一个问题,现有的开源库没办法很好地解决,最后自己经过很长时间才写出来的。比如安全框架 sureness 的作者,自己在使用 shiro 的时候,不太满意,就花了 2 年多写了这个框架。再比如 sa-token 这个项目的作者公司的项目需要用到踢人下线、账号封禁等功能,现有的权限认证框架没有现成的功能,于是他就自己写了这个框架。

那造轮子会为我们带来什么呢?

为什么要造轮子

从个人角度来说

第一,造轮子能够非常有效地提高自己的系统编程能力。

我之前在搞懂了 RPC 的原理之后,就自己动手写了一个简单的 RPC 框架。我的 RPC 框架肯定是无法和 Dubbo 这类已经这么成熟的相提并论。但是,在自己去写 RPC 框架的时候,更加加深了自己对于 RPC 框架的认识。实现的过程中,遇到了很多问题,解决问题的过程中也提高了自己的编程能力。

第二,造轮子可以提高自己的影响力。

那我自己来说,我写的建议一个建议的 RPC 框架 guide-rpc-framework 虽然功能很简陋,但是,凭借这详细的 README 介绍以及清晰的代码结构还是被很多热爱技术的小伙伴喜欢。

职场人生|软件测试的伙伴如何迈过瓶颈期?


准确的来说不是做软件测试35岁之后怎么办,而是这个年代做任何工作35岁怎么办其实有办法也叫没有办法办法就是足够的努力30岁这35岁做准备,提升自己的技能来降低年龄带来的风险任何一个行业到了35岁都难,不仅仅是软件测试所以只能努力积累专业技能、人脉、提升管理能力、自我管理能力、演讲能力、做方案能力。

1、萌新阶段

初入软件测试行业,要成为一名合格的的软件测试工程师,需要学习的东西还是很多的。1)软件测试理论基础;2)测试用例设计、测试功能覆盖、软件测试项目实战应用;3)对业务的精准把握 、培养对bug初步处理和分析4)在长期的测试工作中,要培养敏锐的bug嗅觉;5)良好的沟通表达能力。

如果你连一个bug都表达不清楚,那就尴尬了。如果你不能与开发好好聊天,那也尴尬了。但此阶段,主要是功能测试为主,像用户一样去手工操作系统,模拟用户的使用场景 。所以不需要任何的编程能力,你都是可以胜任的。因此,软件测试的入门并不难。也因此,在软件测试岗位上,有很多非计算机专业的同胞一样可以优秀的胜任。

2、功能测试小司机

随着测试时间的增加,就需要掌握更多的东西来扩充自己的技术能力了。毕竟也只能刚入行的时候才能叫萌新啊。。。1)数据库操作:mysql、oracle等2)linux操作、环境搭建3)各种测试工具:抓包fiddler,wireshark4)从架构层了解被测系统、http通信协议、接口测试及其工具postman、soupui、jmeter等。5)app的专项测试、兼容性测试、易用性测试在这个阶段,会有一部分人成为小组长、小领导。主要工作内容就是分配组内的测试任务、把握和反馈任务进展、完成测试工作。在一些特殊的行业(比如医疗),可以逐渐形成业务专家。

3、自动化/性能/安全

中高级测试工程师具备测试能力与代码能力,提升测试效率与软件质量。以下以自动化测试为例来说明。1)选一门编程语言学习:java、python、ruby等2)了解自动化测试、自动化测试工具、web/app/接口/pc端自动化基础3)框架思想、项目实践与流程在功能测试岗位中做了几年时间之后,会开始焦虑。在工作中,感受到了成长的限制。除了业务越来越熟之外,工作就是点点点,其它方面没有成长。想跳槽想涨薪,但是很有挫败和无力感,因为全身上下价值就在这里。想在工作的过程中自学提升,迈向高薪的自动化测试、性能 测试、安全测试等。当然自动化测试工具也可以实现自动化,但是有好与坏的区别。第一道门坎就是编程!!引起了很多人的头疼。

非计算机专业的没接触过、计算机专业已毕业几年,早忘了。于是,又妥妥的成为新阶级的萌新。我应该把编程和自动化学到什么程度?我应该学到什么程度才能在面试中面上自动化测试?才能在工作中胜任起来?(性能 和安全通用)带着一脸懵逼的状态去自学代码、自学自动化。查到什么资料学什么。而招自动化测试的岗位,基本上都是要有实战经验的,没经验的直接咔了,或者转功能测试岗。在这个过程中,有些人放弃了,有些人经历了一两年还在挣扎中,有些人机遇来了上了这趟船。但一旦上了船,就打开了新世界的大门,可以扬帆起航走的更远;而且,在开发同胞的眼中,你作为测试的地位绝对上升不少。

4、测试开发/性能、安全测试专家(必须会编程)

高级测试工程师——测试开发,具备测试能力与代码能力,提升测试效率与软件质量,可以做开发,又可以做测试。要求比较强的开发能力,深入代码层。一般不直接参加测试工作。1)对测试框架、测试工具的二次开发,更好的符合公司产品的测试要求;2)开展单元测试或者协助开发开展单元测试,从开发阶段就开始把控产品代码质量。在后续迭代过程中快速挖掘问题;3)开发测试工具和平台,为测试团队提高测试效率,各种测试的简化、测试结果的量化。比如性能测试平台、接口测试平台等。

5、测试经理、主管 -----技术与管理并存、能与开发抗衡、能服众此处省略几百字。35岁之后,你应该已经是VP,或者测试leader了,所以在35岁之前,为测试管理岗或者测试技术岗而去奋斗吧!!

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:伤心的辣条 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

学习不要孤军奋战,最好是能抱团取暖,相互成就一起成长,群众效应的效果是非常强大的,大家一起学习,一起打卡,会更有学习动力,也更能坚持下去。你可以加入我们的测试技术交流扣扣群:914172719(里面有各种软件测试资源和技术讨论)

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!


好文推荐

转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!

面试经:一线城市搬砖!又面软件测试岗,5000就知足了…

面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…

什么样的人适合从事软件测试工作?

那个准点下班的人,比我先升职了…

测试岗反复跳槽,跳着跳着就跳没了…

以上是关于java学习到了瓶颈期,要怎么样才能进阶?的主要内容,如果未能解决你的问题,请参考以下文章

职场人生|软件测试的伙伴如何迈过瓶颈期?

JAVA进阶架构师指南之一:如何进行架构设计

程序员的瓶颈期你感受过吗?Java不排斥大龄的,它排斥没技术的~论44岁大龄女程序媛收到外企offer是怎样的体验?

PythonJava程序员学习Python—为什么学习Python

如何高效的学习Java开发,这些坏习惯千万不要犯!

Java软件工程师一般要学习哪些课程?