为什么我没有写具体语言呢?语言只是一种工具,是为了更好解决实际问题的。
计算机专业一名普通男生,语言方向是Java,临近毕业,没有选择考研升学,或者拿出几个月时间疯玩来个说走就走的毕业旅行,而是选择实习工作,目前在本地省电视台实习,我不是什么大牛,我只是个”愚笨”的小菜鸟。
往后打算当博客写,并记录自己学习成长之路,先开始从设计模式部分写起,本人也还没学完。不定期更新但一定会坚持,文笔很随便,若有不足之处,请指出不足之处,90度鞠躬~~~
写下这篇文章目的很单纯:
1:练练自己写作能力(怕是这个理由自己都不信)
2:想为自己设计模式的学习之路记录下来,这将是我的开发生涯的起点
3:写此文的2个月前,我对开发的思维非常的”学校化”,我尽可能将我自己的学习感受写下来,希望能帮助和我有类似经历的朋友一点建议。
4:希望自己能成为一名优秀的开发人员
正文开始:
工作之前“不懂”为什么那些老程序员老喜欢把简单的功能往往做的那么“复杂”。一个方法这里一个接口,那里一个抽象类,然后方法这里跳哪里跳看的人眼晕,但往往实现一个复杂的功能好像代码量又不多似的。
我真正开始做实习项目是在本暑假的第一个月末。
第一个月带我的程序员前辈就是让我摆正浮躁心态,前辈倒也不客气,说我目前是达不到实际参与工作的水平,而且还说往后的一段时间需要我自学,(当时我的心是奔溃的)是的,那时候的我还是在“依赖”校园编程思维的,刚开始头2礼拜便开始在电脑上装虚拟机使用Linux系统,熟悉基本操作指令,并学习SVN实现Windows端和Linux端的文件传输和用户权限分配功能,以及在Linux下安装配置JDK,Tomcat,Oracle环境,除了SVN前辈给了我一定的指点之外,其余的遇到问题只能问度娘了,当然最后我都是做完了,并得到前辈的认可。第三周开始给我讲解了企业开发的一些基本流程框架,好吧我也没记住多少。。。。。后来前辈开始跟我讲解CMS,这就是我实习的第一个项目了,刚开始跟我讲了CMS的功能实现都具体有哪些(讲真别去百度,我当时百度上找CMS具体内容,我前辈说都有误的,实际定义请参考百科里CMS词条),然后我开始写思维导图和用visio写流程图,这是实际开发之前必做的一项工作,往往很多时候你需要交互的客户并不懂技术,思维导图的作用就是让客户和开发组员们能很清楚的理解项目需求和意图以及数据库结构的搭建,流程图就是功能具体实现步骤了,让开发人员了解具体开发或维护哪些地方。我当时是修改了3次,到第三次时候前辈降低了要求:“你就先用这样方式写,但想的还是简单了点,往后经验慢慢多了就自然理解了,你有的地方自己设了坑就先自己跳,得吃亏。”这话我记得清清楚楚…第四周开始用一周的时间写好了项目前端静态页面,和用SSH框架写好了一个用户操作部分,基本CURD操作,然后让前辈来看效果,好吧他只看了代码,根本不关心效果,各个类看了看,直接就说“哎呀,你这代码都不通用啊,没有通用性…”what??啥是通用性?然后我那天下午他花了20分钟给我看他早些年刚工作没多久时候写的C#代码(前辈是.Net出身,目前用是个我没听说的语言)然后给我讲解复用性代码和设计模式的重要性,这些是学校老师不会教的东西,对于当时的我来说,我的代码观彻底的崩塌了。
那天下午我开始重新思考自己写代码的心态,以前自己在学校写代码都是为了实现而去实现,从没考虑过写的代码是否能复用,结构是否清晰易懂,是否安全灵活,是否可以有很好的拓展性和弹性,很多东西都没有考虑到,所以我现在深有体会,编程往往就是越学越“糊涂” ,也往往是四个阶段:不知道自己不知道,知道自己不知道,不知道自己知道,知道自己知道。所以我暂时停止了cms项目,我现在需要提升自己代码质量,写的代码要有可复用性,可拓展性,所以我开始了设计模式的学习
第二个月的第一周5天工作时间加1天周末时间全部用来学习设计模式,这里我参考了《Head First 设计模式》这本书,并下载了配套源码做参考,虽然都只是简单输出功能,但优秀程序员写的代码非常清楚,理解起来也不费劲,但是我想说的是,设计模式是一种思维,是前人的经验总结和精华的浓缩,而不是”模板”,并不能完全去套用,所以用好设计模式,我还需更多的练习,这也是我开始写博客的初衷,目前我已经开始慢慢用我学到的设计模式“思维”去改进我的项目了。方法也不再是具体实现了而是通过调用形式,实现方法单独放,怎么说呢?就是类和类之间依赖度降低了,解耦了,即便需要拓展新的功能,也比较方便,而且也不太破坏其他的方法。虽然我认为自己进步比较慢,但好在自己肯花功夫去打磨自己。
感谢你看到这里,若你是个有经验的开发者的话,若有不足望给予指点,若你和我一样刚进入开发岗位的初级程序员或还在学习的学生,希望你摆正自己的心态,虚心向有经验的老程序员前辈请教,并问问自己,自己是否真的合适去走程序员这条路吗?若不想轻言放弃,那么设计模式必然是“菜鸟”进阶的选择,说的直白点,连代码都写不好,再去学所谓很牛X的东西也没有用,就像盖房子一样,打好地基是很重要的,很快我将放出第一个设计模式内容。生命不息,编程不止!