这是13年8月发在博客上的文章。转到简书,给更多想自学编程开发的朋友。大榜现在**会从事供应链金融开发,他初中毕业,没有读高中,大专读了一个成人类的电大。自学Java开发。
去年(15年)大榜在技术上像开了挂一样成长。
- 2月份的时候,项目中要用到ActiveMQ,让他先了解,我上京东看了一下,只有一本原版书。他在公司内部进行技术分享完,跟我说,公司的牛人那么多,初中生也跟大家讲课了。
-5月份的时候,他说,架构师要休假,项目组就交给他,他说,我带你们冲。。。,
-10月份时,他说,面试了2个研究生,技术不咋滴,我说,人家的关注点跟你不一样,后劲强些,你还是多学习。
昨天晚上跟大榜说,上午有个来咨询的大学生,大连理工软件工程本科毕业,来上海找工作,面试了N次没有面试上,过来咨询Java、嵌入式课程。我了解过重点院校的软工专业的学费,就问他,学费多少?他说,大一大二每年一万块,大三大四每年一万六,他觉得什么也没有学到,现在还要培训再找工作。
就跟大榜说,你看看,你自学Java,找到了工作。今年下半年报了本科,一年半就可以毕业(他今年18岁,专科刚刚毕业)。4年以后你就有J2EE4年开发经验,复旦本科毕业。你的小伙伴今年去读大学,4年后才开始找工作。你的优势大了!
其实Java学起来,没有那么难,而且网上的资源很多,培训机构所教的内容,网上都能找到视频教程。大榜就是一个Java自学的最佳实践。专科读的计算机应用技术(网络方向),编程开发课教的是C#基础。Java内容全部是自学。自学带给他的好处是:学习能力大大增强,解决问题的能力得到快速提升。
下面来具体说说,他的学习经过,供大家参考。
先看看他做过的项目:
2013 /3--2013 /5:在线商城-毕业设计
软件环境: oracle tomcat
开发工具: MyEclipse8.5
项目描述: 项目框架:struts2+spring+ibatis,oracle数据库
实现功能:商品展示、分页,商品管理,商品评论,类别管理,用户管理,购物车,订单管理,留言管理。
责任描述: 做为毕业设计项目独立完成所有功能。
主要通过该项目系统学习了掌握ORACEL数据库,掌握ibatis框架,锻炼分析、解决问题能力。
项目通过花生壳发布在网上。
(这是培训机构,院校毕业设计喜闻乐见的项目,但是要完成所有功能不容易。因为大专毕设不限开发语言,他选择了Java,其他同学都用C#)
2012 /11--2013 /1:在线聊天室
软件环境: windows tomcat mysql
开发工具: MyEclipse
项目描述: 在线聊天室功能:1、在线用户列表;2、发送、接收聊天信息,聊天信息推送PUSH;3、私聊功能;4、用户登录注册;5、创建聊天房间;6、后台功能。
学习DWR,反向Ajax,HTTP长连接技术,通过该项目增强分析问题和编码能力。
责任描述: 独立完成在线聊天室所有功能。
2012 /5--2012 /7:白山电子楼书房产系统后台-实习开发项目
软件环境: Tomcat mysql
开发工具: MyEclipse8.5
项目描述: 作为手机客户端Android, iOS的后台。提供公司管理、楼盘管理、优惠信息管理,预约看房管理,问卷调查模块的后台功能。
责任描述: 为手机端提供JSON数据,WEB后台功能代码编写,页面设计。参与数据库设计。
协助服务器端安装、部署。
2012 /4--2012 /5:DRP(医疗企业分销计划)
软件环境: Windows mysql tomcat
开发工具: MyEclipse
项目描述: 项目功能:用户管理,分销商管理,物料管理、维护,库存维护,审批流程
技术架构:JSP/Servlet/JavaBean JDBC, dom4j, Jquery, JFreeChart
责任描述: 完成功能:用户管理,分销商管理,物料管理、维护。
通过此项目学习复杂业务的分析、实现。
2012 /1--2012 /4:QZONE-模仿腾讯QQ空间
软件环境: Windows mysql tomcat
开发工具: MyEclipse6.5
项目描述: 模仿QQ空间功能开发,实现:注册、登录、发表说说,发表日志,评论,上传头像,赞一个。
技术架构:Struts2 Spring Hibernate
责任描述: 独立完成数据库设计,完成所有功能。
通过QZONE项目,掌握S2SH框架,掌握框架的基本流程。
还有一些小的J2SE项目,如Java版QQ,没有列在上面。
从项目的数量和质量上来看,已经超过任何一家培训机构的要求。
他学习Java的时间一年半多点,全部为课余时间学习。所有学习内容都来自网上。如DRP(企业资源分销计划)是节点动力王勇的培训视频项目。QZONE就是模仿QQ空间做的。做在线聊天室是为了学习服务器推技术。在线商城,是要完成专科的毕业设计,其中购物车采用cookie实现。
找工作的前2个月,他又迷上了C, 汇编语言,数据结构,自称Java已不能满足他对计算机的欲望了。“我要搞底层!”,以致于他在面试Java时,称自己3~5年的发展是做个黑客。(结果这次面试就cancel掉)
具体说说:
1、计划好学习时间和进度。他的进度全部自己掌握。其中DRP项目是跟着视频过了一遍(差不多两百集),把所有的业务都实现了。掌握了web开发流程。
在学J2EE之前,他过了程序逻辑关,自学了半年多Android课程,主要是Android游戏开发,做了一些游戏如太空大战等、一共学完成了4~5个项目。Android都是看书自学。这些学完了,因为不到18岁。我对他说,Android的开发团队都比较小,公司不会招一个小朋友来把Android项目交给你做。反正你现在还没毕业,不如先学学J2EE。这时他完全不了解JS, 数据库,web的内容(了解一点点HTML)。他没有赶进度,是因为年纪比较小,业余时间学习。
自学编程进度上可以根据自己的情况定,我的建议是先了解整个体系。以项目驱动的方式来学习,找一个系统的视频教程。
2、多做多练。
练习、项目是对学习最好的检验和升华。在不断的练习和项目中强化了知识点。我打过一个比方,一个个知识点好比珍珠,如果没有一个大的项目来把这些知识点串起来,你所学的知识就是散乱的。很多东西是过了你眼,过了你耳,没有过你心,很快就忘记了。编程是一门实践性很强的学科,在项目中解决的问题会升华你对知识点,技能点的认识。(关于如何自己确定一个项目去练习,得另文详述了)
3、遇到问题,独立解决。
这点可能是大家在自学中遇到的最难的地方。我自己是Java培训讲师。但是他的问题我基本不回答,他也很少问我。都是百度,GOOGLE。这是一个艰苦的过程。我听到他解决一个问题的感慨,“这个问题憋了我3天了!”。印象中我只跟他解决过3个问题。其中一个问题还只能算跟他讨论,最后他自己解决了告诉我,我写了一篇文章:
4、不足地方。
他学习做的练习、项目多,但缺少总结、笔记,我曾向他建议写BLOG。这是一个非常好的学习习惯。CSDN、iteye、51CTO这些对于学习编程的童靴来说是写博客最好的地方。