初入职场的时候,很多内容不懂,多数情况都是领导指哪儿,我打哪儿,工作循环在敲代码、看别人代码、改bug之中,有时候会陷入焦虑:
明年我还要继续这样的生活吗?
在一家公司呆久了,就容易思维固化。身边有朋友出去找工作也四处碰壁,即使入职了下一家公司,也很难立足。
而我的分析是,1~2年的经验,其实已经足够让我们入门了,学习需求分析、项目管理,写出更好的代码,才是我现阶段应该做的。
做开发很多年,这期间我获得了很多能力,技术能力、大厂经验、培训能力……但是在这里,我建议大家最值得训练的,还是学习和分析的能力。
一、工程化管理工具
不管小白还是大牛,做Java技术,选择好的工具,才是提升开发和团队协作效率的关键,以下四个工具是必不可少的:
① Maven,项目对象模型,可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
② Jenkins,一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作。
③ Sonar,一个开源平台,用于管理源代码的质量。
④Git,一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
二、分布式架构
高并发、高可用、海量数据,没有分布式架构知识,肯定是无法胜任的。一位朋友在五百强公司工作五年,曾承担过项目经理多年,将五年开发经验所得,整理了下面这张学习路线图。也分享给大家。
三、微服务架构
业务流程越来越复杂,代码量的膨胀和团队成员的增加,传统单体式架构的弊端越来越凸显,严重制约了业务的快速创新和敏捷交付。
为了解决传统单体架构面临的挑战,微服务架构横空出世。微服务有五大优势,学会微服务,就等于提升了翻倍的工作效率:
每个服务足够内聚,足够小,代码容易理解、开发效率提高。
服务之间可以独立部署,微服务架构让持续部署成为可能。
每个服务可以各自进行x扩展和z扩展,而且,每个服务可以根据自己的需要部署到合适的硬件服务器上。
容易扩大开发团队,可以针对每个服务(service)组件开发团队。
提高容错性(fault isolation),一个服务的内存泄露并不会让整个系统瘫痪。
系统不会被长期限制在某个技术栈上。