哎呀,我不是有意抄袭某名人的书名,不过想了好久都不知道起什么名字。”那些年我们编过的程序“?感觉最近”那些年“出现有点多,想想还是起个低调的名字比较好。
过几天现在这台电脑就要光荣退休了,里面的很多东西大概也要该转移的转移,该删除的删除了。但毕竟是跟着我走过了大学三年,这一路的努力、欢笑、烦恼她都一步步看着我走了过来。既然是技术博客,当然伤风悲秋的事情就不写了,整理一下三年的coding经历(好在我保留了三年编程所有的作业啊什么的),反思一下(顺便整理到硬盘),希望对后来者能有些借鉴。
大一——初涉程序界
这是能力最弱的时候,但也是奠定基础的一个时期。电脑的大一课程文件夹,是下面这样的:
自己总结一下,就是那时自己很认真(莫要吐)。那时想法很简单,就是把所有课程都做好。怀想当年,学高等数学、线性代数的时候都要把后面所有的习题都做一个遍,考前还跑去辅导办公室问问题、给老师发短信来着,哈哈哈,现在都被自己感动到了。学程序设计的时候,每天上完课就要回到寝室,在寝室其他人刷人人的时候,我把课本里的代码全部都敲一遍,当成复习和加深理解。这样带来的好处之一就是,每次周五上机的时候,当别人都在照着书本抄代码的时候,我已经可以开始继续后面的工作啦~到现在,我还依然庆幸那时的自己可以这样静下心来,耐得住寂寞,然后逐渐对编程产生了兴趣。
记得当时有一门课是计算机系统概论的课,什么汇编啊指令啊LC_3啊,烦都烦死了,觉得这都什么玩意儿?怎么这么难?学习就是这样,当你觉得一门课越难的时候,它就真的变得越来越难。但是当你不怕它、决定静下心跟它面对面接触的时候,它也就好像真的变得容易了。
啊,对了,有一件事突然想起来了。在大一暑假的时候,学院里有了试点班,当时我没有参加,原因我也记不太清了,可能是觉得回家不想做,也可能觉得“那技术好难哦我不会”。现在觉得,如果后来者有那样的机会,而又不是非常讨厌这个专业,这样一个机会还都是应该珍惜的。暂不提它是否会真的对你的技术有很大帮助(到后面很多也都会学到),但是,对于一个想要让自己提高编程能力的学生来说,这样的机会会让你更早地掌握这个专业的一般技巧。鉴于我没有参加这样的训练,过多的表扬我就不说了,但是有一点可以肯定,那就是肯定比一个暑假在家闲呆着要好,因为到现在我只记得那个暑假我当了几个家教,其他的我就不记得了~
大一是个重要的过渡期,一定程度上决定你是在大学里做学问还是刷人人。出了高中的圈子,你才突然发现,原来还有这么多很厉害的人,原来还有这么多要学的东西,期盼着什么时候也可以成为那样的大牛。
大二——悠然见南山
相比于大一的初涉程序界,大二对编程就有了更深的理解。如果说大一还没有因为课程而熬夜,那么大二就让我初次知道了“熬夜是必备技能”。
首先映入眼帘的就是那醒目的马克思主义原理,记得那个时候我好像选错了老师?然后就被舍友吐槽了一阵子……这个时期,打了大学里的第一次酱油——软件测试。嘿嘿,至今对那位大牛深表歉意。没办法,运气太好,被抽中最简单的一次作业答辩,此后就一直都在打酱油。关于大学里,应不应该打酱油、哪些课打,这一讨论在我看来没什么意义,那些环境不好的大学我不好说什么,但是在我们学院里,大部分课我觉得还是有用的,少打为妙,尤其是对于我这种在大学前没有任何基础的小白。不过,我是真觉得软件测试这门课没有必要专门设置一个学期的课程,与其这样,还不如花一个学期让学生知道代码质量的重要性,交给他们怎样写出来整洁的、高效的、别人看得懂的、bug数量尽可能少的代码,而不是怎样用测试工具。
这里一定要插一句,那就是请各位有节操、有修养的程序员一定要从小养成良好的习惯,不要写出那种谁都不愿意看,甚至一个星期后你自己再看都看不懂的代码,没有任何参数保护、变量和函数名既没有可读性又没有注释的代码。要知道,如果你因为一时懒惰,少写了一个空指针判断,变量名起的委婉了点,要给后面维护的人带来多大的人力物力来修正和看懂它!
呼,好了言归正传。在大二第一学期,我做了人生的第一个可视化项目——21点,也是我做的第一个游戏。那是在python课上的大作业,到现在对于python的记忆也只剩下它是一个仅靠缩进来判断作用域的代码。
下面就是软件截图了。
当年的作品真是青涩啊~连背景图的水印都没处理,即便这样,我那时的心里也很满足。写了一年的控制台输出,终于可以看到有图、有真相的东西了,其实这个游戏也是根据之前的程设作业改写过来的。记得那54张扑克牌,都是自己一张一张P出来的,界面的位置改了又改,虽然现在看到还是忍不住要嘲笑它。不过也凭借它,这门课的成绩也出乎意料的好,后来好像还先后借给了两个同学,作弊的事情我就不教坏小朋友了。不管怎样,我应该就是我第一次尝试到自己做游戏的快乐,其实知道现在我也不确定我是不是真的要一直做游戏,把它当成我的事业努力。我所确定的是,我为之感兴趣的,是这样一种可视化、色彩斑斓的东西。
依靠python,我也做了自己的第二个可视化程序——皇后问题。现在想想嘴角好像会微微翘起来似的。那个时候是在上算法课,老师问有没有人将来想要当教师的,一向不喜欢举手的我拉着旁边的学姐把手举了起来。其实现在想想,好像也没真的要当教师,只是有那么一两个时刻,把教师当成了将来的一种选择。反正最后的结果就是,发现被黑啦,老师姐姐说给我们这样一个机会,让我们在后面的几节课里上台讲几个算法,而我们组分到的就是八皇后问题。
上面这个软件就是展示了4皇后、8皇后、16皇后等的解的方法。学习编程,说到底目的就是为了解决问题,不是为了完成作业。有人说,程序员就是为了那点可笑的满足感然后累得跟那什么似的还很高兴。我想,世界上很多爱好和工作也是为了满足感或者虚荣心吧,满足感是快乐的一大原因。程序员乐于看到那些字符在自己的手下变成改变世界的东西,然后看着用着的人、听着他们的赞扬,这就是程序员的快乐。当然,这是在我还没有为生计而烦恼时,还能说出来的“风凉话”。我承认,我没有非常疯狂地热爱这个行业,但我想我是热爱的,当年上大学的专业也是调剂的,那时的我没有选择,我唯一可以选择的是是否热爱这个行业。因为满足,所以热爱。也许,如果当年调剂的另一个专业,如果它也能让我有这样的满足感,或许我也会热爱它,并把它当成我将来的事业。我看到很多人在大学里,沉迷游戏,或者无所事事,我觉得这些人从来没有给自己一个热爱自己专业的机会,说的悲凉点,如果在大学这样轻松的环境里,都没法使你对一些东西产生热情,等到走进社会,在那样快速浮躁的环境里,又怎么能指望能够热爱自己的工作呢?
大二是个多产的时期。尤其是大二上,直到现在我也觉得那是我最忙的一个时期。很多新的技术、新的概念,很多东西压在自己一个人的身上觉得压力很大。在软件工程的课上,我做了自己的第一个完整的游戏——大富翁棋。说是自己的项目不准确,这是个五个人的项目,不过却做的非常艰辛。
从这个项目开始,我接触了游戏引擎Unity,接触了游戏制作。和学习任何一个新的技术一样,开头总是最艰难的。也是从这个项目开始,我的自学能力直线上涨——没办法,没有人告诉你Unity里怎样联网,怎样多人游戏,怎样显示UI。不过还好,Unity是一个上手非常容易的引擎。那时自己好像第一次实实在在做了个组长,做的过程啊,唉。第一次因为组员哭了,第一次和组员吵架了,第一次熬夜到3点。也是在这个项目里,我成长的最多、最快。记得项目马上就要交工答辩的时候,一天晚上我做着做着项目,游戏主场景突然不见了。真的是,突!然!不!见!了!!!我真的只是按了下停止按钮,然后场景就没了。天知道我那时是什么感觉,这意味着,如果弄不回来,整个项目就完全失败了,根本没法答辩,我这两个月的焦急、辛苦、懊恼,各种请教、各种查资料全部白费了。我趴在桌子上哭了,不知道怎么办。我发了疯的开始找,期盼着可能只是我不小心移了下位置。可是文件夹了没有,回收站里没有,搜索计算机没有,全部都没有。我开始请教前辈们,下了文件恢复的各种软件,没有用。等到男朋友跑到我楼下,安慰我,已经快11点了。经过的人一个个侧首看着我们,可是我只顾着哭。唉,现在想起来,我还真是倒霉,即便现在我也没搞清楚当时Unity到底发生了什么……最后,还是老老实实重建了场景,所幸的是,有一个基础场景还可以用,大部分都是体力活。折腾到快4点,我终于爬上床睡觉了。
从软件工程的这次经历里,我明白了我不是一个好的“项目经理”。大学里很多时候都涉及到了多人合作,但是,大家的心思很可能不在一个方向,你的目的可能是做的出色,别人的目的可能只是过了就好。有人忙着出国,有人忙着转专业,我这个名义上的组长很多时候都是一个人在忙。有时那种孤独无助感突然上来,就觉得莫名的有些愤怒,也是因为这样造成了因为一个组员的懈怠哭泣的局面。当然,我也相信有些人就算目标很小,但是作为好朋友还是愿意帮你的。但是问题在于,好心归好心,真的有用就是另一个问题了。由于没有管理项目的经验,每次面对组员交上来的代码手动合并时,很多时候还是需要自己改写。我经常说,大学不适合团队合作。其实我想表达的意思是,在大学里找到合适的队员是件不是那么容易的事情。无数次,我期待有那样一个团队,每个人都为了同一个目标奋斗,我非常讨厌听到队员说“水水就好",这意味两个不相为谋的人走到一起,结果是,要么一个人独挑大梁,要不试图影响另一个人,要不自己也水水好了。我当时的做法是第一个,但是实际上这不是一种很好的选择,既累了身,又累了心。我一直希望我有一种能力,可以做到第二种。唉,等到那时候,我可能才有资格做个项目经理。
关于自学能力,其实每个程序员都需要非常强的自学能力,很多时候,大牛们(尤其是网上)只提供一句话。我的原则是,能靠官方文档解决的决不去问Google,能Google出来结果的绝不去问人。有事没事可以加个技术群,逛逛技术论坛,还是有好处的。
同一时期,另一个项目也”孕育而生“——我爱记账。
这界面是不是萌翻了……这是当年数据库的大作业,用于个人记账的(不小心暴露了当年的消费水平……)。我是个喜欢提前准备的人,所以从很早就开始做这个项目,也正是因为这样,在后面为了大富翁忙的焦头烂额的时候,它没有占据我大多的精力。虽然现在很少在自己做数据库了,但是当年这个项目,甚至到现在都是我最喜欢的自己做的软件之一。当时自己定需求、自己设计界面、自己设计数据库的日子,过得真的很快乐。这台电脑马上就要退休了,如果格式化那这些数据库也要没了,软件也就打不开了,心里还是有点失落。想着哪天一定要给它做个记录,不枉自己的那番用心。
大二是个逐渐学以致用的时期,也是从小白蜕变的时期。虽然大一大二都是打基础,但是大二明显更高了一个等级。你突然感受到编程给自己带来的快感,逐渐爱上它,感觉以后以此为职业似乎也是个不错的选择。
不写不知道,一写吓一跳。这么多内容,很多都不想再看下去了吧……还有大三一年,那就在下一篇博客里再写吧!洗个衣服先~