半路出家的老java程序员的一点感悟
我是一个老java程序员,现在基本告别编码时代了,当然我现在还在写代码,不是为了老板写了,是自己在创业。回想起这么多年的人生路,作为一名老程序员感慨颇多,尤其是作为一名半路出家的程序员,其中的滋味更是感慨万分。下面我就自己说说我的经历,也许会给未来码农一点启发。
首先讲讲我是怎么成为一个程序员的,这个还真要说说中国的教育。我们国家的这种应试教育一直受到很多人的诟病,有的指责扼杀了学生的创造力,有的指责培养出来的学生就像火腿厂生产的香肠,都是一个味毫无特点而言。其实我们国家的应试教育有他的缺点,也有他的优点。缺点就不说了,我们都知道。优点是他对于家庭贫寒的人来说,提供了一个出人头地的上升通道。当然,现在这个社会能多赚钱过上好生活的方法很多,不止读书。当然,我也不是那种家庭贫寒,就是一个普通家庭而已。当初上学的时候懵懵懂懂,只是读书而没有思考过,将来自己能干什么。其实也不是没有思考过,确实是思考过将来能干什么,但是确实是不知道自己将来能干什么。
初中毕业后,就上了个职专,当时还是学药的,跟计算机没有一毛钱关系,也不知道java。后来毕业后就直接家里蹲大学了,当时1998年工作特别难找,全国都在下岗。可能大家不知道我们国家改革开放的成本之一,就是1998年大批国企职工下岗再就业。我本来也不怎么喜欢医药专业,我自己性格的原因,比较内向,真的是干不了销售药品工作。我还做过几个月的保险推销员,真的努力过但一无所获。当然我的同学有几个现在都发财了,他们是医药代表,天天背着包挂个号,在医生的各个科室里医生塞回扣。我在上职专最后一年接触到了计算机,特别的喜欢,我终于找到了自己的一个兴趣点。于是在毕业后,还报了个《全国计算机等级考试(一级)》,大家不要笑话我,当时1998年,我是见过286的人,386,486,586这些机器我都见过,当时一台286要一万多,1998年的一万多,一般家庭根本买不起。我除了上课那么几个小时练习一下,平时也没有机会练习。后来我发现我家附近的商业大学的计算机房对外开放,286一块钱一小时,386二块钱一小时,就去那里练习五笔字型,现在我还是用全拼。
尝试了很长时间找工作,发现自己真的什么都不会,在学校什么都没学到。能干的就是超市理货员的工作。当时找工作可真不像现在在网上投简历一样轻松。都是买门票去招聘会,招聘单位都是要大专、大本的学历,对我打击很大。最后决心吧学历补上,开始了高自考的艰辛历程。当时自考专科学的是《计算机应用》,本科是《计算机网络》,说实话真的不容易,我确实是下了苦功夫才一门一门考过的,主要是基础太差了,最大的障碍是英语。直接学大学英语真的太吃力了,我直接买了一套高中英语+辅导,自学了3个月,把三年的高中英语学了一遍。当然,高考绝对不行,我只是学习了语法,单词,能够把课文都看懂。然后开始学习公共英语三级,当时公共英语三级是自考指定的教材,我也真实服了,教我们英语的是一个南开大学的研究生,很多发音都不准,后来被学生给投诉了。我还报考了一次大学英语四级,当时四级还是让社会报考的,现在只能在校大学生报考了。当时深受打击,首先听力一句没听懂,然后就是不管是选择题,还是阅读什么的,我基本上一句话都没看懂,每句话里面都有不认识的单词,我的词汇量根本应付不了这种考试。最后我记得是30多分。骑车回家的路上感觉整个人都是晕的。还有一门课程就是物理,因为没有高中基础,学起来感觉非常吃力,似乎初中的物理知识一点都不管用了,还有高数、线性代数、计算方法、模拟与数字电路、都是让我头疼的,但是我都全力以赴的一一攻克了。最后,找了个天津工业大学的学生,他自己写了个家教网,.Net的,我花了100块钱变成了我的毕业论文,终于顺利毕业了。
当时真是太高兴了,终于拿到了自己梦寐以求的本科学历。其中付出的辛苦,只有自己知道。每天要骑一个多小时的路去听课,而且由于南大那个讲信号与系统的老师实在太差了,根本听不懂不说还是个结巴。我和同学一起跑到天津师范大学去蹭课。要说天津师范大学的老师讲的真不错,人也不错,其实他是看出来我们是蹭课的,但看到我们这么臭不要脸的,下大雪都不迟到,也就睁一只眼闭一只眼了。
后来找工作依然受挫,因为我还是什么都不会,大家也都知道,大学里学的根本找不到工作的。于是我又迷茫了,也许大家会问,去报个培训班啊。因为当时我真的对培训班很抵触,我觉得那里根本也学不到什么东西,就一直没有去,自己买了几本书,还真的学不会。纠结了很长时间,当时压力也确实大,亲戚朋友都看着,毕业了,怎么一点动静也没有啊,是不是个书呆子什么都干不了啊。最后实在没办法了,在网上查了查java培训,结果找到了《中软培训》,于是我跳入了一个圈套,我个人认为,这是我一生当中,到目前为止,上过的最大的一个当。当然,我在这里绝没有贬低或者诽谤java培训机构的意思,我只是把我的亲身经历写出来,真实的经历而已。
2003年春节刚过,我就踏上了北漂求学之路。当时我妈是很反对我去北京上这个培训班的,我爸爸倒是支持,之前也去考察了学校,交了学费。不管怎么着,我还是去了。因为我确实是对软件开发感兴趣,想从事这份工作。东西真不少,带着被枕头等,我还记得,当年天津到北京还没动车,是那种双层的日本进口的火车。坐日本人的火车特别累,座椅是90度而且座椅特别短,一个半小时到北京在当时已经是神速了。
到了北京找到培训机构老师,给介绍了个房东。当时是住在人民大学对面,就在三环边上的高层,一个两居室大屋6个人,小屋4个人上下铺。第一次领教了北漂是的蜗居生活,但是第一次离开父母,无拘无束,而且是学习自己的心爱的java开发,即将成为一名程序员,一想到这些还是非常激动。班里20多个人,有男有女,大家相处都很愉快。我在家里是自学过一些java基础课程的,我买了本java基础的书,我这个人有点强迫症,就是总是想称为技术大牛,遇到问题总是打破砂锅问到底的,我还买了一本英文书《JavaTutorials》官方教材,我对着中文翻译过来的教材,大大提高了专业英语的水平,但是我花了很长时间自学的东西,被那个讲基础的老师2天就讲完了,讲的特别快,半个月后我就感觉很迟了,有点跟不上了,当时讲课,一点视频都没有,老师也不给录制,所以有时候他演示过去忘了就想不起来了。我到下个班重听了一边。我发现非常坑爹的是,前面基础+servlet+jsp马马虎虎还差不多。到了后来学struts1也不多,尤其是田雪松老师讲的真不错。问题是hibernate和spring都没讲,然后就进入了项目实战,更奇葩的时候,项目实战根本没有项目,就一个不讲课的培训机构领导,让我们先做需求调研,让我们去找他做项目的需求,他就在办公室接待我们,所谓的办公室也是一大帮人在一起,然后让我们自己想,自己思考怎么做这个项目,自己写代码,也没有例子可以模仿,也没有实际的老师指导,对于我们这些新手还没入行的人来说难度也太大了。我还记得当时办理有个北京人,家住石景山说是原来是首钢的,特别能张罗,组织大家做项目,最后也不了了之全都找工作去了。就这样,我们学了个java基础+servlet+jsp+struts,连分页都没讲,开始找工作了。
这也许是我当时找工作特别费劲的原因,原本以为培训完了可以找到工作,但是因为培训质量太差了,感觉中软的课程体系根本不完整,我去面试的时候被问到hibernate,spring都不会,而且javascript非常的薄弱。又一次面试,对方问我会不会js,我说不会,等面试结束我就上网查什么是js,原来js就是javascript,我去,配需从始至终,没有听老师说过一句js。学校当初是承诺给推荐工作的,其实我觉得现在培训承诺保就业,也不必太相信这些,关键是培训质量,培训质量的关键是老师,学东西最关键的是能跟一个好老师学习,才能真正学到本事,才能找到工作。学的差谁也保不了你,除非有路子。还有一次问我做过什么项目,我就把事先编好的故事说了一边。面试官问怎么做的登陆,我就说输入用户名、密码进行验证,成功就登陆,失败就返回登陆页面,说实在的,当时是非常心虚的,非常紧张的,虽然登陆的例子还是做过的。后来面试官又问,登陆以后把用户放哪,一下子把我问住了,放session啊,但是我没想起来。我擦了,我们一个项目都没做过,老师只举例做过那种整数+1,放到session,request,application中的那种计数器,从来没有举例说把用户放session里面,我的面试的过程,每次都会遇到新问题,我每次都进步一点点。还有问我会不会写树的,我说会,问我一个树节点有几个属性的,我又挂了。其他同学跟我差不多,我一边面试,一边自学,补齐javascript的短板。后来,我就在彷徨和恐惧中开始海投了,每天全选,群发,接电话,有是有一天好几个面试,都跑不过来了。一天下午,我下超市买东西,突然接到个电话说是用友的人事。当时兴奋异常,因为没有工作经验,我面试的都是小公司,这回不知道怎么回事,居然能被用友面试,大名鼎鼎的用友早就如雷贯耳。于是,马上跑回宿舍把简历熟悉了好几遍,因为项目经验都是编的,又好好的推敲了一下,琢磨人家会怎么问。把学过的知识点有温习了一下,怀着忐忑不安的心情,到了上地五街彩虹大厦面试。面试我的人叫什么现在记不清,记得他是个胖子,先是做了点笔试题目,做的什么我忘了,但是做的不好。后来他就拿着面试题挨个问我,回答的也不是很好。最后他看了看我的简历,说你是自考的,我说是,后来又让我写个查询的应用,我就写了个连接数据库,把表中所有数据都查出来,在页面上显示的程序写了一遍,然后就让我回去了。心情很沮丧,来的时候抱着很大的希望,面试完感觉没希望了。过了两天,突然接到用友人事的电话,让我去上班,我擦了,当时这就是狂喜,万万没想到,我居然走了狗屎运,能进大公司。还特意买了件新衬衫。到了用友又见到了面试,他很热情,对我说有个同事离职了,让我接手他的工作,于是开始熟悉代码,没有想到的是,用友用的是swing,我之前也接触过一点,但在学习的时候,老师一直强调这个用的不多,也没怎么讲,学的也不深,看起代码来特别吃力。当时因为没有经验,我看代码不是一边调试一边看,而是打开一个源代码文件,从头看到尾,现在想想,当初培训的老师也不教教怎么看源码。大概是过了一个星期,他给我布置任务让我改bug,我真是无从下手。他们项目也比较紧张,觉得我实在是不行,最后被辞退了,当然也没工资,就白吃了几顿中午饭。当时的心情真是糟糕到了极点,站在公交车上,多少路忘了,当时是没有空调的公交车,我却丝毫感觉不出热,当时正好是八月份,非常热,回去我就发烧了。宿舍的兄弟都不错,当天晚上没有开空调,我盖着棉被还感觉冷,他们一个个大汗淋漓的!现在回想起来,还是很感激那个用友的胖子,从面试的标准来说我肯定不合格,也许是他觉得我是自考的,应该有自学能力,才把我招进来,只是我水平太差,没有把握住机会。于是,又开始了海投。当时已经开始怀疑人生了。就在这个时候,又面试了一家小公司,是做什么机场信息系统的。面试的人好像水平也不怎么样,问我什么是多态,我就举了个例子,然后他就非常惊讶的样子说,我面试了这么多人,这是我听到的最好的解释。然后就开始介绍他们公司,说公司虽然小,但是做的都是大项目,公司正需要像我这样的高手加入,让我带领大家完成机场的项目,我听了也是被震惊了,还问我什么时候可以入职,我说我要在考虑下。我心想,我是找人来带的,居然让我带人。后来面试了一家公司,是一个给某国企做系统的,国企的名字我就不说了,反正是跟国企有关系,要不然也不会能揽到这样的项目。经理问我java多态,我就给他解释了一下,父类的一个引用指向子类的一个实例。编译时…,运行时…,我刚说完他就哈哈大笑,说我说反了,我当时说了写什么,现在记不清了,但是我可以肯定,我绝对没有说反,经历是个结巴,这个我可以肯定。然后发生的事情出乎我的意料,他让我回去等通知,在回去的路上人事就给我打电话让我明天来上班,我擦了,工作来的太突然了!
上班第一天没什么事情,就是装机器,搭建开发环境。我也很轻,因为哪天是星期五,星期六日就休息了。折腾了一上午,终于吧项目从cvs上下载下来并在本地运行起来了。当时版本控制就是用的cvs,哎,培训的时候cvs也没讲,我倒不是说这些东西不能自学,但是培训费花了9800,就学了这么点东西,根本不够用的,太不值了,感觉真的很坑。2003年的9800啊,不是一笔小数字啊!一看那些hibernate,spring的配置文件,马上就晕了。当时买了本孙伟琴的hiberate学的挺慢的,spring接触的也不多。终于快下班了,经理对我说,明天一起来加班吧,项目挺紧张的。我当时就晕了,我擦了,第一天上班就加班,我说,好,没问题!
第二天早上4点多,我突然惊醒,其实我一晚上都没怎么睡觉,想想明天要写代码就特紧张,怕完不成任务又让人开了。穿衣服爬起来,在床上打开电脑,弄了本书开始研究分页,说实在的分页对于一个没有开发经验的java程序员来说,确实是有点难度的。我想做项目肯定会有分页的,到了6点多,终于研究的差不多了。洗漱吃早点,去上班了。果然,第一个任务就是一个模块的增删查改,我模仿其他模块做了一天,hibernate的分页还是比较简单的。就是js有点麻烦,有个地方搞不定,还让项目经理帮了下忙,下班的时候,经理对我说,怎么样,我说还行,写完了。于是,他检查了下我的模块,看了下代码,有对代码中变量的命名,代码注释等格式问题,做了指导。下班后,我长出了一口气,终于找到工作了。两个月就过了试用期,工资4000.
这是我的第一份工作,万事开头难,工作中遇到了很多的困难,随时面临新的挑战,我觉得只要有毅力,这些困难都不是问题。两年后我跳槽了。去了一家国企做电力系统的项目。这个公司做了两年,感觉国企的氛围实在真的是受不了,项目很紧张,还要让你去开会,听什么领导讲话。讲我们集团以后要怎么怎么样,他大爷的,我手里的活明天要交差,干不完要加班,加班干不完要通宵,哪有功夫听你瞎BB。大大小小的会议特别多,领导说起话来特摆谱,我进公司两个多月,一直以为公司的副总是老总,公司的老总是副总。因为每次开会的时候,副总说起话来特像老总,老总到是笑嘻嘻的,还老征求副总的意见,但是副总说话都是命令式的,从来不问大家有什么意见。后来跟同事聊天才知道,我搞反了。也许是副总谱摆的太大了,最后让老总给撤了。
2007-2008年正好赶上互联网的泡沫,整个世界经济危机,中国也受到影响。帝都的写字楼里,也经常听到有的公司在裁员,有的在降薪。我当时想着回天津,在家里找份工作,要赶紧搞对象,结婚了,家里也是催的紧。赚钱已经不是首要目标了,程序员都是单身狗,难道这就是宿命。我辞去了北京的工作回天津找工作。2008年的天津软件公司特别少,在网上就很少,工资也特别低,回家找了两个月打击很大,工资太低了,而且都在华苑软件园,特别远。很无奈,我又回到帝都,拿着锅碗瓢盆,再次北漂。
后来在一个小公司干了两年,给农业银行做考试培训系统。突然一天接到老大的电话,就是我第一份工作的项目经理。他说他在做电商是技术负责人,让我过去帮他,特别高兴。去上班的头一天又见到了以前的同事,大家又在一起了。写到这里,我又打开了马萨玛索 (http://www.masamaso.com/),这个我曾经为之努力工作的网站,竟然发现显示全店升级,敬请期待!!!真不知道我走后发生了什么,是不是被马云挤垮了。在做电商项目的时候,确实应用了很多新技术,主要是解决高并发业务,比如秒杀之类的。当然那个时候主要是使用mysql的集群和主从同步,也就是在那个时候,我接触到了运维,并且参与到了网站的运维工作。当时使用的是Memcached作为缓存,ActiveMQ作为消息队列服务,单点登陆、首页静态化、lucene等技术都接触到了,并且在应用到了实际工作中。在这个公司我学的了很多java互联网开发的技术。而且我通过世纪佳缘,找到了另一半,2011年我结婚了,呵呵!!!
2011年底,我离开了这家公司,我想向上努力,我需要得到得到质的提高。这回找工作我不再面试程序员了,而是系统架构师。终于,我找到了一份系统架构师的工作。具体什么单位不能说,因为是涉密的,我们上班都不能上网,也不能使用U盘。我亲自架构了整个系统,我在整个项目组中算年龄比较大的,有一个领导大家都叫他猴哥,可能跟我差不多,还有一个经验丰富的程序员,不过他是c语言的。我们需要将飞机传送到地面站的报文进行解析,这个是c语言来完成的,然后存放到数据库中,由java程序进行处理。运用了google地图+js制作了飞机航线系统,解决了晨昏线和飞机转向算法,当然,这个算法是请教了专家,我就是通过程序实现他的算法。我负责技术选型,当时选择的是ssm,ssm和ssh我纠结了好久,最终选择了ssm。事实证明我的选在是正确的,现在的系统基本是ssm的摒弃了ssh,struts2这种多进程的mvc框架注定了它不适合处理大并发项目。后台使用springscurity做的权限系统,我负责核心模块和基础工具类的开发,数据库的设计,服务器运维优化。权限系统是每个项目的核心模块,整个权限系统,单点登陆功能是我独立开发的。当时由于还没有出现dubbo,spring cloud这种分布服务是架构,所以采用的是Webservice作为解决方案,确实存在一定的性能瓶颈。xml传输还是有点慢。但是基本满足了项目的整体需求,最后通过了专家组的验收。这个项目做了五年。
2016年底,我和我老婆回到了天津,我工作了这么多年。加班无数,年龄也大了,有了孩子。感觉自己不能向以前那么拼命了。我现在自己想从事java的培训,自己创业,将自己的工作经验传授给大家,同时降低大家的学习成本,少走弯路,再也不要走我的培训之路了,回想起来一个垃圾培训,实在太害人了。
这些是我录制的视频
java英文补习班:https://ke.qq.com/course/245618#tuin=154a0e15
java基础:https://ke.qq.com/course/190434#tuin=154a0e15
java数组: https://ke.qq.com/course/190439#tuin=154a0e15
java嵌套类:https://ke.qq.com/course/190440#tuin=154a0e15
java枚举类型:https://ke.qq.com/course/190442#tuin=154a0e15
java面向对象:https://ke.qq.com/course/190443#tuin=154a0e15
java注解:https://ke.qq.com/course/190445#tuin=154a0e15
java Number类:https://ke.qq.com/course/190446#tuin=154a0e15
Oracle 数据库
Oracle 12c 安装 https://ke.qq.com/course/190469#tuin=154a0e15
Oracle 11g 安装 https://ke.qq.com/course/183774#tuin=154a0e15
SQL语言 https://ke.qq.com/course/190481#tuin=154a0e15
PLSQL语言 https://ke.qq.com/course/190489#tuin=154a0e15
以上是我真实的经历,回想起来这么多年,最遗憾的是,我一直没有在北京买房,当时思想还是保守,没有贷款 啊,后来房价飞涨,就更不敢买了。还好,2015年我贷款在天津,河北买了房子。终于跑赢了CPI,虽然没有大富大贵,结局还算不错。我觉得,只要努力就会有回报,我也祝福即将称为程序员的朋友,能够达到自己的人生目标。