小编南邮通信工程专业出身,参加过Java培训学习,后从事了近8年软件开发,做过不少大型项目,也完整地走过从技术新人到大型项目技术总监的路程,并且,也从事过IT教育培训。从事培训教育的过程中,逛过很多贴吧、论坛及各类Q群,深知很多新人对是否应该投身IT及是否需要参加培训而困惑不已(其实小编自己当初在做出是否参加Java培训的决策过程中,内心也是极度矛盾,因为网上劝退的人一大把,而劝进的人屈指可数)
如果你有幸看到这篇文章,那么恭喜你,你会在这里得到一个相对客观公正的详尽分析,本文不会给你结论,但你看完后一定会有自己正确的结论。
一、IT行业是否值得进入
对于这个问题,相信不用过多解释。既然你对这个行业感兴趣,你至少应该了解过这个行业的薪资状况,也能隐约感觉到这个行业在社会发展进程中的趋势。
如果你不了解,可以上诸如智联,51job等求职平台上搜索一下java、python、大数据等开发岗位的职位数据。或者向行业内部人士求证:不管是哪类语言开发岗位,2-3年开发经验的工程师,平均月薪(北上深)基本都能处于15000-20000之间(别跟我说特例,有特别低的,也有特别高的,这些不在我们的讨论范围之内,具体见下文分析)
而且,关键的一点是,从事这个行业,达到这个层次,是一个实打实能实现的大概率事件(注意:千万不要幼稚地说某某行业的高管或者某某行业金牌销售能拿几百万年薪来与此做对比!那是另一个层次的问题,各行各业都有特别优秀的少数人!IT行业也有高管啊,也有技术大神啊,月薪上百万都有可能)。我们在做重大决策时,千万不要以小概率事件或路径作为决策依据。
二、投身IT行业是否存在难以跨越的门槛
IT行业,其实也是一个庞大的领域,行业内的工种、岗位跟别的行业一样丰富,一样需要各式各样的人才。本文仅以IT领域中的软件开发岗位为例进行说明。
软件开发,看似一个非常高端的职业,但其实,在这个职业中,也分各个层级。尖端人才所从事的尖端工作,当然是困难而有巨大门槛的。但是需要尖端人才从事的尖端任务其实很少,而大部分的工作所需要的技能并不复杂,大部分人经过一段时间的专业学习或训练都能胜任。所以,在这个职业中,人才的分布也是金字塔型的,普通人,基本上都能够加入这个金字塔的至少中间层。
如果你需要一个更加清晰的判断方法,那么,我们来做一个小实验:如果你能理解下文,那么,你就一定具备从事软件开发的基础条件。
所谓软件开发,其实就是将现实中的一个业务场景或者业务流程用一种特定的编程语言来描述给计算机听,让计算机能按照描述好的流程自动处理现实业务。
以各类系统中基本上都具备的用户登录功能为例:
假如有用户要登录进我们的业务系统,那么,我们的系统应该按照以下流程进行处理:
1.获取用户所输入的账号和密码;
2.将获取到的账号和密码与数据库中记录的用户注册时所填写的账号和密码进行比对;
3.如果比对一致,则告知用户登录成功;
4.如果比对不一致,则告知用户登录失败;
上述中文所描述的流程,在编程时,无非就是换一种编程语言(比如java、python、php)来描述,下面就是上述流程的编程伪代码:
// 1.获取用户登录时所输入的账号密码
account = getLoginAccount();
password = getLoginPassword();
// 2.检查数据库中的账号和密码是否匹配:
ex = checkUser(account);
// 3.如果匹配正确,则告知登录成功
if(ex){
return "恭喜您登录成功";
}else{ // 4.如果匹配错误,则告知登录失败
return "您的账号或密码不正确!"
}
综上所述,所谓编程,大部分情况下无非就是用一种编程语言来描述一个业务逻辑,并不会涉及到什么高深的知识,真的不难!
三、自身条件是否适合投身软件开发
如果你本来就是软件开发专业科班出身,那么你可以直接跳过本节。
如果你不是软件开发专业科班出身,是想转行到软件开发,那么,你可以仔细考量以下几个核心要素:
年龄
学习能力
学历及专业
意志及决心
兴趣
下文对每一个核心要素进行客观阐述。
1.年龄
说真话,这行的年龄挺重要的。因为能力相近的情况下,年龄越小代表潜力更好,用人成本相对较低,公司对该类应聘人员的要求也就相对较低,因而求职更容易!
而年龄越大,公司对应聘者的能力及经验要求就越高。假如一个30岁的初级开发人员去应骋,公司是肯定不要的;但一个30岁的高级人员去应骋,只要能力不是假的,公司基本会抢着要。
所以真心劝说,有些兄弟,二十八九再转行,如果学出来是快30岁的初级,不敢说肯定找不到工作,机会真的不大,一定要慎重。如果学出来后在二十七八岁以内,倒是可以拼拼。
所以想干开发,越早越好。在这个行业,年轻就是资本。千万别犹犹豫豫的,等过几年再想转的时候,岁数大了,真是机会渺茫了。
不过,如果你真到了30来岁的年龄,也不是完全不行。我以前有个学生,在电网上班的,30岁才来学开发,学完后就拿到了某知名互联网企业的大数据平台架构师岗位,月薪35k,并且一年14薪。
当然,这是一个特例,不能作为普遍参考。如果你要跟他比对,那么请知晓:
这个兄弟的学历背景是211本科;
这个兄弟的沟通表达能力属于普通人中中等偏上层次;
这个兄弟的形象气质符合典型的it气质;
这个兄弟在学习过程中能够玩命学;
这个兄弟的学习能力处于一般人中的偏上水平;
这个兄弟的相貌看起来也就个二十七八岁;
2.学习能力
搞开发学习能力很重要,因为技术和环境不断的发生变化。开发和传统工作不同,比如理发、厨师、技术工人等,这些工作环境变化小,工作相对单一,所以是一招鲜,吃遍天,不需要天天琢磨学新东西,把一二招练熟就能谋生。
而lT开发工作不是这样,时时处于行业高速变化中,一旦不能适应这种变化,就得处于淘汰的边缘。开发思想、开发语言、各种工具、框架、组件,业务知识,每年呈爆炸式发展,没有良好的学习能力,是无法适应环境高速变化的,也就难混了。
所以学了SSM,能找到工作吗?类似这种问题,真得没太大意义。因为你去工作的企业,可能不用SSM,也可能是源代码修改过的SSM,或着用其一部分,用法跟你培训中所学的有类似地方,但不会完全一样。这就是问题了,你只能去适应企业的架构,企业肯定不会去适应你。所以你如果能通过原有的SSM基本知识+自学能力,能快速适应,完成交给你的任务,才会有机会留下。否则,即使面试过了,也不见得通过试用。
3.学历及专业
如果搞业务应用软件开发,只要有一定英语及逻辑思维能力(就像前文第二节所求证的),什么学历、什么专业没太大关系的,努力学都能达到初、中级工作标准,真得没多难。
但现实情况中,也还存在一个尴尬。就算你能干,市场却不一定给机会让你干。现状就是,大部分公司在招聘时,是学历之上再看能力,对初级工程师及应届生更是如此。也许你能力超越了比你学历高的,但是大部分公司可能连个面试机会都不给你,你都没机会展示自己。所以说学历、专业是敲门砖,这些决定了你能不能敲开企业用人大门、敲开什么级别企业的大门。
其实也没必要骂这种看重学历的社会现像。换位思考一下,你是企业HR,拿到100份简历,第一步肯定是要筛掉一部分呀。用什么标准筛?肯定是学历呀。正常情况下,肯定是一本比二本强,二本比专科强呀,计算机专业比非计算机强呀。不排除专科、非专业有强的,但简历都差不多,你让HR拿什么鉴别?除非你简历上真的有硬货,而且人家HR还发现了(这还得靠运气)。
我以前在一家跨国大企业做技术总监时,我招人第一就是看学历:名校的,高学历的,我肯定优先考虑。因为我不可能有那么多精力去大海捞针从一堆简历中去寻找那个以小概率存在的学历不怎么好但高能力却超强的千里马。
4.意志和决心
好多朋友刚学了几天,就发贴学蒙了,学不下去了等等,这种浮躁的心态体现了意志薄弱,这种人是很难学出来的。学习从来就不是一件轻松的事!!! 如果学习像玩游戏一样轻松,像躺着吃瓜一样安逸,那这个世界上的人怎么可能分出三六九等?那岂不是人人都成科学家,人人都成企业家,人人都发财了?
学习就得横下一条心,玩命学,谁开始学都不会,都觉得艰难。都是努力学,才学出来的。三天打渔,两天晒网的,就别耽误这功夫了。
5.兴趣
如果说做一个一般的开发者,只要能力够,有没有兴趣都能达标,挣碗好点的饭问题不大。一亲戚高中的时候成绩好,父母逼着学医,自己不喜欢,但最后干得也很优秀。所以说能力够,兴趣不是事。
但是一般来说,相近能力的,有兴趣的肯定比没兴趣的学得好。顶级和高级开发人员,没有一个不是热爱开发这个事业的。有兴趣的人,学习动力会更大,成绩也更好。
话说回来,其实大部分没有定型的人(基本涵盖所有30以下人群),对于自己究竟喜欢什么职业,适合什么职业,自己都不见得很清楚。就以我为例,大学的专业,懵懂选的。大学后的工作(中国移动),懵懂进的。也不知道自己喜欢不喜欢,也不知道自己究竟喜欢什么。后来从事了软件开发,做了一些年,做出了成绩,就发现这份事业已经融入了骨子里,让我再去干别的行业我都不会再有兴趣了。
四、如果要学,是自学还是参加培训
对于这个问题,首先我要告诉你,从网上诸如贴吧、论坛一类的地方去获取信息的话,基本上就只能是自学了。因为网上的帖子,基本上都是对培训机构各种喷。
不过,你要注意到,会去贴吧、论坛的无非这几类人:
1.对软件开发领域知之甚少,对培训机构的信息也知之甚少,正在求取信息的跃跃欲试者;
2.培训机构的市场、销售及教员;
3.在培训机构学完后没有获得满意就业的人士;
在这三类人中:
第1类人(简称小白)是不可能输出信息的,他们是寻找信息;
第2类人,输出的信息基本不客观,因为他要销售自己的课程,不过这类人发的帖子很容易被读者分辨出来;
而第3类人,才是这些社群中真正输出信息以及真正能影响小白的一类人,只是这类人发出的言论基本都是负面的,但它又是以现身说法的形式来输出信息,容易获取小白的信任,从而将小白带到偏激的方向。
所以,获取信息的渠道一定不能太过狭隘,要相信兼听则明。事实上,中国的IT开发领域所需求的人才(质量及数量),根本不是现在的大学所能供给得了的:
第一,大学输出的相关专业毕业生数量远远不够需求;
第二,大学输出的相关专业毕业生的技术水平能满足企业要求的比例极低,大部分学校(注意:不是所有学校,本人无意挑起学术争论)的相关专业学生毕业时基本啥也干不了。
本人从事过很多年的软件开发,也从事过开发培训,对IT开发人才的供需情况深有体会,其实市场上至少70%的软件开人才都是由各类大小培训机构输出的。许多的企业在招聘时排斥培训出来的学生,其实,他们不知道,在他们公司的研发办公室里,至少70%的人都是从培训机构出来的,企业只是不知道而已。我在从事软件培训期间所带的学生,现在遍布BAT及各类知名及不知名的企业,而且很多都担任着核心骨干。有兴趣求证的朋友,我可以把他们召集起来帮你们组织一个见面交流峰会)
回到本节的问题:究竟是自学好,还是培训好?我们可以先来看看自学:
如果你在学校的时候就是学霸级别,那么你的自学能力(这个能力不仅包括学习理解力,领悟力等,更包含自我约束能力和毅力)肯定是毋庸置疑的。如果同时你还具备良好的自学条件(时间、环境、经济支持),那么,ok,你完全可以自学。
我这里帮助到的自学成才的学生也不少,随便挑两个给大家看看:
不过,对于大部分人来说,是不具备上文所说的条件的;
如果硬要自学,基本上会陷入如下死亡陷阱:始于三天热情,一旦遇到困难就放弃或暂停。然后重启,又放弃、暂停;最后彻底放弃。不仅浪费了精力,更消磨了好不容易下定的决心,以及错过了最最宝贵的大好时机。
据我所知,自学的成功率极低,远不如参加培训的成功率。原因如下:
1.自学能力不够
2.自我约束能力不够(因为学习很辛苦,玩玩游戏更轻松)
3.学习路线不清晰或不合理(it领域尤其是开发领域,不像学PS操作一样,学一点会一点就能用一点;软件开发一定是要搭建一个完整知识体系才能算真正学会才能真正上岗工作的)
4.无人引导(自学过程中妥妥会遇到大量难以解决的问题,如果在网上四处询问,得到解答的可能性很低或者寻求答案过程的效率很低)
所以,对于大部分不具备上述自学条件的人,其实参加培训是一个挺值得考虑的选择。不要一味地相信那些培训失败的学员的无脑吐槽,而是需要理性的判断:
1.各行业都有loser,loser给你的信息永远是负面的;而且loser的一个最重要特征就是,总是为失败从外界找借口,从来不从自身找原因。
2.各行业都有超级winner,超级winner给你的信息多半是正面的,但他的情况也不一定适用在你的身上;
3.各行业都有普通级别的,这些普通级别的人,才是我们真正可参考的参照系。他们跟你我差不多,如果他们能行,那么,我们大概率上也能行!
现实情况及简明的逻辑就是:
这么多的培训机构,培训出这么多的学员,如果不是绝大部分都成功满意就业的话,这些培训机构早就死了(比如千峰、小马哥等机构,前几年移动端开发正火的时候,培训了大量的移动端开发人员,结果市场迅速饱和,大批量的学员积压在手里就不了业,这些机构,至少是这些培训方向,也就快速萎缩死掉。比如传智的IOS学科讲师迅速裁员,招生迅速萎缩,所有IOS学科的讲师转往PYTHON学科;而小马哥(主做IOS培训)则直接出现了生存危机,公司已经危在旦夕,小马哥本人直接消失半年)。
但是,像JAVA、大数据、PYTHON等方向的学科,则一直很稳定,因为大部分学员学完后都能找到很好的工作。
所以,不要一味地说培训机构不行,也千万不能随意任选培训机构和专业方向,一定要广泛调查,慎重选择。找到适合自己的方向,找到能真正让自己学会的机构。
综上所述,对于是否要学IT开发,是选择自学,还是选择培训,我给你的建议是:
无论选择哪一种,你都可以先自学,不过最好不要闷头自学,首先要找到好的资料,好的资料和坏的资料差别很大,好资料会让你树立信心,坏资料可以将你瞬间击垮。如下图所示:
最好还有热心的人,能在你自学的过程中个一些指导,这样,一段时间后,你就可以决定是否要学IT开发,是采用自学的方式,还是参加培训加快速度。
谨以此文,向那些带我入行的人表达感恩之情。同时,也愿意为跟我当年一样迷茫的你,拨云见日,指点一二,如果你想了解更多的信息,可以加我,只要有空,我都会为你一一解惑