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