目前个人总结及未来方向(13-11~~14-7)
前言
正文是14年7月从上海实习回来写的,回头看看那时的眼光太窄了,现在的规划进了一大步,不过毕竟是历史的局限性,放在那时考虑的确是定下了不少小目标的,然后我才能坐在这里,做着喜欢的工作,不过还是有不少没做到,但并没有放弃的梦~。
正文
上海的经历该告一段落,虽然是因为个人原因小退一步,不过过去的两周,让我对自己的一些东西有了新的认识
这个能作为自去年11月份开始学java以来的个人总结 ,亦是未来几个月该努力自学的方向
首先,作为一个技术宅,自然先是技术上的,如果说在这边的培训让我知道什么是项目,来公司却让我知道什么才是项目,刚进公司接触到这个电子商务框架,我的确被镇住了,核心源码就数百兆,比起来我以前做的根本不算什么,配套的全英文的文档和环境。更对于我这个英语水平来说,鸭梨山大,边查字典边学习文档,深入它的架构,了解它的开发方式和设计模式,虽然才一点点,也能让我进入了另一片天地。结合这次短暂的学习,以及对之前所学,开始这篇总结吧。
1重构 Refactoring —改善既有代码的设计
以前老谈面向对象编程OOP,什么是面向对象,它包含什么,能扯的无非是封装、继承、多态、接口之类。
但现在要我回答,面向对象与面向过程编程的区别在哪,谈思想,谈设计有很多不同,而我的回答在于重构,在我看来自由自在的重构才是面向对象的语言。
封装、继承、多态、接口,如何把它运用好,符合逻辑,唯有重构;再怎么预先设计分析也不能把一个项目做得完美,唯有重构;多么完善的设计模式,也不可能一下子整合到项目中去,唯有重构;
重构是面向对象的基石,重构就是代码的艺术,如果说重构有什么缺点,那也能用重构去完善。其实这一切在我们抽取方法,封装对象时,已经不知不觉用到了重构的手段,而一次系统的学习,并在以后有意识的把重构用到整个项目中,才是接下来我该做的。
2 设计模式 Design pattems —可服用面向对象软件的基础
如果说重构是面向对象的基石,那设计模式就是它的骨架,以前的学习零零碎碎学了不少,也未成系统的学习过。
这次接触到的电子商务框架就用到了,诸如Facade (外观模式),第一次接触到;另外很多有学过的知识其实也可以用设计模式去概括,比如struts的多重过滤器拦截器组合,不就是一个Chain Of Responsibility(职责链模式么)么。理解容易,运用很难,这需要经验去积累,而这正是我现在所欠缺的,得花时间去沉淀。另外这么多设计模式,不也是前辈们通过无数次重构总结而来的么,重构才是基石,正如我之前所理解的,通过重构把设计模式整合到项目中;通过重构,自然也能在项目中提炼出设计模式。
3测试驱动开发(TDD)(Test-Driven Development)
老早就听说过TDD 的大名,但从来没玩过,这次学习的电子商务框架,完全是用的这种开发方式,他也是所谓极限编程(XP)的核心之一。基于它,这次用到了JUnit的测试框架,和mockito (a mocking framework )一个测试时用来模拟对象的框架来进行TDD。另外,谈到TDD仍然绕不过重构,所谓测试驱动开发正是通过不断的编写测试,编码,测试,重构,测试,重构。。直至完成开发需求,所以系统的学一次重构,并把它用于TDD,这也是接下来要花时间去做的。
4框架
上面说的JUnit、 mockito正是用于测试的框架。且不说这次学的本来就是一个庞大的电子商务框架,而它本身就基于多个框架,spring是其中一个核心框架,我还没学spring,临时去查资料很不爽,接下来得把一些框架给学了,掌握它的核心原理,控制反转(Inversion of Control)不就是spring的核心。先看视频初步学习包括测试框架,ssh等等,再用一到两个项目,去探索其原理。框架其实就是那么些东西,但得通过项目去体会。
5英语
这次的电子商务框架,全英文的文档和环境,着实坑了我一把,一边开着ide,一边开着文档,还得弄个有道词典划来划去,忒蛋疼,英语果真是硬伤,虽然大部分是技术上的东西,稍微查一下就能看懂,不过真憋屈。
很多时间在网上看到有人问,学编程需要英语么,以前我也不在乎,但现在我有答案了,学,不要,学好,必要,这次全英文的文档不得不说很坑爹,但给了我学英语的理由。。。好好学点吧,至少能大摇大摆的上英文官网查资料是最基本的需求。背单词吧= =。
5算法数据结构网络操作系统等基础
这个其实跟此次实习关系不大,网上也有人经常问学编程需要数学么,需要算法么,,,现在我也有答案了,能学好这些,不求深入 ,只要能掌握,加上前面的,包括英语,bat也是可以一试的,不过不知道有没有这时间能让我去沉淀,总得去试试啊,我何尝没有野心。
所以,这次总结的关键词是重构,设计模式,TDD,框架原理,英语,以及一些计算机基础,特别是前面四个技术点,我很期待未来能大胆的把它们写到简历上,并嚣张的加上精通二字,哈哈,但现在,还是努力学习,用时间和精力去深入。能掌握这些,找工作怎么可能会有问题,还有足够的时间,这些技术都可以玩一玩的。
最后,其实一切的基础是身体啊,所以好好关爱自己,如果年轻时拿命换钱,老了拿钱换命,那就亏大发了。
算一下时间表
去年11月份学java,做过一个现在完全不能看的xx系统,弱爆了;
去年从放寒假至过年前,又做了一个xx系统,好歹用了分层设计,虽然不是成品,但至少说得过去,算个人的初级项目;
大年初一,出去玩了一天;
初二至回校前,约两周,参照网上一个大神做的贪吃蛇的架构,仿做了坦克大战;
回校后继续上培训班,中间花了两周做了个局域网通讯工具,仿feiq,私聊,群聊,文件传输都实现了;
之后,开始自学些许javaweb;并着手一个网上商城的中级项目,在里面部署了一个自己写的持久层框架;
3月底,参加面试,笔试,过,一面,过,二面用寒假做的坦克大战在台上扯了半小时,成功拿到offer,javase还没学完,就能得到认可,信心大增;
之后,网上商城无故项目夭折,留下的只有一个持久层框架,还能用来玩玩;
4月底参与团队初级项目,个人原因,做得比较烂= =,很愧疚;
5,6月忙于考试,实习日期将近,java方面有点懒散了,进度放缓,少学了不少东西;
6月底,前往大上海,入职实习
至7月中旬,在公司虽然很紧迫,但时间过的很充足,有老大,前辈,有学姐,有学长,有兄弟,学到了很多,开阔了视野,规划了方向,这篇总结,大多源于这短短的两周。
目前,个人原因,暂时离职= =,继续学习java,我一定会回来的。
接下来的安排
参与中级项目= =
看完重构及设计模式
学习测试驱动开发,包括单元测试 集成测试等等
学习JUnit ssh等等框架,掌握其核心原理
着手至少一个个人的项目,应该用到如下:
使用JUnit。mockito等进行测试驱动开发,有意识的使用重构,尽量提取运用多种设计模式,整合ssh,其中持久层应该定义接口,用自己的框架,hibernate,也可以加上myibatis做两到三种不同的持久层实现,并通过spring的控制反转整合,前端使用struts或自己写servlet,用一到两种实现,接下来不断维护,用它完成至下一次工作前的学习
背单词,做到可以基本阅读英文文档;
花点时间复习计算机基础;
有时间继续探索下那个电子商务框架,很多东西可以从中学到
其他待定。。
最后感谢各位
初
于上海
14.7.14
作者:初龙
原文链接:https://chulung.com/article/current-personal-summary-and-future-directions-13-11-14-7
本文由MetaCLBlog于2017-07-17 09:12:16自动同步至cnblogs
本文基于 知识共享-署名-非商业性使用-禁止演绎 4.0 国际许可协议发布,转载必须保留署名及链接。