程序员一定不能光靠看书提升 | 聊聊Java初级开发的提升方式





责编 | 韩楠

约 2124 字 | 5 分钟阅读


你好,今天我想与你聊聊Java初级开发的提升方式。


这样说吧,如果单看书或视频等资料,不去做真实的项目实践,那么真有可能适得其反,或者是学到的技能由于长久派不上用处而被遗忘。


先列举些光看不练的后果吧。

1.比如某人看了一些重构代码或设计模式等知识点,然后不切合项目实际,就用到项目里,那么一定会引发大量重构代码而导致测试量增大的情况,进而会引发项目发布延期。这种事情干多了,一定会被项目经理嫌弃。

2.比如某人做Java,看到微服务分布式比较火,虽然项目里没有实际需求,但还是投入大量精力去学,这样真有可能学了白学,学到的技能在几个月以后就给忘了。

3.或者哪怕说不上是光看不练,就仅仅是通过GitHub等学习项目去学习Python 机器学习 等技能,由于学习项目一定无法体现实际项目中的真实经验,所以只要不是通过真实项目,用看资料加通过学习项目实践的方式,依然无法提升技能。

那么在编程过程中,怎么提升实际技能呢?多管齐下:

•  第一要在真实的项目开发环境中;

•  第二要多去解决实际问题;

•  第三再通过看资料去巩固;

•  第四再去看招聘要求去了解该学哪些技能。

1.如果当下没有Java真实项目经验,说白了就还没入行Java,那么入行前,要多去准备项目经验,技术层面的基础技能,先别深入学。

因为在脱离真实项目阶段,自学时大部分学到的内容其实是用不到项目里的,所以与其在这个阶段大量投入时间学用不到的技能,那还真不如集中精力去学些入行所需要的技能。

2. 进入到项目组以后,要提升的点可以从项目实际中去找,更要通过看招聘需求去找。

这话怎么说呢?比如Java程序员入行后,如果单注重业务,干个三五年以后,可能会因为熟悉业务,从而在现有公司里混得风生水起,但技术上真只限于增删改查。或者程序员脱离项目,直接去看一些资深技能,这个后果前面也提到了,效果不大。

那么该怎么做呢?在做熟当前业务的前提下,就去看下个职级的招聘需求,针对初级开发,下个职级是资深开发,对应的能力确实还是分布式高并发这块,但学的时候应该结合项目学,在面试的时候要结合项目准备说辞。


   3. 比如在一个项目里,哪怕公司规模再小,项目再是单机版,其实只要肯挖掘,一样有通过项目提升技能的机会。

J ava项目一般都是放在linux上跑,而且一般是分布式部署,这样多少会用到网关,负载均衡和反向代理这套,对应于不同的技术系列,一般是nginx、gateway或ribbon等。

再比如,一个项目,多少会用缓存redis,或消息中间件kafka之类 的,也就是说,只要肯留心,项目里其实除了增删改查,还真有值钱的技术。

4.而且 不仅技术值钱,一些流程和实施方案,或者说解决问题的经验更值钱。

比如项目的发布方式,用Mysql+Redis部署数据库的技术,以及解决业务,调优和组件层面问题的经验,由于看书也学不到,因此真要比用用API等技术更值钱。

这些技能怎么掌握呢?多去排查线上问题,多去问运维和测试怎么做,多跟着项目经理做发布,多跟着数据库DBA去做数据迁移,干个几次就熟悉了。


5.熟悉以后,去准备面试说辞。

毕竟有技术有经验是一方面,面试会说是另一方面。这块怎么准备呢?先列面,比如分布式组件,数据库调优,项目部署,以及常用的Spring Boot框架,这些属于面。再准备点,比如分布式组件里有redis,kafka等点。

针对每个点,同时结合项目需求,api用法和解决过的问题来说。

•  比如是Redis,先说项目数据库层面并发量高,所以要用redis;

•  再说用redisTemplate,具体的是键,是商品ID,值是商品列表;

•  最后说下解决过缓存穿透等问题。

照此办法再去准备调优,微服务等中间件,这样一定能从项目应用,实际用法和解决过的问题等维度,综合展示自己的能力。

按照上述步骤,程序员一般能在半年,最多是一年的时间内,极大程度上提升能力。

比方说,一个Java小白,用3个月熟悉业务,熟悉干业务的spring boot技能,再用3个月去熟悉项目测试部署等技能,再用3个月时间去熟悉分布式高并发等问题的排查方式,再用3个月时间去准备面试说辞,其J实真能去面试高级职位了,所欠缺的可能真只是资历而已。


在这个过程中,看书或看资料有用吗?有用!比如在熟悉资深技能,排查问题时,真要去了解些api,以及微服务组件的运行和开发方法,但大家体会下,这和单纯看书真不一样。


1. 必系统看, 更不是脱离实际看,而是结合开发需求和问题看。 看的时候也不是全面看,而是针对具体的异 常点或者是功能点去看。


2.编 程能力其实不仅仅是开发技术,更不仅仅是使用API的能力,而是使用组件解决实际问题的能力,以及项目测试和部署方面的能力,这些其实在书上还真未必系统讲述。


比如要说解决Dubbo超时时间,一定是零散地去查资料,也就是说程序员要提升时,不仅要会看,而且要去整理。



3.甚至可以这样说,一些资深的技能其实不是记录在书里,而且网上相关描述也很少。具体原因是,毕竟计算机图书更需要关注初学者,一些资深技能讲了就卖不动了,而且具体解决分布式组件等问题的描述,网上也未必有人肯系统写。

所以一方面,程序员靠看书只能提升到高级开发的层面; 另一方面,如果还要继续提升,只能靠前面提到的实践外带着解决问题了。

写了那么多,做个总结吧。

•  程序员除了靠看书,更应当在实际项目中提升。

•  一些资深程序员,还真未必靠系统看书提升,而是靠解决实际问题外加收集整理资料提升。

•  说句实在话,提升的目的是为了涨薪,所以不管是靠看书还是靠项目积累提升,提升后应当去尽早变现,否则还真就是学了白学了。




请使用浏览器的分享功能分享到微信等