一个如何成为一个体育生生的编程之路(二)
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++语言程序设计》开始的上班就是坐在那看书,下班就是找个地方吃点东西然后去肯德基坐着看书,因为那里凉快连续看了几天后,觉得看的挺枯燥的和许工说,许工给我出了噵小题让我做。教给我桶排序于是我实现了下,速度非常快这是许工教我的第一个程序,印象非常深
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奋斗。进公司前领导问我凭什么要高工資我说我干得好,两或三个月给我转正我干不好,我自己滚蛋走人(这是学习美团网的口号,“要么牛逼要么滚蛋!”)领导被震撼了,认为我有冲劲让我来就是攻难关的。我换工作也是为了更多实现自己的想法,得到别人的认同工资成了秘密,其实也不高但是因为签了保密协议,所以我不会再对朋友同事坦诚相告
一口气完成七千多字的日记。真痛快