从一点不懂,到自认为跻身IT行业,花费了4年时间,就像经历了一个大学。
没有老师,购买任何一本计算机书籍,都是先从网上搜索比较、或者请教身边的高手,一般选择比较经典的书。可能我看书的顺序,与科班的程序员会不一样,因为我一直是根据我的兴趣来学习的,顺序基本上是从应用,再到基础,与学校的教学模式恰好相反。
我现在是一名java程序员,所以所学的技术基本是围绕如何掌握java这门语言进行的。
起步:
要有一些C语言基础,要求不高,能大致了解一下编程语言是什么就行。(1~2个月)
《java编程思想》,经典入门书籍,详细讲解原理,能加深理解,缺点是,对于某个知识点,有些例子太长。(2个月);
《java核心技术》卷1卷2(必读),特点是,用很短的例子,教会你每个知识点,而且对JAVASE的讲解,应该是最全面的。(建议用4个月的时间,仔细品读)。
《javaweb开发详解》,讲JAVAEE,虽然不是很全面,但是每个知识点,都讲的简单易懂。孙鑫老师写的,很不错,这是我看过的咱国人写的最负责任的几本书之一。
《javascript权威指南》:学习javascript语言,一般做web开发,难免要接触javascript。(2个月)
掌握一个MVC框架,现在流行的有Struts1、Struts2,框架一般不难学习,可选择一个学习。可在网上找一些文档。(1~2个星期)
《SQL必知必会》:数据库可选择一种使用,比如mysql,先学会使用就行,结构化查询语言SQL,则必须牢牢掌握。(1个月)
学习了这基本,基本可以在IT行业干活的。
进阶1:
spring:由于我是从spring2.0开始学的,那时看的是《Spring核心技术与最佳实践》,很经典,但技术总是学新的好,现在都spring3.x了,可在china-pub搜索一下,查看一下排行版。(推荐仔细研究,如果有精力,可研究源码,相信对你的编程能力,会有很大提高。1个月)
Ibatics:ORM框架总是学一个的,现在比较流行的Hibernate、JPA这些全自动化ORM框架,对于开发效率来说,是比较快,但是在大型web程序中,一般很少使用。所以推荐ibatics,书籍比较多,也可下载中文文档学习。(1星期)。
apache commons组件:包含了一些常用的工具,比如httpclient、commonIO等,花2个星期的时间仔细学习,可大大提高开发效率。可读《jakarta commons cookbook》。
进阶2(可选):
AOP:可读《AsprctJcookbook》,AOP是一个令人激动的一门技术,AspectJ是比较完整的实现。AOP可完全实现组件化的编程,而不用考虑组件之间如何通信,可在后期,根据需求,通过AOP组装成品。当然这只是AOP的一种应用,使用AOP还可后期给代码添加设计模式,而不用在代码前期,就考虑使用哪种模式。等等。通过学习AOP,你的编程思想,会有很大的转变。
JMS:可读《java消息服务》,另一种并发编程的思路,可实现分布式的并发编程。
进阶3(可选):
Ant:学会如何使用ant部署项目还是很有必要的,因为在生产环境中,很好通过复制代码来完成发布的。可读《Ant权威指南》,虽然有些老,但是足够了。
web service:《java web服务:构建与运行》,了解一些流行的技术,还是有必要的,即使用的地方很少。
进阶4:
Jquery:《Jquery基础教程》,现在很少直接使用javascript来获取页面元素、进行AJAX调用了,一般会选择一个javascript框架,jquery是一个不错的选择,学习周期也不长。
Linux:掌握shell脚本,企业软件大多布置在linux上,所以shell脚本,还是必须掌握的。可读《shell脚本学习指南》、《鸟哥的linux私房菜》
脚本语言:Perl、PHP、Ruby、Python,可选择一种学习。
进阶5(优化):
web服务器:《Tomcat权威指南》,了解如何优化web服务器,还是很有必要的,你不能总依赖系统人员来给你做这些事吧。《apachecookbook》或《实战Nginx》,了解如何使用这些web服务器实现负载均衡,反向代理。
搜索引擎:《开发自己的搜索引擎lucene2.0+Heritrix》,有些数据库引擎并不支持全文索引,所以可使用lucene辅助。另外,lucene可索引任何数据,功能相当强大。
数据库优化:《mysql性能调优与架构设计》,读过后,可了解哪些地方可能会成为性能的瓶颈。即如何提高数据库性能。
进阶6(基础篇):
对于一些基础知识的了解,还是很有必要的,特别对于非科班的,如果在面试时,回答不出来,会遭鄙视,工资也会大打折扣
《离散数据及其应用》、《算法导论》(可只读数据结构部分)、《操作系统》、《编译原理》、《UML2.0学习指南》
进阶7(兴趣篇):
现在回过头来,如果有精力,还是有必要掌握C语言的,最起码要了解gcc和make这两个工具及编译的过程,因为在linux中经常要使用。
推荐书籍《C程序设计语言》《C语言核心技术》