是2的十次方,是二进制计数的基本计量单位之一。在计算机的发展史中,在和0/1所代表的二进制世界里,有人用代码编织出了形形色色的数字、程序、互联网,创造出一个个神话。
——他们就是一群可爱、低调、踏实的程序员,昵称:攻城狮、「程序猿」、爱码士。10月24日是“程序员节”,今天我们就来聊聊这群爱码士:一群爱逐技术前沿、爱追梦的人。
荔枝集团研发中心的基础架构部技术骨干吴就业给我们带来他的故事:从一个五线小城乡镇青年,一路通过自己的努力打拼在一线城市立足,成为上市公司的技术骨干,写专栏,出了两本技术专著。他的身上,可以看到技术带给我们的无限可能。
以下是吴就业口述:
1专科时期:为了去北京,自费参加编程赛
我的老家在广西钦州钦南区的犀牛脚镇,高中时候成绩不好,年考入广西职位技术学院学习软件技术,是一所专科院校,对我们老家来说学费也不便宜,自己内心还挺有压力。第一次接触编程,期间主修Windows应用开发、Android应用开发。
大一学习c语言,但感觉学校教学进度太慢,自己先一步把一个学期的课程学完。有同学抱怨c语言指针很难学,但我没有那种感觉。后来不满足面对黑漆漆的屏幕,于是自己去图书馆学习php编写个人网站。
大一上学期结束后,我主动报名参加年第六届蓝桥杯算法比赛,开始接触算法。14年寒假在学校参加培训,而培训我们的正是我的恩师罗运贞,也是后面三个学期教我们主修课程的老师。罗老师一直教导我们,编程语言基础很重要、数据结构和算法很重要。
由于我并非学校初选选中参加比赛的,而是自己交钱参加比赛,所以一开始并不被看好。事实证明,那一次比赛我的却连国赛都进不了。
进国赛是可以去北京参加比赛的,从农村出来的我,也很想去北京。后来我就跟自己较劲,下次比赛一定要进国赛,一是想证明自己并不差,二是确实想借这个机会去北京,去一趟故宫、长城。受打击后,我就开始努力学习,学算法。
大一第二个学期算法课上,我当时总喜欢在老师面前表现,想要得到老师的认可,提前把老师觉得难不适合我们学的图结构和遍历算法都学了,课堂上老师出题目,我就直接到老师电脑上“趴趴”做好了,后来在学校的专业上成绩也一直排名第一,现在回想觉得自己像个小学生。
大二我参加年的第七届蓝桥杯比赛成功进入了决赛,虽然只拿了国赛二等奖,但第一次去了首都北京玩了几天,挺开心的。
当时,大专并不开设汇编语言课程,我就自己去图书馆借书学习,网上看小甲鱼汇编课程学习。
我印象比较深刻的是,有一本王爽写的x86汇编语言入门书籍,对我来说实在太深奥了,我一个学期内反复去图书馆借了三次,看了三次。第一次看得懵懂,没看完,后来看完小甲鱼的视频课程后开始看第二次,觉得看懂一些了,便动手写一些demo,第三次看是把没理解的看看能不能理解。虽然后面没能应用到工作中,也忘了,但是对低层的理解一直有印象。比如汇编指令是怎么执行的,寄存器和内存寻址,我们在c语言理解的函数是怎么跳转执行又是怎么回退回去接着下一条指令执行的,中断又是怎么中断的,这也为我后来学习jvm字节码打下了基础。
大一第二个学期,期末报名参加年全国数学建模竞赛,暑假都是在学校度过的,当时整个学校就我们十来人。我当时并不是真的热情参加数学建模比赛,而是因为比赛也涉及编程,而且是将编程算法用于解决实际问题,所以就有了兴趣。
记得有一次,老师布置一道作业,三天时间完成,有一天晚上,我思考了很晚,忽然想到什么,兴奋的睡不着,但宿舍已经锁门,而且学校也没什么人,这么大的学校这么安静,也不知道我是怎么鼓起勇气一个人翻宿舍的墙到教室敲代码的,一坐就是通宵,终于把题目做出来了。不过后来比赛成绩并不怎么样,只拿了三等奖。
大二,我们也开始学习windows应用开发和Android应用开发。当时也参加过中国软件杯比赛,不过那一次连安慰奖都没有。当时恩师教我们,应该去看看开源项目,能够从别人优秀的代码中学到很多东西。
大学期间自己还写过很多好玩的东西,有的是学期期末考试作品,有的就是自己觉得好玩做来玩的。比如用c#写的纸牌游戏、简单版的图片编辑器,驾考模拟考试APP,用java写的校园二手交易APP。大二时候还认识一位比较厉害的学弟,自己写了跑酷游戏APP、课表APP,也是从学弟那里学了些好玩的,比如侧滑折叠展开菜单的实现、底部按钮点击弹开子按钮的自定义控件,后面还自己实现下拉刷新上滑加载的瀑布流控制,这些都是当时非常流行的元素。
大三在恩师的推荐下,就提前一个学期出去实习了。第一份工作公司是给南方电网开发windows应用的,工作4个月,做了一个利用socket通信控制摄像监控设备的系统。
当时还没毕业,其实并不好找工作,很多面试其实就是培训机构搞的套路,好在我没上当。期间面试过做php的,给的薪资,都不够生存,公司在小区里就几个人那种。
坚持一个多月终于找到了自己想做的Android开发的工作,给了的薪资,自己还觉得很满意就去了。在工作中,自己当时把主流的RxJava、Retrofit、OkHttp融合成一个网络组件。当时有个需求,就是在app上展示报表,显示的列很多,要求左右滑动、支持选择隐藏列、固定某几列在屏幕左边,支持上拉加载下拉刷新,网上找不到适合的开源控件,于是就自己写了一个。
工作之余自己也去学习动画算法,比如贝塞尔曲线,用于实现按钮弹开还能做的效果,虽然最终实现很生硬,不过却也收获蛮多。
也利用工作之余,利用之前在工作中学到的socket通信,用c#写服务端,java写androidapp,做了一款模仿