• 程序员的自学项目和商业项目间有什么差异?
  • 发布于 2个月前
  • 352 热度
    0 评论
  • APAC
  • 18 粉丝 33 篇博客
  •   
在找java工作的过程中,项目的作用无可替代,很多Java初学者虽然认可这点,但会混淆“学习项目”、“真实商业项目”和“面试所要用到的项目”这三者的差别,其中自学的项目属于学习项目。比如他们会认为,一定要跑通甚至自己写一个Java项目才能去找工作,而且不少零经验的初学者会直接把学习项目写到简历上,同时会认为简历上写的项目得包含更值钱的技术。

这种对Java项目的误解会严重影响到学习Java的进程,更会直接影响到最后找工作的成败。

1 比如某初学者跑通了很多Swing界面+数据库的项目,但这些项目对找工作甚至学java基本没什么用处。

2 比如会有更多的初学者会认为,一定要跑通一个spring boot甚至是spring cloud项目,这才算学好,甚至还有人会认为,一定得自己动手写好一个spring boot项目,这才算学到位,这样才能找工作。但初学者在没人帮忙的前提下跑通项目也不大容易,所以很多初学者因此不会去找工作。但事实上,没有跑通项目的前提下照样有可能找到工作。

3 再如会有更多的初学者会直接把学习项目写到简历上,这样基本上很难得到面试机会。

4 面试官是会问项目,但更是需要通过问项目确认求职者的真实Java开发经历。面试官眼里的是真实项目,这和初学者认知里的学习项目是截然不同的。所以如果初学者单凭做学习项目积累的技术和说辞,也是基本上无法过面试的。

下文就来说说“Java小白眼里的Java项目”、“真实的商业Java项目”以及“面试所要用到的Java项目”这三者的差别,进而再给出高效通过项目找java工作的相关建议。

Java小白认识的项目,俗称是学习项目。比如毕业设计项目,或者是培训班里给的项目,都算学习项目。这些项目的相通点是,都是在windows上开发,实践过程中只能积累开发技能,虽然能学习到一些spring cloud方面的值钱经验,但当面试官问及相关技术的项目用法时,一定说不好。

这种学习项目的特点是无法创造价值,所以如果对应的java岗位需要有一定年限的java真实经验,如果在简历上写上这类学习项目,大概率无法得到面试机会,如果在面试中只说做过学习项目,无法证明自己在公司里做过商业项目,大概率无法过面试。

所以像此类项目,初学者学个1,2个,应该能提升spring boot甚至spring cloud方面的技术,但如果多多跑通此类项目,哪怕跑通10个20个,里面包含的技术再高级,比如包含全套spring cloud alibaba组件,业务类型再多,比如包含物流系统仓库系统,其实是无法帮助自己找工作的。

再说些仅仅包含jave核心技能还不包含spring boot等技术的java项目,这些项目甚至都很难帮助初学者掌握找工作所必需的spring boot等项目,这些项目应该仅仅能起到自娱自乐的效果。

再说说真实项目,即在公司里做的项目,其实面试官认可的是这个。可以这样说,如果没在公司里呆过,或者做的项目不是用于挣钱,那么初学者其实是没法接触到真实项目的。

这里更要说的是,哪怕是某培训班给出的项目包含再多的spring boot和spring cloud方面技术,甚至再包含真实项目里用到的junit或redis等技术,只要这个项目不是在公司里做的,这个项目一定也只是学习项目,而不是商业项目。其实大多数Java初学者是没有机会接触到真实项目的,所以本人有专门的文章来介绍真实项目长什么样。

所以Java小白找工作时所面临的问题,不仅仅是技术层面,首要的问题是,得在面试中通过介绍项目证明自己有商业项目经验,进而证明自己在商业项目里用过spring boot等必须的技术。

这里就引出第三个概念,即“Java面试所要用的项目”。此时大多数Java小白没有真实项目的经验,而单凭学习项目又无法满足面试的要求,所以不少初学者会包装简历,为自己编造些真实项目。但事实上为了证明自己有真实Java项目经验,一方面甚至都不需要跑通学习项目,但另一方面需要从多个维度,通过面试时的项目描述,来证明自己的真实经验。

