一个体育生的编程之路(二)
2012-05-09 星期三 天气晴
一个体育生的编程之路(二)
2011年8月份写过一篇博客,《一个体育生的编程之路》,只是写到第五部分就没再写。今天重温了旧文章,回想起学编程的这三年(大四自学JAVA一年,毕业工作C++两年),心里不免感慨,虽然我做的不够好,但是从来没后悔过。
(五)许工的面试
想起来许工当时面试我,现在仍然非常感动,真的是缘分,有一种士为知己者死的感激。
前博客里已经提到过,当时我从威海回来,说实话,我在那做的不够好,自己不能善于学习,项目经理交给我的任务虽然是最简单的,但我老是做不好,我写的SQL语句老是出错,项目经理对我态度也非常不好。最后直接不分配任务给我了,我想是时候自己该走了,总不能等着人家撵我吧。已经工作了45天了,从毕业前的(2010年)5月31号到毕业后的7月15号,中间回过两次学校外,其他时间全部在威海工作了。拿到了一个月的工资1000块钱,可以作为我离开学校又辞职后生存的基础(租房子住和吃饭啦)。
之后的一年多,每当提起在威海工作的事,我都说是因为工作太累了不愿干才辞职的,实际是自己工作能力和学习能力不行。只是以前一直耻于承认是自己的能力问题,直到最近,我才敢于说实话。
在回济南后第二天吧,我去参加招聘会,到现在我还记得非常清楚,进会场前接到许工的电话,我先问是招JAVA还是PHP,许工说我们招C++。我说不好意思,我从来没接触过C++。许工说没关系,语言都是相通的,试一下吧。因为进招聘会要买票,20块钱,我生气不进去了,直接去许工那面试。然后我坐公交车到了山大新校东边,又转了很长时间,才找到那个公司。
见许工的第一感觉是这个人年龄这么大了,还写程序?以前的项目经理也就28岁。许工见我时,我买的一矿泉水已经快喝完了,许工到饮水机那给我接了一瓶。当时7月中旬,正是天最热的时候。当时挺感动。滴水之恩,当涌泉相报。问了下我的基本情况,然后让我写个程序。开始让我写到纸上,我说我写电脑敲代码吧,因为我写字太丑了,也不习惯用笔(哈,在学校里也就考试时会用笔写字)。许工说那用我的笔记本吧。又问我你用什么开发工具,我说eclipse或者editplus、ultraedit。许工说我这都没有,你用WORD吧。我说我用记事本写。
我去到时已经十一点了,我写程序上来就罗列if … else if …. Else if…. 语句。过了很久,许工说,好了吗?我说,快了!快了!再等会。过了会给许工看我写的程序,许工说,哪些情况你还没有考虑到。我一拍脑袋,哦,再等我一会,我再写。于是又开始不断的写if … else if … else if ….。在那面试时看到有一稍胖穿黑上衣的员工,看了我一眼,那是我后来的同事方工。别人都快吃完中午饭回来,许工也不耐烦了,说写好了吗?我都写了一百多行代码了,还在写if … else if … else if ….。我说,快了!快了!再等我一会,马上就完了!再过了一会,我终于认为自己已经写完了,给许工看。许工看了一眼我那一百多行的代码,说你回去再想想吧。然后又去饮水机那接了一瓶水给我,我感谢着离开。
去找站牌坐公交车回山师老校。当时觉得心里不服,要我不要我没关系,但那道题我得做出来呀。我就边走边想,走到站牌了,我也不停下,继续走,边走边想,已经快走到第三个站牌了。我突然想明白该怎么做这道题了,原来几行代码就可以搞定。于是在第三个站牌我上了公交车,回到学校直接回师兄的宿舍,打开电脑,用JAVA把代码写出来,测试了一下,发现没问题,于是给许工打电话,许工说我给发个邮件,你把代码发过来吧。许工看过我代码,觉得还不错。然后又给我出了道,让我下午做,并留下qq和电话与我联系。
终于如释负重松了口气,我去买了个煎饼果子,在校园里吃,回到宿舍开始解第二个题。找了两三种方法来实现。到下午时又把两种方法 实现的JAVA代码发给许工,许工说不够高效。晚上许工与我聊了挺多,说到之前公司的一些人和事,公司处于一个什么样的阶段。推荐我应该学下数据结构等计算机基础课程。说要再面试一些计算机或者数学专业的人,再考虑要我不要我。我也说,您要慎重考虑用我不用我。因为对自己是否能够胜任C++程序员一职没把握。
之后的两三天里,我又面试了几家公司,人家直接瞧不上我,并且还说,你还是去培训机构培训下吧,连struts、hibernate、spring三大框架都不懂,也没有任何实际项目经验。两天后,许工说你来上班吧。我说好,当然了,我也没有别的选择,我找别的工作也没人要我。
于是我在洪家楼找了一个房子,去那附近找了两次,终于找到一个最便宜的,在阁楼上的一间小屋里,屋顶不到两米高,一共不到5个平方,只有一个70厘米宽的小床,有一个小窗户。房东把这间小厨房租给我了,一个月只要160,里边非常热,因为楼顶早都晒透了,每天夜里都热醒好五六次,去厕所冲个澡再回来接着睡,就这样反复直至早上六点钟。
于是又回家,把档案和户口落回家里,(劝学生尽量不要把自己的农村户口迁出来,因为毕业后改不回农业户口并且也没自己的地了。曾经说上不好学可以回家种地去,后来发现自己说这句话的资格都没有,因为已经不是农村户口,已经没地了。)然后在25号(也就是从威海辞职回来第10天)开始了我新的工作。
(六)C++与MFC的学习
开始学习C++是从谭浩强的《C++语言程序设计》开始的。上班就是坐在那看书,下班就是找个地方吃点东西,然后去肯德基坐着看书,因为那里凉快。连续看了几天后,觉得看的挺枯燥的,和许工说,许工给我出了道小题,让我做。教给我桶排序,于是我实现了下,速度非常快。这是许工教我的第一个程序,印象非常深。
一个星期后,开始用Visual Studio 2010作为开发工具,感觉好复杂啊。之前一直觉得eclipse非常强大。用微软的开发工具非常不习惯。(现在想来vs多好多专业多强大啊,再看eclipse感觉像个山寨的东西。纯属个人感觉,不要骂我个人偏见。)开始接触windows程序设计和MFC,感觉太难了。根本是云里雾里,同学推荐我看孙鑫的视频教程,我都下载下来了,第一课,我表示很努力的听着,两个多小时,开始接windows第一个程序,消息循环等,我确实很努力的听着,但是听着听着就不知道自己在哪了,也不知道自己到底是晕到了还是睡着了,哈哈。(开个玩笑了。)
在第三个星期,开始做一个打印程序,用MFC基于对话框的。许工把例子程序给我演示了,可是我不会。又简单写了一个程序,告诉我这样就可以在对话框上画线,我还是不会。(你是不是觉得我太笨了?刚开始学习VC++对我来说太困难了。)就是把例子程序都给我写出来了,我还是看不懂,不知道该怎么抄。许工对我无语了,那天是星期六,说你要是下个星期一再写不出来,你就不能在我这干了。我当时啥也不说。就回去了。回到住的地方,从大润发超市买的咸菜和馒头,边吃边看电影。吃饱了喝足了洗个澡就睡觉。写不出来拉倒。由于睡的太早,早上四点多就醒了,我想了想许工是怎么给我演示他写的程序的,我虽然还是什么都不懂什么都不会,我应该怎么把程序套上去。然后打开电脑,两三个小时终于把基于对话框打印程序的第一步显示出来了。别看这简单的第一步,就是一个按钮,按一下按钮在对话框上画一条直线,没有这简单的第一步,就没有以后的一百步和一千步。
星期一上班,我去的很晚,去上班时已经迟到了半个小时,心想反正可能要走人了,怕什么。我就大摇大摆的进去了。(哈哈,估计是死猪不怕开水烫的精神又发作了。)给许工看了下我写的程序,终于实现第一步了,许工看后说你到我办公室来一趟。
在他的办公室里和我聊了两三个小时,说现在我不要着急,他刚开始工作时也是非常不容易,也住楼顶非常热。又讲了一些公司以前的人和事。开导我要努力学习。又给我提了三点要求,至今仍记得非常清楚。第一,把软件开发当成科学。第二,要坚持。第三,要把眼光放长远。
在第一个月里,我从第一个按钮和画第一条直线,到后来逐步把软件原来所有的功能实现 ,一共写了四千多行代码,虽然现在看来都是垃圾代码,但在当时还是非常快乐的,感觉这才是程序员,这才是写程序,像我当时 想的一样,就是用顺序、循环(for)、选择(if … else )这么简单的东西就可以完成非常复杂的事情。之前一直在学JAVA的框架以及其他一些框架,学会怎么会servlet、jsp等等,总是学不会。跟着许工一个多月终于把标签打印程序写完了,许工说你写个工作总结吧。于是我写了个工作总结,但是写的像自己的反省书一样。(哈哈,中学时写检讨书写多了。)许工看后,说这算不上工作总结,我认为你具备一个程序员的素质,可以成为一个优秀的程序员,但是还有很多东西要学。
这样的谈话在毕业后跟着许工干的半年里,有过好几次,对刚毕业的我帮助非常大。
这半年里的学习主要是以孙鑫的《VC++ 深入详解》为主,第一章看不懂第二章讲C++ 的基础,看的懂,第三章又看不懂,后边的反而能看懂,因为都是教你怎么操作,就是照着书上的方法一步一步用VC6实现。还有一本《Visual C++ 范例宝典》也非常不错,在做项目时,可以经常查阅上边的例子,省时又省事。
刚开始学习C++和MFC的半年里,想要解决一个问题,到网上去搜,网上有很多,但是看不懂,照抄都不知道怎么抄,很多时候多亏了方工的帮助,要不然我还不知道会因为多少个小问题浪费时间,也不可能进步那么快。再次感谢同事方工在这两年的工作里给我那么多无私的帮助,不仅在工作和学习上,还有生活上对我这个小弟也非常照顾。
(七)opencv与数字图像处理
跟着许工干的半年里,公司并没有做什么实际项目,许工应ss公司要求,研究人脸识别和图像处理。我在做完第一个标签打印后大多时间在闲着。10月份和11月份,一直在网上发广告,增加了公司的销售。很多时候都不情愿做在偷着看《VC++深入详解》,许工批评了我两次,我不服不行,就继续发广告。虽然和现在工作一点关系,都没有,但是任何一项工作,你要做好,都要认真和努力,并且都会有所收获。那段时间里虽然只是发广告,但是我还研究了SEO,并且修改了公司网页,提高了搜索排名等等。
后来给老板娘写了一个客户信息管理软件,就是做了一个对话框,上边可以对access文件的中信息增删改查。只用了三天时间,也有进步。
2011年上班后,许工要带着我和方工去ss公司做人脸识别项目,我在2011年年初才开始接触图像处理,什么都不会。非常担心自己干不了。所以找许工谈话,说我还是不去了吧。许工说别不自信,试试吧。如果你去ss,别的部门你也进不去,我们去ss公司你也不可能在自己呆在这了。又鼓励了我一翻。
下午叫我到他办公室,要考我微积分的题,给我找了本很老的书,随便找了道题让我做,我先看前边的定义和性质,再看例题,半天也没做出来。许工说晚上再复习一下,明天再考我。
晚上我复习了两个小时微积分,幸亏大学时还下过不少功夫学。第二天上午又做了几道题,都做出来了,并且与答案相符。许工表示可以。中午老板娘请我们吃饭。
从2011年2月28日星期一开始,正式到SS公司上班。终于到了一家大公司了,就是不一样。
刚开始的一个月,工作非常努力又谨慎,对环境不熟悉。基于特征的算法,我承担了几个特征,在经过一翻努力后,做的还可以。在四月中旬项目验收时,领导也表示满意。写程序这一个月里,使我对OPENCV有了一个入门。
之后一直到五月份,并没有什么具体的任务。五一时许工让我写一个视频监控的程序,用C++和OPENCV来实现。许工把具体怎么实现给我讲了好多遍,后来连伪代码都写出来了,告诉我来怎么设计这个程序,可是我脑中全是原来的想法,我想用递归的方法来找出视频画面中的人。许工把他的设计思路对我讲的越清楚,我越糊涂,越不知道该怎么写。当时方工回老家结婚了,之前做方工做过这个程序,但是人家在结婚,我不好意思打扰。方工用手机QQ问我怎么样,我说非常不好,让他把他之前的代码发给我参考一下。方工的代码发给我了,我还是看不懂,不知道该怎么写。许工也不管我了,因为之前已经有些生气了,都给我讲那么多遍,那么清楚了 ,还是愚木脑袋一个。最后我也死心了,放弃了按照许工的思路,也放弃了参考方工的代码。还是按照我原来的想法去实现。可是,最终我真的实现了,并且速度挺快,把人数查的很准确,走进和走出的24个人我都分别查出来了,已经达到演示程序的要求了。想想,那两个星期,是我2011年最痛苦最受打击最憋被许工骂的两个星期,但也是我在2011年感觉自己进步最快的一段时间。后来给别人演示这个小程序,证明这个功能从技术可以实现,并且准确率可以保证。许工在别人面前猛夸我。
六月份开始尝试SVM算法,许工将书给我,并把其中一些图像处理原理和数学原理讲给我。我感觉挺简单,回去实现代码。写了几百行代码,利用几个类分别实现功能,初步感觉到结构化程序设计的方便。可能写程序只用了几天时间,但是测试和修改用了几个月。初期没有达到书中的效果。许工也比较失望。在试验时,本着软件开发是一门科学,测试是一种科学实验的态度,我认真的测试。在控制其他条件全部不变,只有一个条件不断变化,并且记录全部测试结果,推测这一条件对于识别率的影响。我能想到的每一个条件我都要去尝试一下,然后再控制不同条件进行同样的测试和推断。就是这样不断的测试,不断的统计,不断的推测,再不断的改变条件和修改代码,循环往复的测试、统计、分析、修改代码或者修改条件、再测试。在某一天,突然发现一种算法起了关键作用,使得识别率有了本质的提高。我们项目组惊喜万分。这些时间里,对于测试我是非常认真的,这是必需的。认识到测试作为一种科学试验,我的收获不仅仅上文所提及。
七月份,同事要一个图像处理的程序,本来是由另外一位同事来完成,但是效果并不好,我一看,我感觉我可以做,几个功能我都可以做。然后我就开始写,并且尝试用VC++提供的CImage来实现。也就是摆脱OPENCV,自己更多的来写图像处理的算法。从中我又一次感觉到自己的进步。虽然只用了几天时间,我实现了,功能都符合要求。
七月份作述职报告,我写的述职报告的讲稿,许工让我在一个星期时间里准备,并且帮我不断的修改PPT和讲稿。而其他的同事只能在业余时间准备。在进行述职时,由于2007 的PPT在电脑里打不开,所以我的讲演推到了最后。而其他同事都没有我准备的充分,所以我的述职报告也得到了高层领导的认可,公司领导对于我的学习精神和工作努力也是非常认同。许工又长篇大幅的夸我,说从第一次见我,虽然我只是用记事本写JAVA代码,但是写的非常规范,一直到工作后一年多怎么努力,最后的建议就是在理论方面加强提高。所以我一直很感激许工。
(八)继续学习
2011年,买了很多书,仅从卓越当当上就买了一千元以上的书了。计算机类的书看了一些,每买10本书,会有一本书看的很多,两三本书偶尔会拿过来查一下。剩余的六七本也就是看看前言和第一章。2011年下半年还看了两本小说,唐浩明先生的《曾国藩》三册共1400多页,《明朝那些事儿》七册2100多页。呵呵,小说确实认真从头看到尾了。
自己的学习方法还是不好,许工在这方面值得我学习一辈子。现在想来给我印象最深的是2011年年底看的王爽的《汇编语言(第二版)》。王爽先生不仅是著名的计算机科学教育家,而且是哲学家,看他的书真是一种享受。
“学习汇编的最根本的两个目的:充分获得底层编程的体验,深刻理解机器运行程序的机理。”对于王爽先生的讲解方式也是让我这个笨学生有最好的学习体验,王爽先生采用了循序渐进的方式讲解,对于以后用到的尽量以后再讲。我第一遍开始看,看到第10章,到了标志寄存器就晕了,也就停止了。之后我开始学习《Intel汇编语言程序设计》第五版,学习了前8章,使我对32位汇编有了更多的认识。2012年我又从头开始看王爽老师的《汇编语言》,认真看书并且编写每个小程序,一直看到16章。之前没有掌握和理解的知识点又有了新的认识。再一次看《Intel汇编语言程序设计》而只看到第六章就截止了。
因为对于这两本书是我近期学习的,印象特别深,所以这里分享了一下学习感受。
2012年我开始封装一个动态库,认识到组件化开发带来的好处。动态库封装了图像处理的一些基本方法,可以在windows环境下供不同语言调用和使用。各个功能模块之间采用接口,相互独立。之后又做照片打印的程序。使用delphi,开始时非常抵触,但是后来边做边玩,有问题了就问身边的同事,主要是怎么做界面。两个星期后完成此软件,并且得到许工的认可。对于照片打印我要实现 的功能如下,【选择图片】,【选择模板】,【选择背景】,【打印】,【保存成图片】。实际是个非常简单的程序。但是怎样做好呢。在初步完成功能后,我改用这样一种方法。
(1)在选择要打印的照片后,根据默认的模板和背景,即生成要保存的图片img_save,并显示出来。
(2)当然这张图片img_save是根据打印机分辨率计算出来的大小,对于打印打印可直接根据img_save打印出来要求的照片。保存成图片后再使用同一打印机再对img_save进行打印仍然得到同样的打印效果。
(3)改变模板与选择背景,都会重新生成要保存的图片img_save。
(4)img_save就是主线。哈哈。
使用这一想法,思路变得非常清晰,程序变得非常简单。各功能之间完全相互独立,没有任何复杂的关系。
(九)新工作,新的开始
于2012年5月2日,与许工告别,在SS公司办理离职手续。心中非常不舍,有一种失恋的感觉。当天就去了ZN公司上班,ZN公司比SS公司小的多,各方面都差的多,可以说来到之后我就后悔了。第一个星期里都想念SS公司,觉得SS公司什么都好,办公环境好,公司大也正规,有归属感。来到ZN公司后没有归属感。尤其想和许工方工在一起工作,觉得许工对我有知遇之恩,没有他对我的帮助和教导,就没有我的现在。但是许工也不再挽留我,认为我可以走了,水平仍然非常初级,但是可以出去折腾了。年轻人多出去闯下,哪怕是头破血流是是值得庆幸的事。年轻最不怕的就是失败,本来就是从农村出来的小孩,本来什么都没有,也从不怕失去什么。我不怕失败。因为我觉得失败得起。我本不是喜欢安定的人。这两星期里我时常在想,如果SS公司领导不嫌弃,我可以再回去。但是每想到这我都会告诉自己这是不可能的了。我要在ZN奋斗。进公司前领导问我凭什么要高工资,我说我干得好,两或三个月给我转正,我干不好,我自己滚蛋走人。(这是学习美团网的口号,“要么牛逼,要么滚蛋!”)领导被震撼了,认为我有冲劲。让我来就是攻难关的。我换工作,也是为了更多实现自己的想法,得到别人的认同。工资成了秘密,其实也不高,但是因为签了保密协议,所以我不会再对朋友同事坦诚相告。
2012年5月9日22:30到2012年5月10日1:29
一口气完成七千多字的日记。真痛快。
转载请注明:http://www.cnblogs.com/sdlypyzq/archive/2012/05/13/2498589.html
posted on 2012-05-13 22:25 cv_ml_张欣男 阅读(4443) 评论(13) 编辑 收藏 举报