使用 Spring Boot 开发系统以前言

一个偶然的机会使得朋友须要我帮忙编写一个企业应用。这个工做是免费的,所以进度方面并不紧张,因而我也就有了借编写这个应用实践一下企业开发方面新技术的机会,且写且学。前端

由于这是一个小应用,并且全部工做都是我一人来作,全部必须选择简单、易用、快速的技术,好在现在这样的技术可选择的很是多。最终我选择了 Spring Boot、AngularJS 和 Bootstrap 这三个技术。java

写在正题以前

先扯一些和标题关系不大的东西。在写如何用这些技术开发一个企业应用以前,我想谈谈我在软件工程师技术学习和发展方面的心得。刚参加工做的时候,我如同不少工做在外包行业的码农小朋友们同样,学习的中心是在 Struts、Spring 和 Hibernate 这三个框架之上的,而编写代码和 Java 的基本功则是半瓶水(甚至还不到)。其实这样很正常,由于 SSH 这三个框架是在平常工做中每天要用到的,因此学习这些框架的时候对于我有即时的意义。可是通过几年工做以后,我逐渐感觉到对于一个程序员来讲,其实内功才是最重要的。以前由于经验浅,感觉不到这一点,甚至觉得能熟练使用 SSH 就是一个不错的程序员了。那对于程序员来讲,内功都有哪些呢?这里就只说技术方面的了,交流、时间管理方面的就不在本文范围了。程序员

内功都包括哪些

这个话题很大,说一下我能想到的:面试

  1. 你主要使用的编程语言原理 如今编程语言帮你作了不少底层的事情,但这不表明你不须要了解这些底层的、原理性的知识。对于我主要使用的 Java 而言,Java 虚拟机、垃圾回收、内存模型都是你须要了解的知识。有时甚至须要精通,好比你须要对垃圾回收进行设置的时候。算法

  2. 代码重构和设计模式的知识编程

    1. 精通某种编程语言不表明你能写出好程序。精通某种语言可能只意味着你能写出对机器最为友好的语言,但其可读性如何就另当别论了。代码的可读性和可维护性与开发维护成本是息息相关的。需求是不断变化的,因此好的代码也是须要不断变化,因此不懂得代码重构的知识和技巧,你就不可能在不断变化的需求的影响下写出漂亮的代码。
    2. 设计模式对于好代码的重要性不言而喻,可是切记不要为了设计而设计。简洁的代码每每就是美丽的代码,过分设计会与此背道而驰。
  3. 经常使用数据结构及其实现方式 不为别的,就为了面试的时候能顺利过关也要作到这一点。对于用 Java 的朋友,JDK 中 java.util 包中的数据结构应当耳熟能详。什么 ArrayList、HashMap 中主要操做的源代码应当都看一遍,调用流程在大脑中应当有个完整的印象。对于经常使用操做的边界条件也应当了解。设计模式

  4. 阅读你所经常使用类库框架的源代码 好比像 JDK 的源代码、Spring 的源代码等等(固然也包括其它语言的,若是你常用它们)你都应当有意识地了解它们主要部分的源代码。要想写出好代码,首先要知道何时好代码。服务器

  5. 多线程技术 作服务器端开发的同窗,并发编程是必须掌握的一个重要的知识点。即使是像 Java 这样,在并发方面提供了很是多工具的语言,你也是要深刻掌握并发方面的知识。数据结构

  6. 算法技术 并非让你们背算法,而是要让你们培养解决问题的思惟习惯,而算法就是最好的锻炼方式之一多线程

  7. 面向对象的思想

  8. 架构模式 设计模式只是关于方法一级和类一级的设计的范式,经验的总结。而要设计一个应用程序,仅仅是方法和类级别的好的设计是不够的,你还须要更高级别的设计思想来武装你的应用设计,例如状态机、事件驱动、DDD 等等的。固然我这方面的只是也十分有限,也还须要继续学习。

  9. 协议 TCP、HTTP 协议几乎是每一个作服务器端开发的朋友必须掌握的。TCP 并不须要精通,可是你知道的越多,你每每就能更深刻的认识和解决工做中的遇到的问题。对于作电信方面的同窗来讲,SIP 等协议必需要了解,甚至精通的了。

新技术的学习

软件生产力的不断提升,得益于新技术的不断涌现。做为软件开发人员,不断的学习新技术是自身能力提升的重要途径。虽然你最终所能达到的高度每每是由你的内功的水平决定的,可是这并不意味你不用学习新技术。就比如是一个士兵,不论你的身体素质、射击技术、格斗技术、做战经验这些内功多么好,若是你不能熟练操做现代化的武器,你仍是不能成为一名好士兵。

现在软件开发领域新技术层出不穷,前端技术、大数据、NoSQL、云计算、新的编程语言和已有语言的更新、新的开发框架、移动开发,这其中任何一个领域都有大量的新技术,让人应接不暇。学习全部这些显然是不可能的,也没有必要。对于选择哪些新技术进行学习,一个原则就是根据你现有的工做内容和从此的发展方向来进行选择。

你首先要对你所作的项目有批判性的思考,绝对不能有这样的思想:“之前是这样作的,因此我这么作也是对的”。你要时不时的思考现有的设计和使用的技术是否存在问题,这些问题对当前项目的影响的程度如何。若是有新技术能改善现有的设计、提升生产力,那这个新技术即是值得学习的。即使是你现有的项目不能轻易地应用新的对生产力有明显提升的技术,一般是一些大型的、大量采用旧技术的项目,采用新技术有时会牵一发而动全身。领导每每会出于风险的考虑,不会轻易采用新的技术。但在这个时候,做为开发人员的你,仍是有必要去学习一些会对项目有明显帮助的新技术。由于只有当证据确凿时,领导才有可能决定在项目中使用这些新技术。

选择技术一般是根据这样的路径:这个技术是什么 -> 它有什么优势 -> 它的优势会给个人工做带来什么帮助 -> 它有什么缺点 -> 要使用这个技术的项目是否能接受这些缺点。

开发这个系统的缘由

就像我以前说的,当新的技术能明显提升现有项目的开发效率,但短期内这些新技术并不能应用在项目之中时,你仍然应该去学习这些。一方面,当你掌握了这些新技术的时候,当你目前工做的项目决定应用这些新技术的时候,你在工做中便有了更多的发言权,你的地位天然也会有提高。或者你的能力能够应用在将来的项目中。

对技术的掌握,最好的方式就是在一个实际的项目中使用这些技术。实践出真知。这即是我帮朋友免费开发一个系统的缘由。

除了以前提到的技术外,Gradle、Spock 也都会尝试使用。这个项目像是一个试验场,让我有机会经过一个实际的项目学习这些新技术。

对于一个喜欢编程的人来讲,使用新技术老是会让人激动的。可是,在快乐地学习新技术的同时,你也要时不时地想一想,本身的内功仍是有不少欠缺的。

相关文章
相关标签/搜索