非好学校科班出身的程序员,该如何快速提升自己

文章讲述了非科班出身的程序员在大公司中可以通过勤奋和正确的方法提升自我,强调项目经验和基本功的重要性,以及如何通过实习、自学和针对性学习来弥补学历不足。作者提供了详细的Java学习路径和面试准备建议。
摘要由CSDN通过智能技术生成

首先我用我的切身体会给大家予以足够的信心:我最近呆的都是一些不小的公司,虽然在招聘时有上述的门槛,但事实上,在3年左右的正式员工里,大约30%是一般学校,或非科班出身,在外派的员工里,这个比例会高到70%左右,而且,每个组平均每年有3个左右转正的名额。所以,出身一般的程序员,只要有足够的勤奋度,而且方法得当,绝非就一定低人一等。

恕我直言,在学校和学历方面稍微欠缺的同学里,我有见过能力很强的,但平均综合能力确实不如好学校。(这里如果我说高于好学校,说出来也没人信)。 不过对于勤奋的同学来说,并非是能力不行,而是努力的方法和方向不对。对于这批敬业勤奋的同学,我非常敬佩,所以在这篇文章里,我将专门分享些相关的提升技巧。

1 战术上要重视,分析为什么大公司要设置学历和学校的门槛

平心而论,为什么有这样的设置呢?第一,能进好学校的同学在之前的学习过程中已经证实了自己“综合能力强“这个特质,第二,好学校毕业的同学,一般基础能力比较扎实,比如数据结构算法操作系统编译原理等,不仅理论经验,不少还有实训经验。

在前进的过程中,我们必须认清自己,所谓知己知彼百战不殆,但认识自己绝非是让我们妄自菲薄,而是明白自己的短板,归纳一下,在招聘时,一般会对这批程序员重点考核如下的要点(这其实就是目前普遍存在的短板):

1 是否有实际的商业项目经验?

2 基本功是否能达标?比如是否熟悉链表Hash表的基本数据结构,是否熟悉排序等基本的算法。

3 学习能力,团队协作能力以及责任心等是否达标?

其实归根到底就一点:如果程序员在大学毕业前,有过实际的项目经验,比如做过兼职,或在学校里帮老师干过商业项目经验,这能一定程度上弥补学历学校和专业方面的劣势,而且,如果做项目的时间足够长(一般1年左右),而且项目里用到的技术和公司职位需求比较匹配,而且候选人动手能力强,一些规模不大的公司甚至会忽视学校等方面的因素。

2 如何通过第一份工作,让自己有个不差的起点

程序员在踏上社会后前两年的发展,会比较重要。这里给出的建议是,如果你感觉学校和学历会成为障碍,可以找个规模一般但干的活和你的职业发展相关的工作,如果万不得已,不得不干销售等之类的工作,但一定得让自己干点和编程相关的事情。下面给出些我见到过的案例。

案例1:小A本科毕业后,学校一般,能力属于中下。不过他找了个外派公司,外派进了一个规模比较大的公司,在其中发展了2年,用项目经验冲淡了学校的因素,后来就跳槽进了一个大公司,从初级开发做起,平时也经常学些知识,目前在升级到高级开发的路上顺风顺水。

案例2:小B学校一般,也大专学历,但在大三期间已经在软件公司实习,积累了一些基本的开发能力,毕业后就凭此顺利进入到一个中型公司做开发,至少能在社会上站稳脚跟。

案例3:小C大专学习,专业是理科,但和软件关系不大,后来参加一个软件培训,积累了些技能,目前至少也能在公司里做软件开发的活。

在这个案例中,我绝非说一定得通过培训学校,其实在培训学校是用钱买时间买学习方法买项目经验,如果你自己毅力足够,靠自己看视频运行项目,也能达到类似的效果。

案例4:我在面试时就看到不少简历,候选人学校学历都一般,3年后,绝对有能力挑战大公司的职位,而且公司更看重这些同学靠前3年工作积累的项目和技能经验。

总结一下,如果学校学历都一般,那么该采取哪些措施呢?

1 最好在毕业前,进入软件公司实习。这可以靠学校推荐,更得自己去找。学校里的一些老师,会和外面公司合作,大家就可以找这些老师干活。或者就到处投简历,工资看着要,以积累项目经验为主。

2 平时可以适当放松娱乐,但就更得自己了解项目经验。比如,通过视频等方式,自己搭建一个框架,或者用python搭建一个数据分析平台,这种案例多多益善。

3 准备简历时,一定得增加商业项目的经验,同时靠刷面试题积累面试经验。

这里也给大家交个底,我在上海,上海软件公司数量多不胜数,往往一个楼里就有5,6家,而且,小型或中型的公司,出于节省成本的考虑,往往只会看项目技能和基本功,不怎么看学校和学历。其实每个城市都一样,所以要找工作,或者是不差的工作,绝对没问题。

3 只要勤奋了,任何时间点都不算晚:论时间的安排

在龟兔赛跑里,最让人痛心的不是兔子在中途睡觉,而是乌龟自暴自弃。天道酬勤,但如果自己都失去信心或贪图玩乐,那真就没人能帮你了。

在上文里提到,在学校里,就该去积累项目经验,或自己通过运行代码熟悉框架技能。不过如果已经不慎错过学校里的时间,但现在想迎头赶上,只要努力了,什么时候都不晚。

这里给出些关于Java方面自学的途径和时间点。

表 第1个月的学习进度

学习时间

