找工作不容易,所以找到一个工作,按理说应该格外珍惜。但是,世上有一种东西叫鸡肋,弃之可惜,食之无味。有的公司就像鸡肋,干吧,公司业务乱成一团,没有文档不说,曾经的开发人员也走的差不多了。不干吧,你说这工作好不容易找着一个,就这么扔了着实可惜。
有些公司就是这样,一个版本或项目搞完,赶紧搞下一个,也没什么文档,所谓的离职交接就是把各个目录、文件是干什么的都写一下就完了。
下一个入职的人就来接手这项目,面对没有文档,也没有人问的境况,只能是自己生看代码。因为你想了解业务代码,那只能生看代码,然后面对代码不断的进行断点调试,来确认某个代码是不是控制某个功能的。
真实的线上业务逻辑不是那么简单的,都很复杂,各种情况交织在一起。想写一个模块,或是改一个方法,得反复清理业务逻辑,再反复测试确认,然后你才能去修改。否则你改了这个就影响了那个。
慢慢看吧,感情都在酒里,逻辑都在代码里。
这就是维护项目,你说学不到东西吧,那肯定不对,多少能学一些东西。但你要说能学到很多东西,那又是不可能,整个结构都确定了,你只能是修修补补。
很多同学面对这种情况都比较纠结,看看其它认识的人,都在搞什么这个那个的,用这样那样的技术栈,能够学到许多新东西新技术,因为项目是新的嘛。
而你在搞这个老项目,里面乱成一团,这不改动,那不敢改。而且因为是定型的项目,所以技术栈一般也不会太新。
怎么办?很多人都会打退堂鼓,去面试新公司,但问题是,你拿什么去面试呢?人家问你,上一家公司你搞了些啥?你说,我就维护一个项目,里面乱成一团,所以我就想换地方。
这样的面试,八成要失败。
我个人主观的建议吧,如果是在确实没有更好选择的情况下。那么这样一个烂系统,其实是锻炼你能力的好机会。你如果能把这样一个烂系统,给它理清理顺,那么你的收获绝对比用了几个新技术的收获要大。
前端开发的真正实力体现,是对复杂系统的驾驭能力。你能理清一个复杂的系统,你就能设计一个复杂的系统。
因为不断的修改、打补丁,只是为了解决问题而解决问题,最后只能得到一个补丁的集合,而你的收获只能是如何打各种补丁。如果你能够这样的一个混乱项目的代码重新设计实现,那么你是从根本上解决了它所有的问题。
不是说学习新技术不好,只是说,技术这东西,很多时候只是你不会,然后学了,然后就会了。就这么简单。但你学会了技术之后,怎么用呢?靠你对于系统与架构的理解和设计能力。
同样是js代码,为什么高手写的好,而你写的烂呢?就在于设计的能力。
理清一个混乱的业务系统,它的另一个好处,是你可以在面试的时候说,“之前公司的xx项目结构很混乱,我把这整个的理顺,然后重新设计了结构,之后重新实现了一遍。”
这是什么?这是系统架构师。几乎是所有前端人员的目标,能做这个职位的人,他的技术结构不是靠堆技术就可以的。当然了,这个目标确实有些过于远大,但理清一个混乱的项目代码这个事情,是一个很好的起点。