1 从业务上来讲,很多商业项目其实和学习项目一样,都是由若干个增删改查模块堆砌而成,比如真实的物流管理系统里的快递单管理,也是spring boot通过mybatis,对快递单表进行增删改查,而物流系统是由若干个此类模块构成,而学习项目也一样。

所以对初学者来说,当然跑通一个学习项目固然最好,但在通过一个单表的模块掌握spring boot增删改查操作的基础上,再扩展下,其实也能从技术和业务角度说明自己做过项目。

比如可以说,本物流项目包含订单模块,快递单管理模块和快递员管理模块,用到订单等等表,用到了spring boot,其中流程是从控制器调service层,再调repo层,用到 spring boot里的哪些注解,这样也能从业务和技术角度证明自己有真实项目经验。

2 真实项目必须要有个公司作为载体,而入职后公司一般会通过背调来确认。所以这方面,应当为自己的项目找个对应的公司,这尤为重要,如果没公司挂靠,这个项目一定是学习项目。

3 真实项目和学习项目,在实践过程中,一定会有测试部署和解决实际问题,所以如果初学者在只有学习项目的基础上,应当去了解下junit测试,postman测试和maven打包部署等流程,进一步,还应当了解真实项目里大概率会用到的git,以客户端连数据库以及linux操作方式。至于解决过的问题,真实项目的做法一般是通过postman等测试手段发现问题,然后看日志,再去对应到某个模块某行代码再解决,而且日志是放在linux服务器上,相关的,初学者可以在熟悉这些操作的前提下,在面试时说些要点(比如logback,vi命令)来证明自己有这方面的经验。

4 再说下一些值钱技术。在大多数学习项目里,分布式组件乃至 spring cloud组件的使用场景是不正确的,比如用redis缓存token。而且哪怕在学习项目里用了全套的值钱技术,面试时面试官只要问下为什么要用,这块就会露馅,进而暴露自己包装项目的缺陷。

对此,如果你感觉自己没把握说好分布式组件,那宁可别在简历上提,别在面试里说,其实对1,2年经验的java来说,哪怕说自己只会增删改查,同时证明自己项目的真实性,也能找到工作。

当然其实对初学者来说,也可以通过组件等值钱技术进一步提升找工作的可能性。这块怎么做呢?第一别说用过全套,用过redis,kakfa或openfeign等常用的即可,第二要结合业务场景说,比如某热门数据访问量很高,这才要用redis,我们是分布式部署,所以用nacos+ribbon,而对于学习项目里无法提供使用场景的,宁可不说。第三再结合api说怎么用, 比如说用redisTemplate访问redis。

5 初学者在准备项目时,虽然没做过商业项目,但可以从logback日志组件,事务,swagger或切面编程等方面准备细节和技术说辞。这块和上文提到的值钱技术也一样,需要从使用场景,api以及配置方式等要点来说明。

所以说,初学者面试所要准备的项目,一定不是学习项目,而是要根据学习项目里用到的技术,结合商业项目的实践过程(比如测试部署排查问题)来准备说辞。

说直白些,这个项目可以源自学习项目但应当高于学习项目,毕竟初学者无法接触到真实项目。而初学者更要从公司背景,业务技术,测试部署,排查问题以及业务的使用场景等方面来证明该项目的真实性。当初学者搞明白上文提到的三种java项目以后,其实很能提高学习和找工作的效率。

1 学习过程中可以淡化学习项目的作用,这样一方面可以减少不必要的学习量,另一方面能知道该学的侧重点。
2 真没必要去找大量的项目练习,也没必要通过项目去搞明白找第一份工作其实用不到的技能。从这意义上来讲,一些github项目哪怕包含页面再花哨,用到技术再值钱,只不过也是学习项目。
3 在找工作写简历时,一定得通过公司背景等细节说明这是商业项目,进而能有效提升面试机会。
4 更为重要的是,在准备面试项目说辞时,一定不能单靠学习项目,一定得是在理解商业项目的基础上准备相关说辞,进而能证明自己有真实的java项目经验。
用户评论