首先声明,我并不是什么牛人,只是一个有志于软件行业的,曾经的大学生和今天的软件从业人员。仍然处在我的新人年里面。
感谢那些曾经帮助过我的人,感谢韬哥,祝愿韬哥的公司越做越好,生意兴隆。
今天我想回顾一下我自己到今天为止学习编程的整个过程
1999年暑假,我爸爸给我买了第一台电脑。最开始还是学怎么操作计算机。后来就开始玩游戏。玩游戏的过程持续了很多年,从初中一直到高中,有5-6年的时间,当然这段时间也学了些计算机的知识,但是很不系统。
高中阶段有一段时间对网页制作很感兴趣,于是自学做了一个有关军人的网站(静态),当时一个月也有好几千的访问量。
真正认真的开始学习编程一类的东西,还是得从大学说起。一开始也知道要学C,可是一开始看也觉得难,枯燥。后来自己报了计算机二级的考试,考C语言,到只剩下半个多月的时候觉得不能再拖了,于是这两个礼拜就连着每天疯狂的看C语言的教材。有些东西你突击学习的时候,前后连贯你理解才好,如果慢慢看,看到后面前面的东西倒忘了,影响理解。这半个月下来了,笔试是没问题了,可是上机编程的练习不够,考试的时候还是挂了。
虽然没有过二级,但是我知道我对C的掌握还不错,只是缺乏编程的实践,于是我要重点加强一下这个,后来我就很自信的报了计算机三级。而三级的笔试就不是语言了,有四个可以选,PC技术、网络技术、数据库,另一个是什么忘了。准备考试的这段时间,我一方面复习网络技术的知识,做笔试题,另一方面就做编程的上机练习,有个专门的上机的练习的书,还从电脑报上找了很多的编程的题目自己做。
到考试的时候,笔试一般吧,不过也应该有七八十分吧。三级上机的题目只有一道,要错的话就是零分,我花了十分钟写出来了,然后自己检查了一下,就出来了,结果是满分。
这段时间还是挺锻炼人的,不过现在想想,当时的自己还是挺菜的。
过了三级之后,其实知道自己还有很多都不会,光光会用C语言写一些算法的题目,其实真的做不了什么。有很强烈的愿望想提高,可是也不知道自己该学什么,自己是学物理专业的,也没人指导。当时想着考计算机四级。
大一暑假的时候,也不知道如何提高的我抽空学了学ASP,然后做了点小东西,刚好大二上学期的时候班级要评选“国家优秀班集体”,然后出于宣传的考虑,需要做一个能发布新闻,有论坛的网站,班长就找到我,问我能不能给做一个。我就把这个任务接下来了。然后我就开始用学了一半的ASP做动态网站,这个过程也挺辛苦,每天都在电脑前呆上十个小时以上,边学边查资料,从数据库设计到代码编写,再到界面设计和美工,我一个人全做了,之后还买了域名和空间,一个月之后,网站就出现在同学们面前了,支持用户登录和身份验证,用户之间可以互发短消息,可以发帖子、发照片,留言板。当时同学们是一阵猛夸,自己也挺有成就感,这不是一些上机题目了,这是一个真正可以用的东西。而且通过这个过程自己也提高了很多,编程的能力,解决问题的能力,学习的能力,获取信息的能力等等都有提高。
也听说过真正的程序员得会VC,不过也不知道该怎么学。碰巧暑假的时候去看望高中时候的同学、现在的好友、一生的好兄弟的时候(他学电子技术的,为了参加电子技术比赛而留在学校做实验),我在他的实验室的电脑上发现了不知道是谁存着的孙鑫的VC++视频教材,看了觉得很好,收入囊中,然后就抽空学习。先是学会了纯SDK的方式写程序:设计窗口类、注册窗口类、创建窗口、显示及更新窗口,还有API、消息机制一类的东西,然后觉得很高深,觉得终于可以靠近操作系统底层更近一点了,原来程序是这样子的啊,原来底层是这样子的啊,解决了心中很多疑惑,然后就觉得这比网页编程要好玩、要高级多了。然后就继续学。说实话,纯SDK的编程还是挺难、挺枯燥的,不过自己觉得纯SDK可以让自己更了解系统,所以一直不用MFC,一直持续了很长的时间。
这段时间,我觉得我必须要有扎实的理论知识,必须学习操作系统、计算机系统原理的知识,自己就买书来看,有空也去旁听一下计算机学院的课。
这一晃就到了大二的暑假了,放假在家,时间也浪费了不少,由于做网站的时候用过了Flash,知道ActionScript脚本语言,挺感兴趣的,然后就在网上找资料学习。Flash的图形系统真的太棒了,只要一些简单的代码就可以达到很多效果,脚本也很好用,自己就做了点小东西。后来突发奇想,想在自己的QQ空间上做一个Flash的音乐盒,音乐文件用网络上的,音乐盒读取保存在网站上的xml文件来获取曲目信息,然后在客户端播放这些mp3文件。
Flash真的好用,三两下就做好了。然后给我妹的QQ空间也做了一个。
后来,新学期开始了,我又回到了学校了,有一天忽然觉得如果音乐盒能动态的显示歌词该多好,实现起来也不难,歌词文件就是一个有固定格式的文本文件。只要解析一下歌词文件,让歌词在该显示的时候出现而已。
然后自己就开始写,3天内完成,歌词文件保存在网站上,曲目信息保存在网站上的XML文件中,flash程序通过xml文件后获得歌曲信息,包括歌曲的URL,歌词的URL,然后下载播放歌曲,下载歌词并解析,然后依据歌曲播放的进度显示相应的歌词。还有一个服务器端的ASP程序负责歌曲信息的录入、修改和删除。做好后很满意,偷偷的把老妹QQ空间的音乐盒换成新的,帮他把歌词加进去。
第二天,老妹发现了,高兴坏了,在QQ上连连夸奖。
已经大三了,眼看离大四找工作不远了,自己想当程序员,所以心里也知道得早做准备。后来知道计算机四级已经是鸡肋了,没什么大用,所以就想考软件设计师,自己就买来教材。拿到教材,发现软件设计师挺难啊,考试内容很多,理论知识很多:数据结构、操作系统、网络技术、微机原理、软件工程、知识产权法等等。于是我知道我该学些什么了。两个月时间吧,我把数据结构看了,常见的数据结构题目都会了,操作系统以前学过了,复习一下就行了,网络技术也不是问题,但是除此之外还是有很多知识没能掌握,短时间内也不可能掌握,时间是07年的10月20日,我决定了放弃这次考试,再给自己点时间。
这个之后,班上有同学参加了学校的科研小组,题目是Mathematica在大学物理中的应用,因为涉及到一些编程的问题,希望我能加入,后来我就加入了,认识了几个物理系很厉害的师姐,他们在校的成绩让我好佩服,我学物理的,但喜欢计算机,物理基本上就没怎么学,成绩一般般。
在这个项目中,我要做的是用VC写一个程序,通过MathLink协议连接到Mathematica程序的运算核心,然后发送请求完成一些运算任务。这样做的好处是可以自己设计界面,可以用更好的使用运算核心而不用记住那么多Mathematica的命令。
这次任务并没学到很多Mathematica的东西,主要还是加强了VC的功力,对于消息机制之类的加深了理解。
后来我就谈恋爱了,大学中唯一的一次恋爱,虽然结果不怎么样,分手了,过程也是曲折的很,我自认为是个不错的人,但是对女人了解太少,觉得人比机器复杂多了,由于和电脑打交道久了,和人交流的能力却没怎么提高。
谈恋爱的两三个月,我似乎失去了自我,我陪她早起去上自习,大学那段还真没这么早起来过,早上天黑蒙蒙的,还能看到月亮;陪她吃饭、聊天、逛街。生活的重心完全朝她偏移了。她是个挺好的女孩子,心地善良、活泼可爱,但是同很多四川的女孩子一样,很辣,喜欢教训人,有时候有点刻薄,爱挑我的毛病(也许女孩子都希望自己的男子完美无缺吧),同我的想象区别挺大的,我喜欢温柔的女孩,后来还是分手了,她很伤心,我也很伤心。不过我知道,长痛不如短痛,不合适的在一起一辈子,是会很痛苦的,一辈子不开心,我不愿意。(恋爱之初我就很认真很认真的想过以后的事情)
这样,大三的上学期就结束了。我收拾一下因为分手而失落的心情,整理了一下因为恋爱而疲惫的心,发现时间不多了,我要去提高自己。
大三下学期,我得知学校的网络中心要招校内实习生,做些编程的工作,对于我来说是学习和提高的好机会,于是就去试了试。老师很高兴的接待了我,讲了讲要做的一些工作。
本来是一个学校内的视频点播系统的项目,后来不知道因为什么而取消了。老师就把几个实习生介绍给了一个软件公司的技术主管。这个技术主管简单的面试了一下我们几个人,考得也不太难,我回答的还比较好,由于自己一直在自学Windows编程的东西,回答起来都是胸有成竹。临走时,技术主管还在我的肩膀上拍了拍,说小伙子不错。我高兴,当然也很意外。
然后安排我们在网络中心学习,中心的气氛很好,又是在学校行政楼的10层,很安静,我几乎每天都来这里看书写程序,有时候也逃课过来,为此辅导员还找过我。这段时间很关键,我学习了很经典的《Windows程序设计》这本书,做了许多编程。
这个技术主管是这个老师的大学同学,而他们都是我们学校毕业的,都是校友,更巧的是都是物理系的毕业生,而且都喜欢写程序,后来就成了工作伙伴。大三暑假,我进入了学长的公司兼职,用Delphi做数据库开发,做得是驾校管理软件,采用C/S模式,又牵涉到许多网络通讯和进程的知识,由于真正的身处软件开发的职业环境里面,熟悉了软件开发的流程,开发方法,团队沟通合作的很多内容,提高很大。
不能再称呼他技术主管了,该叫韬哥了。他毕业7年多了,一开始在迈普做软件开发,后来做到了部门经理,赚了不少钱,成了家,买了房子,买了车,之后就出来和另一个朋友合伙开了一家软件公司,公司虽然没有发大财,不过总算活下来,产品在成都的驾校行业也是数一数二,做到现在已经四五年了。
韬哥对我很照顾,我们对于技术都很痴迷,经常讨论,他教会我很多东西,尤其还说了许多技术之外关于市场的东西。技术如果没了市场,迟早完蛋。我学习新东西很快,编程能力也不错,如果没到公司工作,我还真不知道。我感觉到韬哥也挺欣赏我的,我们是一种亦师亦友的关系。韬哥很信任我,公司里面的很多事情都不会对我隐瞒,我甚至有公司产品的全部源代码。
我在韬哥的公司待了四个多月,其实想想挺开心的,大家在一起也很融洽,有时候大家一起加班一起讨论一起解决问题,通宵达旦。有一次我连着在公司呆了3天3夜,晚上就睡在公司里面。
2008年的夏天,我在公司里面见证了两件历史性的大事,北京奥运和神七飞天。
虽然韬哥也很希望我能留在公司,但我知道我不喜欢做这些数据库、ERP的开发,当然工资待遇也是一个原因。2008年的10月10日,我正式的离开了韬哥的公司,我挺过意不去的,好在韬哥对此很理解,我们还是好朋友。
这个时候,做为2009年的毕业生,我也该开始找工作了。经过了四个月的锤炼,我发觉长进很大,对自己也很有信心,是时候去试试自己到底有几斤几两了。
后来接到了腾讯笔试的通知,很突然的,因为投简历是9月份的事情,这突然的通知让我觉得没准备好,连夜准备笔试,一直到凌晨2点。第二天的笔试安排在电子科技大学,笔试题目挺简单,昨天晚上准备的都没用上,半个多小时就出来了。后来一面,表现一般。等通知的时候人资打来电话,说让我转投技术支持(我投的是软件开发),估计我没表现好,但他们觉得我还不错,让我转投去做技术支持。我挺犹豫的,如果能进腾讯当然好啊,但是如果做技术支持的话写程序的机会就少了,而我感兴趣的是写程序啊,所以最后还是没转,对人资说希望他再考虑一下,说我的特长在软件开发等等好话,结果我没机会了。
为此我还郁闷了一段时间,毕竟是第一次找工作,自己挺雄心勃勃的,这一棍子,挺疼的,为此还错过了金山和网易的招聘,傻人干傻事啊!
之后看了几个想去的公司的招聘计划,发现10月底到11月初有一段时间的空挡,因为出去找工作了,有一两个礼拜没像在公司那样写程序了,怪难受的,与其坐等还不如利用这段时间学点什么。因为我很想去锐捷,如果进了还能在老家福建工作,多好。所以我决定学习网络编程,这个是人家招聘方的要求,而我还不会,我就利用这段时间学吧。看了TCP/IP协议三卷本的第一本,又看了另一本Windows网络编程。一本讲协议,一本讲WinSock编程。结合起来看效果很好,我对TCP/IP的协议挺熟悉了,同时还做了很多编程的练习。做了一个TCP连接的演示,UDP数据的发送,还有一个简单的sinff。感觉掌握的不错。
后来就接到锐捷的笔试通知,很顺利的做完了。一面,基本上问题都没难倒我,确实考了一些TCP/IP的东西,因为有准备,成竹在胸啊。一面,面试官对我的评价很高,当场就说一些肯定的话,说我不是学计算机的,但基础很好,应该有机会之类的话。我很高兴。现在想来这并不是好事啊。二面的时候,可能一面的面试官说了我太多的好话,二面的面试官有些质疑吧,反倒想难为我一把,先是问我以前工作的公司的项目的情况,我都做了哪些事情,我才说几句,他马上来反驳我,然后我坚持讲完了,他不置可否。我说我会在软件开发中做一些软件构架方面的思考,然后把我之前在韬哥那里工作的时候对于产品构架的设想说了出来,他先是一愣,然后连连点头,还在本上记录一些什么。我觉得有戏,后面的问题就很泛泛了,然后就说两天内通知你,然后让我走了。
后来还是没要我,挺失落的,不知道是什么原因,也许和我那个有挂科的物理专业的成绩单有点关系吧,不知道了。
后来找工作的很多事情就不说了,还好我现在找到了工作,在Foxit做PDF解决方案,挺满意了。
现在回头看,马上毕业满9年了,现在在阿里云,是时候写一篇总结了。