到成都研发中心已经有一个多月,现在已经有10位工程师逐渐地参与到服务器的开发工作中来,他们大部分之前都是做客户端的开发工作,有做iOS开发的,有做Android开发的,还有部分之前是做Symbian的开发工作的,大部分都没有服务器开发工作的经验,有一些甚至之前也没有接触过Java。
在实践中学习的效率是最高的,所以我们不会专门安排一段较长的时间专门给他们用于学习,通常我们要求他们用一天的时间搭建开发环境,然后第二天或者第三天就开始实际的编码。这听起来似乎有点残酷,或者说,新手能够在第二天就写出有用的代码吗?
答案是可以的,因为我们采用了结对编程的实践,每个新手在一开始的时候,都由有经验的人带着一起Coding,包括从头创建一个项目,进行配置,创建必要的脚本,一起完成具体的业务需求,一起写测试,一起重构,并发布到服务器。经过这样的过程,新手也能在很短时间内,对整个服务器的开发流程有一个很具体的认知,因为这些都是他亲身经历的(新手通常在Pair的时候应该承担更多的实际的编码工作)。恐惧来源于未知,亲身经历过整个过程以后,开发的每一个方面对这曾经的新手来说,不再是未知的怪兽。
当然,这个时候大部分人应该还只是知其然不知其所以然,“我知道怎么完成任务,但是我不知道他们运行的机制和原理”,有这种想法的工程师最少不是一个平庸的工程师,因为他有探索本质的欲望,这是很多优秀的工程师(以前喜欢说架构师,但是现在觉得工程师更贴切)的共同的特点,有更高的目标才能进步更快。
应这些有追求的小伙子/小美女们的要求,在这里尝试整理一些学习的资料和学习路线图,帮助他们更快的成长!
注:目前我们的技术Stack以Java为主,所以推荐的资料大部分都是Java Web相关的
基础篇
这里提到的基础知识,我认为是必须掌握的。
基础篇之Java
- 抽象类和抽象方法
- Java面向对象中的继承、多态
- 集合工具包 List, Map, Set 的使用
- 多线程,锁机制
- 范型
基础篇之前端开发知识
- HTML,HTML5
- CSS
- JavaScript基本语法
基础篇之数据库
- SQL语法
- MySQL基本操作
提高篇
提高篇中提高的框架和知识点,掌握了之后对工作效率的提高有明显的效果。
提高篇之相关知识点
- HTTP协议
- RESTful架构
- Servlet和JSP规范
- JPA规范
提高篇之软件框架
提高篇之编码技能
进阶篇
目前Web开发技术的发展速度越来越快,成熟的Spring + JPA + MySQL的组合的缺点越来越明显,他们对移动互联网的业务开发来说,有点太重了:
- Spring MVC尝试把所有的事情都在服务器端解决,但是现在前端框架的能力已经越来越强大,很多事情放在浏览器里面完成更方便,用户体验更好
- 打包之后动不动就几十M安装包、更新版本之后重启JVM需要漫长的等待,这些因素都跟现在的移动互联网的敏捷的开发周期不相符
- 使用到的第三方的依赖包有几十个,具体做什么事情不是特别清楚,发生问题时候,不同意定位
现在的趋势是后端只提供RESTful的接口,展现和控制逻辑完全在前端完成。
Node.js
Node.js利用Google Chrome的V8引擎来运行本地的JavaScript程序,构建快速、高并发的网络应用程序,他的优点是:
- 采用事件驱动的模型,非常适合高并发、高IO访问、低CPU计算的应用,一台服务器可以轻松处理10万个并发请求
- 使用解释性的JavaScript,无需编译,适合快速开发、快速迭代
- JavaScript语法对大部分工程师来说,是很容易上手的;同时,JavaScript也是前端开发的最主要的技能
JavaScript是目前最流行最前卫的语言,从Github上面的语言统计可以看出来:
{% img /images/2013/06/github-top-languages.png %}
Go
Go 是Google在2007年发起的一个开源的服务器编程语言,有如下的优点:
- 简单!表现在两方面,一是语法简单、清晰,Java、C++里面一些复杂的语法都不会出现在这里,你能在Go里面发现简洁的替代方式;另一方面是Go自身所带的库以清晰的结构提供了绝大部分所必需的功能
- 高性能。Go是编译成本地的二进制运行的,运行效率跟C是一个级别,是PHP之类的动态语言无法比拟的
- 优秀的并发编程模型,Go里面的Channel和Goroutine在进行并发业务开发的时候,无需担心内存共享中很麻烦的锁的问题;同时Go的并发模型可以有效的利用现代服务器硬件的多核资源
- 工程编译速度快,同样规模的Go项目,编译时间比C语言项目少很多
Go开发RESTful的服务的速度很快,跟使用PHP的开发效率差不多,并且在代码越来越多的时候,Go的优秀的工程管理优势会越来越明显。
NoSQL产品
MySQL作为最流行的数据存储方案,已经统治了这个领域很多年,现在出现了各种各样的NoSQL产品,实际上是作为传统数据库的补充方案,每一种都有自己的特点,应该根据实际的业务需求选择:
- Memcache
- MongoDB
- Redis
- Hadoop 和 HBase
- Neo4j