大家好,我是瀚码技术副总经理赵翔,目前负责公司市场相关的管理工作。自打我转到市场岗位来,爱渠道小编刘幸福同学就一直批评我工作做的不到位,并且给我安排了写一份自我介绍的作业。按道理讲,现在就来写这样一份自传体文章还不太合适,一来是我还远没有到退休年纪,可以说正是少壮之年,离“忆往昔峥嵘岁月稠”的日子应该还远;二来是事业草创初,资历尚浅,一些见解和感悟还很浅薄,实在不应该拿出来贻笑于大方之家。但静下来想想,脱离程序员的角色也有两年多了,时间不长,心中对它仍然余情未了;二来,正值瀚码低代码在线社区开站之际,也想贡献点内容,因此就斗胆献丑,借题发挥抛砖引玉,谈谈我的程序员生涯。
从菜鸟到入门
时间拨回到2008年夏天,那年我高考发挥失常,心里非常苦闷。我的母亲于是交代我哥把他的笔记本电脑借我,估计想转移注意的方式来帮助我慰藉受伤的心灵。但是没想到这把我整成了一个网瘾少年,我没有像各种传奇大佬一样,在那个夏天自学成材成为软件高手,相反我沉迷于《火影忍者》、《海贼王》《死神》这样的日漫无法自拔,消磨了整个夏天。于是乎,在填报志愿的时候,为了能够早日有正当理由拥有属于自己的一台电脑,我毫不犹豫的填报了计算机科学与技术专业,这就是我程序员故事的起点。
平凡人的故事总是这样,没有太多高瞻远瞩和神机妙算,有的只是一个个机缘巧合,一个一个动机不纯的美丽误会。
大学一年级,我基本上拿遍了学院、学校的各类荣誉:我当选了本班班长、作为院代表参加英语系主办的模拟联合国代表、获得了演讲比赛第一名、参加过三次院/校的征文比赛并且次次榜上有名、就连我的相声节目在校迎新晚会上也被评为最受欢迎节目,离大满贯就差一个有技术含量的学科类奖项,于是我瞄上了校数学建模大赛。
那时候我是个编程小菜鸟,但所幸比赛是小组制比赛,三人一组。而我们组里面有一个编程高手--蘑菇同学(研究生后去了美国微软的语音技术团队),所以我可以说是躺赢了一个校三等奖,同时作为全校唯一的一支一年级获奖队伍参加了大一夏天的校集训。也就是在这次训练营里面,我们提前学习了诸如《计算方法》《MATLAB编程》《SPSS分析》等课程。这些课程对于大一的我来讲显然是非常困难的,但是却极大的震撼了我:之前应试教育从来没有告诉我数学是一门如此实用的课程,原来社会中那么多的工程学、经济学、各类难题都能在数学和计算机的配合下得到解决。因为这两门学科的结合,世界运行的井然有序,妙趣横生。在那个年夏天,我一下子明白了学习的意义,也爱上了我自己的专业。所谓干一行要爱一行,这种对于自己专业深深的肯定和由衷的热爱恰恰就是最原始的初心。
当然这其中自然少不了榜样的力量,我对蘑菇同学产生了深深的崇拜之情,彼时他就是我心目中的大牛:中学的他就自学Basic编程,成为了他所在城市的少年编程大赛冠军。他留着酷酷的卷发,蓬松的像一团蘑菇顶在头上,经常一副大裤衩子大背心的装扮,脸上因为缺乏打理总之胡子拉碴的。总之,他就是那种一看就是技术高手的形象。
有了学习的工具,知道了学习的目的,同时还有学习的榜样,那剩下来的事情就变得顺理成章起来:从大二开始,我辞去了一切社团和班级职务,开始通过各种途径满足我的突然暴涨的求知欲。这种求知的热情贯穿了我整个大学时代,一直延续到今天,并且我相信能一直延续到今后的每一天。
我的基础很差,差到对计算机的基础组成部分一无所知:什么是BIOS、南桥北桥芯片、什么是主板、内存在哪里这些都不知道。于是我利用当时还是科技协会副会长的职务之便,组织了学院的计算机组装大赛:我联系了学院领导,请他们把学校的老机房开放出来作为比赛场地,学校方面非常支持这个比赛,立刻同意了我的请求,我于是在一段时间内成为了学校老机房的主人。老机房里面横七竖八的躺着几十台奔腾老机器,虽然不至于落满灰尘,但是确实好处时间没人用了,但是这些都是比赛的绝佳工具。装机大赛的比赛内容是比谁在最短的时间内能把主机完全拆散然后再原样复原并且能够正常点亮开机。为了保证比赛的顺理进行,那段时间我基本没课就呆在机房,一个人把整个机房里面几十台老机器都重装了一遍,确保每台机器能运行正常,保障了大赛的顺理进行。到比赛结束后,我已经对计算机的整体组成非常熟悉,甚至学会了听声辨障法:只要听到机箱上电后的声音,我大概就能知道哪个部件出了问题了。
而在软件开发的学习方面,大一的专业课C语言和汇编,因为基础太差,我都学的不太好,很多东西因为技术积累还不到位,所以理解起来比较难。大一的暑假,我决定另辟蹊径,选择了C#语言作为自己的主攻编程语言进行全面学习。我把机械工业出版社的《C#编程教程》这本大部头里面的几百个例子都照着敲了出来,并且逐一调试通过。这一本书基本上涵盖了软件编程的各个主要方面:基础语法、面向对象编程、桌面编程、多线程编程、网络编程等诸多编程知识点,虽然每个讲的都不算太深入,但是丰富的代码示例还是帮我完成了软件开发的扫盲工作。
所以对于技术学习来讲,基础很重要。要想基础要打的牢,往往是要靠这种笨方法,下苦功夫最重要。曾国藩讲要结硬寨、打呆仗,用在致学上也是一样的道理。
有了计算机软、硬件基础知识的储备,我发现自己似乎是习得了一套九阳神功,之后学习都非常“快”: 我利用一周时间零基础学习了整个web编程内容(HTML, JS, CSS, PHP),并且完成了一套纯WEB版本的管理系统; 电子电路的课程实践,用Altera Quartus软件设计一套电子电路,我用3天时间基本就学会了VHDL语言,并且用它写了一套电路。
我当然还在持续的盯着我的偶像小蘑菇,我总是乐于向他请教,想看看他最近在搞些什么东西。我问问题的时候,不仅仅问解决问题的思路,每次我都会多问一句,你是怎么知道要这样思考的、你的信息源是什么?久而久之我就知道,蘑菇同学都是从谷歌、从外网获得的最原始的技术信息。于是我就有样学样的搞起了VPS,搭建自己的梯子翻墙谷歌,经常性的去MSDN、MDN、Google Developers查阅资料了。
大三大四时期,我成了Linux和开源社区的绝对拥趸。通过linux的学习,我熟悉了gnu套件、vim、TeX、shell等。我搞起了自己的公网服务器,用WorkPress建站玩。我还拓展学习了操作系统原理、Windows API编程,同时回过头去重温了一遍汇编、C和C++(stl、mfc),这才发现再回首时,当时的疑惑不解都已经能够迎刃而解了。同期,我开始读一些Linux内核源码片段、尝试自己做内核剪裁和编译;我还了解并且学习了安卓开发,对游戏领域的编程技术也产生了兴趣。
渐渐我就发现,计算机技术太广、迭代太快,我有点学不过来了。所以创造了目录学习法:即泡在图书馆的时候,我会一眼扫过书架上所有计算机类书籍的书名,通过书名我看看还有哪些我不知道的技术,比如《Lucene实战》,我当时就不知道是干什么的,于是我就拿下这本书,看它的目录,先知道这个技术或者工具的主要用途,记住几个关键的技术名词,比如倒排索引之类的,了解一下它们的大致内容,一本书就算是看完了。我认为目录学习法非常适用于今天这个信息暴炸的时代:这个方法能通过对关键词的快速理解,达到对一个领域的知识进行最大程度的压缩记忆效果;等到后来再遇到要用的时候,可以借助搜索引擎的力量,配合记忆的关键字,对知识做快速的还原,就如同三体人在乱纪元把自己脱水存储,然后在恒纪元快速还原一般。
就靠着这些方式,我完成了编程知识的原始积累。到大学结束为止,我基本上使用过TIOBE编程语言排行榜上前15名的编程语言,对linux系统内核、Android系统架构、Win32程序反编译与破解、Web编程、多线程编程、图形图像编程等领域都有所了解。终于,我也混成了别人心中的“大牛”:大四下学期最后几个月的一天,我穿着大裤衩子大背心从宿舍去食堂,刚出宿管门,就听到一个学妹的小声议论。“快看,快看,那个就是赵翔,就是他去了甲骨文!”“嘿嘿,看来江湖也有哥的传说!”我心中暗喜。“啊,就是他啊也挺屌丝的嘛!”另一个师妹讲道。此言一出,如晴天霹雳打在我心头,我打量了一下自己,可不么,不仅技术上向偶像学习了,现在连外形都差不多了。
下一篇《我的程序员生涯--业余时间的编程实践(二)》
暂无评论