今天是8月25号,小组留校结束,算法队留校还在继续,粗略算了一下自己已经留校差不多40天了,一个暑假的确学了不少东西,但是还是感觉有点没到之前的预期,可能之前对自己要学的东西错误预估了。
暑假里其实有过放松的时候,但是大多时间还是比较认真的在学习,小组的氛围很好,晚上睡得就算在晚,早上就算在累,小组成员也基本上都在,我感觉比较骄傲的是,大一的好像就我和坤坤全勤,没请过一次假。
学习内容主要是linuxc这本书,但是其实时至今日,我对这本书的理解还是十分浅薄,(况且这本书本身只是入门中的入门),尤其是信号和进程间通信两章,由于任务没有布置,我就没有系统的学习,导致我当时看到的很多东西,当时就没搞清楚,现在就更不懂了,最近会想办法补上的,在写一篇博客总结。
前几周的项目都是500行以内的小项目,写着问题不大,主要难题是最后大项目聊天室,由于我对项目难度的错误预估,导致我开始的进度很一般,也没有全身心去写,左看看算法,右看看别的东西,就是没咋看项目,当时有的小组成员写的快的私聊都差不多了,我还在进行前置工作,所以在一开始写的时候老会问同级一些低级问题,不过由于我前置工作还算做的不错,而且之前写ttms时写项目也有那么一点心得,所以进度赶得也很快,最后其实和大多数小组成员同一时间完成,也没啥bug,也没啥硬伤需要重构啥的。
虽然写完了,但是很多小问题没有解决,其中有的问题可能以后会去解决,但是有的就不会去解决了,不解决的主要原因我稍后再说,我对于现阶段写项目的看法。
以我现在的水平,写出来的项目就是一坨屎,虽然看着该有的功能都有,好像跑起来也没问题,但是代码细节和代码风格上面,就是个垃圾,我现阶段并没有看过任何真正的大牛写的东西,只是凭我的想象构架,我现阶段的知识体系去写代码,而写出来的东西可能根本算不上项目,更别提到达工程级的代码水平了,而那我写项目又起了个什么作用呢?
我认为在我现阶段写项目的时候,总会有两个阶段,一开始的极其困难时期,和后来的得心应手时期,当然前提是真正完成了第一个阶段任务后,才会出现第二个阶段,而在你进行这两个阶段的时候,你最主要的收获在于熟悉和练习新学的知识,建立自己的知识体系,培养自己作为程序员的基本素养,比如调bug能力,好多代码习惯的养成,这些东西不是说谁能教给你的东西,或者是书本上可以学到的,或者说,书本上可以学到,但是学到的东西是死的。
比如,在我们一开始学习c语言的时候,每一本书都会说,malloc空间之后一定要free掉,我也知道,别人问我也一口能答出来,但是实际写项目的时候,在大量使用到了malloc时我嫌麻烦就没有一个一个对应的free掉,结果就是,在收发一个2G大文件的时候,我的CPU被客户端占用了2.5个G,被服务器占用了1.5个G,电脑后来直接黑屏,等我找了半天bug时发现是这个问题的时候,又回到程序去free掉收发文件的malloc,顺手free掉了其他malloc的空间,结果又不小心free掉了链表里刚申请的空间。。。
上面只是一个最直观的小例子,要是不写这个项目我可能一直不会注意这个知识点,但是你能说我不懂这个知识点吗?而这也就是在大学学习时期,我认为写大项目的必要性,看似似乎一个周甚至好几个周没有学到任何东西,但实际上有没有作用只有自己写过了才懂。
说到这里,我现在想说,技术債迟早还的,躲得了一时,躲不了一世,该吃的亏学生时期吃了学长会帮你,但是等到工作的时候,老板不会像学长一样迁就你了。
说到这里,我要说一下,为什么项目有的一部分小问题,我知道,但是我决定不解决。
例如我明知道我密码是直接打印到屏幕上的,为什么我不去想办法让他密码不回显呢?
为什么我有可以进行md5加密但是我又不去加密呢?
为什么我知道我的界面丑的一批但又不去优化呢?
…………
这些问题都有一个共同特点,就是我之前在写ttms时就遇到了,而我都尽心了相应的优化,我的ttms在重置密码和登录修改存储密码的多处操作都采用了MD5密码加密,我在ttms用了手写的getch(),界面每一行printf算准了长度,登录还会跳出个马里奥。
…………
这些问题的又有另一个共同特点,就是以我现阶段水平,如果要让我现在去更改再次在聊天室出现的这些问题,我的解决方案并没有任何更新,我写ttms时和写聊天室的时间差不过一个多月,我并没有在这段时间学习到优化MD5加密算法加密强度和MD5加密的更深层次的理解,也没有学qt做图形化界面,也没有找到解决手写的getch()一个隐式bug,那我要是想在聊天室改出这些bug,可能改上个一晚上就差不多的,但是并没有什么意义,这只是重复自己之前的工作,与我写项目的初衷-----熟悉和练习新学的知识,建立自己的知识体系,正好反过来了吗?
在自己的工作学习里,当然每个人都喜欢在自己得心应手时期来写代码,我也是,一开始给项目撘框架的时候头都大了,真的感觉好难呀,但是等这段时期过了,写起来就相对轻松了,而如果你只是沉浸在不停的”拷贝复制“之前的工作的快乐中,这不就是把自己活成了码农吗?也许在以后的工作里,你不得不活成自己最讨厌的样子,被逼成一个码农,在我不得不当码农前的这段日子里,我为何不把这些时间花在别的事情上??说不定我以后就不会去当一个简单的码农了。
当然以上只是我非常个人的看法。
聊天室项目文档