从2022年进入软件行业到现在,二十二年眨眼之间过去了,依然奋斗在编码第一线,挣扎在第一线,借此程序员佳节之际回顾一下这许多年的历程。
由于本人混得实在不好,工作过的地方都用某单位某公司来代替实际的,到不是那些地方的人和物不好,而是我自己不好,特此声明。
我的大学专业并不是计算机软件,九十年代计算机专业录取分数很高,而数学特别是基础数学专业,不但录取分数低些,而且学费减半,可能是因为没有什么人来读吧。我所在的某大学在网上查显示的是一本大学,但既不是211也不是985,在我们那个年代高考是先估算考分进行填写志愿,然后才知道自己考分,很容易填报失误的,我的大学向来是为那些考试失误或考试不理想的学生提供一个最后去向的地方,她对本省招生量很大,最近好像还闹出了这方面的尴尬事。
进入大学之后,基础数学的各个学科本来就抽象而枯燥,加之我们的情况就是在中学六年把学生的学习激情全部榨干,到了大学之后肯定是尽情发泄,反正当时想法是将来按国家分配去教书而已,又成不了数学家,何必去伤脑筋读书呢。大部分男生放飞自我,扑克、麻将、专场录像、街机游戏、赌马、周边旅游、自行车漫游、徒步等等活动占据了我们绝大部分时间,逃课简直家常便饭。我们当时也开了一些计算机专业的学科,记得有C语言、Pascal语言、Dephi、数据库什么的,还有一点点上机课,反正我特别不喜欢学习这些,上机课去了几次,记得在DOS系统上玩超级玛丽就是唯一的内容,其它狗屁不通,以至于一个学年下来,我的上机实习次数基本没用什么,不过当时只需要笔试, 倒是所有的科目都及格了。
回忆大学过往,记得C语言这科笔试成绩还不错,虽然我经常逃课,去上课也是坐到最后一排,但是我有两个特点:一个是喜欢跑到图书馆里自学,自己学习数学课程,或者看一些其它相关的课程;另一个是喜欢文科科目,自由选修的科目都选择了纯文科,而且去上课还比较勤快,基本没逃课。可能这是后来我容易转行做软件开发的两个因素吧,毕竟计算机软件和数学关系很大,软件开发特别需要一个人能自学各种新技术,而文科兴趣让我明显比周围同事写文档的能力强一些,至少我不拒绝去写各种方案文档。
两千年的大学毕业对于差的本科大学已经不包分配了,原本等着国家分配的我们傻了眼,在那个没有手机、不会电脑、更不懂互联网的夏天,找工作只有等着学校一场又一场招聘会里的微小机会,去更差的本科大学教书是不可能了,去高中教书只有回本县城,最后广东粤西一个城市的电大来招数学老师,说是教大专内容,至少比去教高中好一点吧,当时也有一点意识广东是改革开放最发达的地方,离我们也比较近,但不知道的是粤西不是珠三角,没那么发展快。
两千年的八月底我带着行李来到粤西那个小山城,开始了我的教学生涯,刚开始是教大专高等数学,以及中专班的高中数学,再后来计算机大专班的C++编程课也让我去教,我只有硬着头皮去学习C++课程,同时又把自己大学的谭浩强C语言教材学习了一遍,当时只有电脑室有几十台Windows98系统,我自己是没有买电脑的。当时我是用笔在A4纸上写代码,一个个习题去笔写出来,然后等有空了去电脑室集中编辑和调试,相对于今天人人都有一台笔记本,那时学习得异常辛苦,但是也乐在其中。当时是在DOS6.22上调试C语言教材上那些习题,后来在经典的VC++6.0上调试C++教材上的习题,这些都没有界面,之后去广州天河购书中心买了一些VC++ MFC框架开发的书籍,学习一些简单的MFC界面开发,能做一点对话框、单文档、多文档风格的界面程序,记得当时给一个县新华书店做了一个简单的进销存软件,主要是可以录入、可以打印清单的功能,当时好像还给了我几千块开发费用呢。
一年之后我有点飘,也就是第三个学期,认为自己的软件技术很牛叉了,总是蠢蠢欲动想出去广州混,也慢慢学会了上网,在51job, job168和jobcn上注册了,当时基本就这三家招聘网,由于离广州实在是太远,别人叫面试也不方便,最后在2021年底干脆辞职,信心满满地去投奔广州的大学同学,当时有三四个大学男同学已经在广州工作了,有教书的有做软件开发的有做数据分析,我去和大家一起合租,不过是多分担一点房租而已。2020年的广州天河,刚开始是几个人在华工校园里合租老师的老房子,后来是去天河客运站不远处的一个新小区合租一套新房子,还记得是惠州铁路工人的一套分房,那个时候晚上一起吃快餐,周末一起吃大餐喝啤酒,一但碰到谁生日了,肯定晚上有人喝吐喝趴下,那个时候是最快乐的一群单身汉,父母都还年轻不用我们管和担心身体,单身一人没有女朋友或老婆管,当时企业发工资都是现金,我们基本是不去银行存钱,多得就放到合租房子里,然后剩下的就放到身上的钱包里,当然当时工资也不高,基本上一个钱包放得下毛爷爷。
当然,我讲得自己有工资的时间,那是我辞职五个月之后的事情了。我从2011年11月辞职来到广州开始找工作,直到2020年4月份才找到一份软件开发工作,还很清晰记得是4月2日。当我在广州真正投简历去面试的时候,才知道前面学习得那点编程技术是多么的不中用,每次信心满满上午出门去面试,中午心情沮丧着游荡回来,C++编程本来就难,又没有任何实际工作经验,又不是应届毕业生,从理论到实际工作经验都不行,当时处在一个非常尴尬的境地。还深深记得有三次面试对我打击很大:第一是去一家台湾游戏公司,要我当场把MFC对话框菜单从上面改为左侧显示,我从二十一天学会MFC的书籍里学来的那点知识哪里会这个,折腾了一阵之后,在别人轻蔑的眼神中灰溜溜地跑了;第二是去华工一家校办企业,叫我上机操作读取文件夹下面的文件做一些操作计算,具体不记得了,反正我折腾一阵根本不知道怎么实现,只记得我一下子把机器给搞锁屏了,进不去了,管面试的是前台小文员也不会给我密码再进入,又灰溜溜地回去了;第三还是华工里的一家软件企业,应该是做外包的,反正后来它成为很大的外包公司了,当时是笔试,一个整型溢出题就把我考倒了,还记得那个年轻人还把我扁了一顿,说这个你都搞错,叫你进来还不搞出大问题啊,回去好好学习吧。反正前前后后一两个月不停面试,一次次把我以前那点信心全部击垮了,甚至当时都想去东莞和顺德那些更低要求的城市去,也去了东莞、顺德、珠海去面试过,基本都是被扁。
好在当时同学多,我教书时也积蓄了一些钱,生活是完全不成问题的。其中一个同学技术很不错,他在大学里就有意识地自学了C++编程,一毕业就去找软件公司做开发,到我辞职的时候已经在广州不错的软件公司上班了,他给我忠告:这样不停面试不行,你得加强一下然后去面试。他把自己的笔记本电脑给我用,白天我就用他的笔记本训练,晚上下班就还给他,我自己就看书,最主要是他把一个某地市的水务缴费网关系统给我分析,我从架构设计方案文档、通讯协议定义文档等分析,然后细细分析系统源代码,记得这个系统涉及了MFC界面开发、winsocket网络通讯、MFC多线程编程、数据封包解包、协议转换处理等等,我花了很长时间去分析调测,每天晚上下班回来我就不停问他技术问题,涉及的知识点不明白的,就买书去学习。2011年底过年,记得大家都没有回去,一起在广州过年,过年前后也不好找工作,时间到了2022年3月,我在同学的指点下对这个系统基本很熟悉了,能做到把它完全复述出来,刚好这个项目是我们省某个地市的项目,广州这边公司不可能知道,所以我就把他做成了我的一个工作经验去面试,很快就搞定了两家软件公司,一家是短信服务开发公司,一家是银行软件开发公司,我后来选择了短信服务开发公司,因为她先给我上班通知,五个月没有找到工作太需要一份工作来让自己保持信心了,不然可能要转回去教书了。
后来我自嘲:你在面试时讲得这个项目经验是不是真实的不重要,重要的是你目前的能力是否到达你讲得这个项目应有的水平。
现在年轻人可能对五个月没有找到工作嗤之以鼻,不就是一份工作嘛,爱干不干回家休息1年又如何,可是在那个年代,一个从很偏远的农村走出来的大学生是没有退路的,当父母辛辛苦苦把你好不容易搞到大学毕业,基本就不管你了,不但不管你了,而且你成为了现在所说的“凤凰男”,因为你的村里人和你的父母亲戚都认为你很行!你没工作?你五个月没工作?那你父母的脸都丢尽了,看你笑话的人可以比那个年代的四大天王演唱会还多。我当时的情况更糟糕,就是年龄很大了,那个年代没有幼儿园,我上小学推迟了一年,后来又因为村里只有一二年级,去镇上读三年级要走山路年龄小不安全又留级一年,别人22岁大学毕业,我已经是24岁了,真正进入软件公司的时候已经是26周岁了,相对于今天喊着要30岁进入管理层,我当时就没希望了,所以直到今天我对那些喊着多少岁要进入管理层的言论一概不理,大家都进管理层了,谁来做架构写代码啊,都让刚毕业的小伙子干活,平台系统能有多稳固呢。
万事开头难,进入软件行业之后发现工作也不容易,既不是遍地黄金,也不是轻松福利好,直到今天还是日子平平淡淡,还要担心失业问题呢,这么多年就剩下一个还保持着:兴趣。
我始终认为软件编程行业是需要聪明人的,没有一定智商是不行的,有些东西你不理解就是不理解,花太多时间也无济于事。而另一方面,我也始终认为很多系统不是一个聪明人就能写成的,他也需要一大批一般聪明的人来完成常规工作,当然智商不达标的人真的不能加入进来,看似言论不合理,但当你项目组来那么一两个糊涂蛋、bug制造机器,你就真知道痛苦了,特别是中小公司没经济条件全部招聘优秀人才的情况下。我讲这两个方面,最后的意思是我认为比较好的状态就是,一小批聪明人带领一大批智商正常达标的人一起开发系统,大家各司其职,所以我的目标就是做这个一大批中间的一员,把这个工作做好,我成为不了那一小批聪明人中间的一员,也不想沉沦下去认为软件开发如何如何不好,把本职工作做好,然后坚持终身学习,保持一个积极的心态就好,所谓活在当下。
回到我的故事经历里来,第一家公司刚开始才几个人,开发人员就是两个C++开发人员,我和另外一个小伙子,后来慢慢熟悉之后才知道这是一家SP短信公司,今天这个行业基本不见了,但当时也是一遍蓝海行业,这些公司都是给三大运营商打工,SP公司接入运营商通道然后自己做各种短信业务,收入是15%归运营商,还不包括运营商收取的短信通道费呢。SP行业没有任何高深的技术,其实就是一个短信协议:CMPP, SGIP、SMGP,开始我们用短信网关开发商提供的客户端库进行开发,比如有华为网关、亚信网关、中兴、傲天等等,当你短信量发送大的时候都不稳定,后来就自己按协议实现客户端侧功能,这个过程就对socket通讯编程、短信协议、异步通讯处理搞熟悉了,对一个刚进入软件行业的愣头青,其实简单一点还容易成长,基本上一个人经手了所有部分,当然后面还要数据库,业务处理模块,web管理系统等。
我在第一家公司整整待了三年,从SP行业的蓝海状态待到红海状态,不要小看当时SP行业,一个小小十几号人的公司,一年收入能有五六百万,不用跑任何客户,就是纯粹做业务,当时不叫做产品,叫做策划,讲究的是短平快。据说现在某一流互联网公司,九十年代差点死掉,就是靠SP业务把资金做起来了。一个行业一旦赚钱,是人是鬼都进来了,刚开始是正规业务,慢慢就出现非法业务,慢慢就引起大众重视,315曝光,逼得各大运营商不得不整顿,最后大家日子都不好过,第一家公司一直生存了12年,直到最后被收购。
在这样十几号人的小公司待久了技术根本没进步,我也想换换环境,在2005年这段时间里,是我最动荡的1年,我尝试着去融入好几家公司。
第二家是两个海归创建的公司,做电信监控软件的,老板挺好,但同事不咋地,老同事根本不给你任何指导,主动离开。
第三家是代理品牌电脑的公司,但是尝试做企业级通讯软件,进去之后发现死气沉沉,压抑得要死,从今天来看,当时他想做一个企业微信,没张小龙那个功力而已,主动离开。
第四家是当时一流的门户网站公司广州分公司,进去之后还是搞短信业务,本想度度金,还没过试用期,整个部门被裁掉,被动离开。
第五家是另一家具有几百人的短信、门户网站公司,进去之后还是搞短信业务,部门开发组长根本不懂管理,一会儿一个主意,折腾人,三四个月之后,主动离开。
第六家是一家二十几人的小公司,准备做短信业务,忽悠我给3%技术股份,想想就去了,这个时候已经是2006年上半年的红海时期了,重头起步很难,经营3个月收入20万,两个老板见好就收不做了,但是却说这3个月开销就是20万,所以3%分红一分没有,当时我们只有3个人,工资才几千,老板吃相很难看,当时没有那么多法律保护意识,也懒得和这种人耗下去,主动离开。
第七家是做邮件系统的公司,老同事介绍过去的,环境很好,公司虽然名气不大,但是是上市公司,里面高手不少,在这里学到了Unix C++技术,分布式系统架构技术等等,特别在这里接触到了正规的测试部门和运维部门,以前那些公司开发人员承担了一切,在这里有明确的分工。
在1年时间内换了六家公司,基本是我主动离开的,不开心,没兴趣,一定不要将就着做下去的,不要把最后那点对技术的兴趣都打磨掉,不然最后只剩下行尸走肉就不好了,因为不可能有大富大贵来刺激你的每一天。
还有,如果你想搞软件编程,类似SP短信公司,当然还包括彩信、WAP等,都是没有任何技术含量的,去一次就可以了,时间也不宜太长,不然技术积累上就是浪费时间。大公司就是大公司,只要你做一个有心人,还是能学习到很多东西的,你可以从已有的老系统来学习,也可以从周围的同事身上学习,你可以学习具体技术,也可以学习软件流程管理。
在第七家公司整整呆了2年,选择主动离开,不是不喜欢这里,而是不得不离开。一直很穷,在广州无法买房,当时也没眼界,去远一点的地方供房也不敢,怕是没房产证的开发商,所以之前就在老婆娘家广东某三线城市买了房子,送两个房产证,儿子快出生之前就计划要回到这个城市去,所以不得不离开。
从今天来看非常错误,一旦离开一线城市久了,是很容易脱节的。第六家公司被当时同事戏称跳往大公司和外企的摇篮,很多同事从这里走向大企业,后来都混得很好,至少比我好了很多很多,当然啦主要是比我智商高很多,主要因素我不能否认。
在这个三线城市一呆就是7年,一直在第八家小公司没有动过,主要是C++开发和Java开发,做得是安全行业的软件系统,主要是网络数据分析类的产品,底层用C++来开发,管理系统用Java来开发,行业涉及到好几个政府部门。小公司人手不多,公司涉及的业务都要参与开发,使用到的开发语言我都去学去用,包括VC++, LinuxC++, Java, Python, JQuery等,有一阵子还搞PHP和nodejs,反正什么合适用什么,其它同事用了什么就跟着学习着用,全部是为了工作需要,没有专门去加强某方面知识技能。
三线城市7年里,似乎是用了很多技术,但是我在一线城市的时候,中国互联网技术和思想还没有迅猛发展起来,当时的技术思维还很狭隘,没学到什么东西,而当一线城市在2010年左右互联网企业蓬勃发展的时候,各种技术思潮涌现之际,我却在三线城市不闻不问地摆弄一些技术,甚至有段时间我在学习perl这种过时的技术,完全和一线城市脱节了,当2013年微服务技术到来时,我基本没接触和感应,也不看相关的技术网站,就是基本不知道从什么渠道接收技术新信息和新思想。第7个年头有一个事情让我离开了三线城市又回到广州,那就是没钱了,因为家里按揭了第二套房子,我想几年就搞定贷款,只有继续回到一线城市。先是同事介绍去了一家二次创业公司,就是能赚钱的母公司不动,新成立一家公司专门做互联网业务,希望能上新三板圈圈钱,但实际上具体业务却是一个根本老掉牙的东西,我都不想谈,但是这个时候有一个好处,就是周围的同事都是在谈互联网技术和产品,我见到了专业的产品人员,也和老同事经常见面,微服务技术思想、SpringBoot, SpringCloud等等第一次听到,这个时候已经是2015年了,什么电商、O2O、金融互联网、IPO、新三板上市、野蛮生长等等,一群同事多多少少给了一堆网站,每天早上都要刷一遍,在这1年时光了囫囵吞枣地学了很多新东西。之后,新三板进入寒冬,没那么容易上市圈钱,公司烧了几百万,大家不开心地散火,反正当时给我月薪3万总比三线城市强,我也没什么太多不开心。
但是房贷还是没解决,房贷是永远的动力,急急忙忙又去了深圳,深圳是第一次去,也是同学同事帮忙拉东西,先是面试了一家大公司搞安全的,流程有些慢,我是急性子等不了,只要工资比广州高一点就可以去,所以干脆就去一家大公司干外包了,等到我上班一阵子先前那家人才通知我过去,想想在深圳也不会长待,就没有折腾辞职去了。在这里我继续接触到一些新技术,比如IaaS、PaaS和SaaS,用Dubbo开发SaaS类系统,做数据驱动类的工具系统,那阵子流行低代码平台,亚马逊大棒子全球巡回演讲,国内几家大公司也是投入很大,前端系统用React和Vue技术,我也是第一次接触到这类新框架技术,如饥似渴地学习,至少知道这些技术是干什么的,优点缺点是什么,和一些同事聊天了解对方在学什么。在内部技术论坛上,分门别类地放了很多技术文章和资料,有专门的人员来维护的,我比较关注微服务、大数据、云计算、信息安全、区块链这些新技术,有空基本天天看看,确实开阔了我的视野。
我去广州的时候已经40岁+了,谁说年纪大就找不到工作,三线城市去一线城市就没人要,你按你实际能力去找相应的工作即可,要求不要太高,两万的本事找两万的工作,三万的本事你不要去想着四万的工作。大概两年多后,三线城市那点房贷也搞差不多了,本来想去深圳另外一家大公司做系统安全架构师,offer都收到了,而且很方便去深圳北站,不过这个时候三线城市的前老板向我抛出了橄榄枝,约我回去,给技术股份,上班自由,想想自己始终是要回去的,不如见好就收,上班自由是很难得的,最后就是上午在公司办公,下午在家里办公,我推掉了深圳那家人回来了。
时间一晃到现在已经回来5个多年头了,把外面学来的在公司一通折腾,把公司的单体SpringMVC系统分拆为前后端分离架构模式,然后又引进云原生技术,搭建docker swarm集群来部署系统,对数据采集、传输、处理、入库和分析流程,引入Hadoop YARN技术管理容器资源,采用Flink和Spark做实时流式计算和定时批处理计算,引入对象存储技术MinIO、SeaweedFS,人脸识别特征向量milvus技术。总之这五年折腾了很多,反正我也是什么都干,C++/Java/Python/Go都写一点点,基础系统调研搭建带头干,GitLab CI/CD持续集成持续发布等软件管理流程也带头引入,用Vue取代了JQuery技术,前端引入微框架,也去做运维工作,引入Prometheus+Grafana, 以及ELK+filebeat,等等,不敢说每一个技术选型都是对的,但是至少我们的心是好的,发现不合适的也会及时废弃或取代,总之,一直就是一个兴趣支撑着。
正如网上所说,愿你走出半生,归来仍是少年,有时发现自己在人情世故上非常幼稚,完全没有达到四十几岁的水平,每周写一些没有技术含量的业务代码和技术方案文档,跟风一些新技术,根本没有规划未来,根本没有意识到自己已经快五十岁了,没感觉到腰椎有什么问题,颈椎通过徒步锻炼也好了很多,比四十岁以前还好。有房子有车子,但没有房贷没有车贷,虽然只有年薪10万+,但这是三线城市,还有下午在家办公的灵活性,我们还是五天制不加班,所以我基本是满足了,所谓知足常乐嘛。
一如既往的编程兴趣让我一直在小公司走下去,我不知道失业会是哪天到来,也许就是明年,也许就是明天,但我懒得去想明天的事,活在当下,保持初心,保持技术兴趣,把每一天的事情尽量用心做好,对得起所在企业,对得起自己良心即可。
我有一个计划,等我小孩上大学了或者大学毕业了,那时他离开这三线城市去求学或工作,我要再去深圳打工做软件,或者是开发、测试,或者是运维,五十几岁还能找到一份满意的工作吗?
让岁月给我们答案吧!