要学的技术

应该达到的水准

第1周

搭建Java环境,熟悉基本语法

安装好JDK,Eclipse或MyEclipse开发环境。能运行出第一个Java程序。最好还能熟悉int之类的基本数据类型和一些加减乘除等基本运算。了解Math等常用的类,了解if分支语句,了解while,for等循环语句,能用开发出诸如计算闰年或累加和之类的小程序。

第2周

基本的面向对象语法

了解封装继承多态等的语法,知道面向对象的基本概念,但此时不必深入。这部分内容对应本书第2章。

第3周

Java集合部分的内容

知道List,Set和Map等对象的用法,知道泛型的用法,而且知道诸如hashCode等的常用知识带你。这部分内容对应本书第3章。

第4周

异常处理流程和基本的IO处理流程

知道try…catch…finally的工作流程,知道基本的IO读写操作。会结合异常处理流程开发一些读写文件读写内存等的程序。这部分内容对应本书第4章。

在第2个月里,大家可以在掌握上述知识的基础上深入了解Java Core的高级知识点,并可以进入Java Web初级阶段的学习,这个时间段的学习进度如下表所示。

表 第2个月的学习进度

学习时间

要学的技术

应该达到的水准

第5周

搭建数据库环境,熟悉JDBC编程

安装好MySQL等数据库环境,会通过JDBC编写诸如读写数据库的操作,而且能掌握批处理和预处理等操作。最好能会和事务相关的操作。这部分内容对应本书第5章。

第6,7周

多线程编程

能用多线程协作完成一件事情,掌握至少一种控制多线程并发的技巧(比如Lock),最好能掌握线程池。这部分内容对应本书第7章。

第8周

基本的Web技术

能开发并运行基于Jsp+Servlet+JavaBean+DB架构的简单项目,并了解其中的一些重要技术。

在第3个月里,大家可以深入了解Java Web里比较资深的框架技术,比如Spring MVC和ORM等,这个阶段的学习计划如下表1.4所示。

表 第3个月的学习进度

学习时间

要学的技术

应该达到的水准

第9周

Spring的诸如IOC和AOP等基本概念

能运行通IOC和AOP部分的代码,并能结合代码知道诸如AutoWire等的重要知识点。

第10周

Spring MVC框架及其基本流程

能通过一个简单的Spring MVC程序了解它的组成结构,并了解其中各部分的开发要点

第11周

ORM技术

了解Hibernate或ibatis的基本开发模式,知道如何通过ORM和数据库交互。

第12周

Spring MVC+ORM框架

能运行通一个简单的Spring MVC+ORM框架的案例,并大致了解这种框架里各部分的开发要点。

本人一直在上海上一个为期3个月的政府补贴的Java培训班(具体名字就不说了,有打广告嫌疑),就按上述时间点要求学生(不少还是零基础的),经实践下来,不少同学上完后至少能出去面试初级程序员了。

换句话说,只要你肯了,大概也就3个月的时间(基础稍微差的同学最多5个月,如果上心点的,估计也就2个月),即能达到初级开发的水平。

我之前听过一种说法,说Java培训学校量产初级开发,根据我所见所闻,不无道理,而且量产对象,学历甚至可以是高中,读过计算机大专的,也寥寥无几。相比之下,学校一般的同学基础要好得多,更应该有能力和信心快速提升自己。

4 看下程序员的基本功,其实自己也能在工作后弥补

这个大家可能有个认识误区,好学校高学历的毕生生在工作后有优势,并不是他们多学了几门课多会了几个知识点,而是在这些学校里,项目实践的机会比较多,实习机会也好找。换句话说,基本功比较强。

什么叫基本功(俗称内功)?分两块,第一是知识类的。 大学里学的课不少,但实际对5年内程序员工作有帮助的,可能也就以下的内容。

1 数据结构知识,而且仅限于数组,链表,堆栈,队列,Hash表和树等知识,图的知识不怎么用得到。

2 算法,用得最多的也就是排序,遍历(树链表等)。

3 编译原理中的状态机思想。

4 网络通讯里的网络协议知识点和通讯包的发送流程。

5 操作系统里的一些知识点和算法。

6 Java等编程语言,学校里一般会更多地偏重知识点,而实际公司里,要求更多的是动手开发能力。

大家可以看下,这些其实不怎么难学,这也是为什么非软件专业的同学能转行,以及培训学校能量产程序员的原因。至于说,基础理论知识阻碍了程序员升级,比如某程序员由于不熟悉Hash表数据结构从而导致缺乏优化能力,这不是程序员没经过大学里基础课的培训,而是在工作后,没有主动弥补这方面的知识点。

基本功另外一类是关于技能的,分为如下几个层次。

1 调试代码的能力,比如边上没有人,你能自己通过debug把代码调通。

2 能山寨别人代码的能力,比如你要实现一个JDBC连数据库的功能,自己不熟悉JDBC的操作,但你可以从网上找段相似的然后改改实现。

最后

在面试前我整理归纳了一些面试学习资料,文中结合我的朋友同学面试美团滴滴这类大厂的资料及案例

MyBatis答案解析
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

试美团滴滴这类大厂的资料及案例
[外链图片转存中…(img-vwcCVD6o-1714225498499)]

[外链图片转存中…(img-OGo31RS2-1714225498499)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

大家看完有什么不懂的可以在下方留言讨论也可以关注。

觉得文章对你有帮助的话记得关注我点个赞支持一下!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值