技术菜鸟如何提升自己的能力
这个话题源于昨晚和知识星球里一位同学的沟通,案例大致背景如下:
本科软件工程专业,3年测试经验,历经两家公司。
当前岗位是测试工程师,业务和技术占比9:1,加班较多。
学了一些技术课程,但工作中技术实践不多,个人比较迷茫。
希望能提升自己的技术水平和专业能力,但不知道从哪里切入。
老实说,这是很典型的一种情况,很多刚毕业不久的互联网职场新人都会遇到类似的问题。想提升自己的专业能力,获得更好的发展空间和更高的薪资待遇,但苦于不知道如何提升。
这篇文章,分享一些我个人对于职业发展规划的理解,以及提升个人能力的经验之谈。
首先,要承认成长是一个比较长的过程,而非一蹴而就的事情。
成长是什么?我个人认为成长的三要素是技术+经验+心态。技术是解决问题的手段,经验是对解决问题过程的抽象总结,心态则是遇到问题后的应激反应,或者可以理解为看待问题的角度。
技术的获取和熟练,需要不断的学习实践,才能形成自己的知识体系。应用技术解决问题的过程和结果优劣,最终经过复盘思考总结形成了经验。知识体系+经验,会不断修正个人面对问题时的心态,最终会形成自己的思维逻辑体系,或者称之为方法论。
其次,职业发展规划并没有标准答案,也没有适用于所有人的模版。我个人的理解,职业发展规划如何制定,取决于你想要获得什么东西,你想成为一个什么样的人。
比如你想成为一个销售冠军,那除了专业的销售方法和对产品的了解,你还要具备很强的同理心以及沟通交流谈判能力。再比如你想成为一个技术管理者,除了技术深度,你还需要具备一定的技术广度以及基于这两项之上的技术前瞻性和技术架构设计能力。除此之外,团队管理、目标制定、协调沟通等能力也是你必须具备的能力,这些因素缺一不可。
先想清楚自己想获得什么东西,自己要成为专场或者专业领域内的什么人,再考虑职业规划也为时不晚。当然,不建议一开始就制定很宏大的目标或者很高级的职业Title,这样很容易成为又一个伤仲永的案例。
最开始不妨先制定一个短期内更容易实现的目标,在成长过程中随着个人认知的提升不断修正这个目标,进行延续性的改变,这是更适合普通人的一种个人成长和职业发展规划制定方法。
回到技术话题上,如何从技术菜鸟成长为一个技术大佬?
以上述案例为例(业务和技术占比9:1,其中仅占10%的技术工作,仅是便编写和维护自动化测试脚本,且测试数据写死在测试脚本中),以自动化测试为切入点,下面是一些提升技术能力的经验之谈。
- 自动化测试首先要做到数据和脚本分离,管理测试数据的方法有很多,比如参数化文件(Excel),配置文件以及通过数据库管理数据。解决测试数据管理问题,过程中要学习如何设计表结构,测试服务访问数据库需要用到一些DAL工具如Hibernate、Mybatis或其他ORM框架。
- 自动化测试最起码需要能自动执行,这个时候就需要考虑持续集成如何实现。最基本的Jenkins如何配置,要实现多个测试任务同时执行,就需要了解Pipeline流水线的构建。再进一步的持续集成流水线,需要能监听到代码的变更和发布然后自动执行自动化测试任务。
- 更进一步来说,要很好的构建持续集成流水线,需要对代码分支命名规范以及代码版本进行管控,这就涉及到了代码仓库如Gitlab和版本管理工具如Git。要将自动化测试任务融入持续集成流水线,还需要合理完善的研发测试流程,这时候测试可以推动研发质量流程和代码管理规范。
- 如果团队规模变大或者业务规模更大,就需要自动化测试平台来进行统一的任务管理,而开发自动化测试平台,就需要梳理团队对自动化的需求、设计原型图、开发自动化平台。这个过程中,自动化测试服务需要注册到注册中心,一些参数文件需要维护,这个时候会顺带了解和使用配置中心和注册中心,比如Apollo,Nacos。
- 再扩展,就会涉及到缓存、消息队列和分布式任务管理的范畴,进而了解和使用Redis、MQ、XX-Job等技术组件。
以此类推,当你的自动化测试做的足够好时,这个过程需要你解决很多问题,了解很多新的知识,而技术成长最快的方法则是,在实际工作中不断解决问题,不断复盘和技术优化。
这就是技术菜鸟技术提升的过程,除了生而知之或者极有天赋,绝大多数技术同学提升技术,都是这个过程。
简单理解就是,能力的提升是一个过程,找到适合自身的切入点,书中学,事上练,过程中辅以复盘思考,以及咨询其他技术大牛获得更高的技术视野,如是而已。