2016年总结与2017年计划

主要学习方向:Java、CI/CD
1、语言: Java
2、框架:Spring Boot
架构: 微服务  Microservices.io
3、软件开发流程:Software development process
4、DevOps
5、CI/CD
信息安全:XSS,SQL Injection
6、日志
7、测试     
8、初次了解或尝试的东东:Docker、Nginx、DaoCloud、网易IM云服务、Shiro、Atlassian、AWS、Gitflow Workflow、Redis、ELK、neo4j、ZooKeeper、Chef、ActiveMQ、SOA、工程师文化
灰度发布、A/B测试、Serverless Architectures(无服务器架构)

7、云服务:Postman云服务、Gradle云服务、石墨推出收费服务、Jenkins 推出 新的界面UI
8、在线学习:Udacity、慕课网、麦子学院、CSDN公开课、普元云计算、InfoQ大咖说、2016 Google StudyJams中国区、混沌研习社、掘金、开发者头条、云栖社区、InfoQ、atlassian、https://www.thoughtworks.com/radar
https://www.oreilly.com/ideas/ youtube 视频资料等
https://www.nginx.com/resources/library/  提供了很多O'REILLY的免费电子书下载
图灵访谈
CSDN近匠
https://pivotal.io/
bittiger.io

9、书:重构、代码整洁之道、构建之美、深入浅出MyBatis技术原理与实战、微服务设计、程序员
10、工具: IDEA的进一步了解、 Chrome的使用。

11、 记录片: 互联网时代、走进科学(数据爆炸)
12、心态:不应局限于某个单一领域,多接触各类新技术,掌握未来科技发展趋势
13、产品:对于创业与产品,有一些简单的个人感受
14、冯大辉CTO,对CTO的认知,架构师的认知。优秀的工程师,程序员软技能

主要拓宽了技术知识面,很多知识并未实践与深入了解。

沟通的重要性、文档的重要性、代码整洁的重要性、项目管理的重要性

展开描述:

了解 Java 8 的新特性。
比如 时间API 进行了很大的改进。对开发者非常友好。但不知道为啥会创业小公司(技术团队少于10人)不愿意应用在项目中。
对于Java SE 开发和 Java EE 开发的还是有一些模糊。
另外对 Java 核心基础掌握的仍然很薄弱,
Java 集合框架 Set List
Java concurrent 并发工具包
Java 线程Serverless Architectures

JVM

Java Servlet JSP

WebSocket

应用服务器Tomcat的掌握程度也处于薄弱状态。以及嵌入式Tomcat的了解

今后从官方文档了解、掌握、加深各方面知识

16年基本掌握了如何使用Spring Boot 进行 Java Web Service 的开发。
但基本停留在简单应用上,未进行过复杂应用的开发(使用 Spring 提供的各种特性)。

关于数据库
对于数据库

乌云网的没落,苹果与谷歌推动的Https的应用,让安全得到了互联网行业的重视。

在多个App的Web网页中以及公司的中都出现了广告,应该是由于流量劫持造成的。

Http,Https 等协议的了解属于浅尝辄止。
公司的项目中也暴露了各类安全问题,(支付,登录,Cookie都处在一定的安全漏洞)

关于微服务,一直是犹抱琵琶半遮面的感觉,都是看各种博客来了解的,但一直没有去实践于项目中。(看的是翻译版,原文地址 https://www.nginx.com/blog/introduction-to-microservices/)
微服务解决了单体应用的模块之间的耦合性,更易于扩展,单个独立的服务更适合部署和拆分小团队来开发。

项目管理、团队管理、软件开发流程,
由于个人能力不强,一直在创业小公司(技术团队少于10人)混迹,亲身体会到小公司对于互联网软件开发流程不重视以及未对这方面引起关注,开发流程比较混乱,项目基本没有规范可言,后端接口基本靠口头沟通,代码质量管理也是没有的,
代码会充斥各类坏味道,而且同样没人认识代码问题的严重性,版本控制工具依然停留在SVN上,同时Workflow也没有引起重视,基本所有的代码都是提交在主分支上。另外对被互联网公司广泛应用的持续集成与持续交付的实践也基本没有,应用的部署都是手动完成的,而且没有经过自动化测试。同时测试环境与线上环境不一致的问题都会出现。另外值得一提的是,在项目文档方面,有部分人会认为写文档是浪费时间的。在前端、移动端 与后端 的接口交互上,使用口头沟通(或QQ、微信非团队沟通工具)或直接发代码的形式,实际造成了理解不一致,调试繁琐等问题。由于没有CI/CD 的实践,造成大的功能迭代完成后,经过简单的人工功能测试就发现一堆问题,造成周期加长,开发人员加班赶期的结果。
在测试方面,基本停留在简单的人工手动测试上,没有可持续的自动化测试(安全、性能测试都没有)

DevOps

关于这方面的知识比较模糊。

CI/CD
持续集成、持续交付,持续部署,一直都比较感兴趣,在这方面阅读和观看了很多大牛的分享。这一方面涉及的知识也比较多,比如

在Udacity 学习了几个免费课程、Software Development Process、Intro to DevOps

随着软件行业的快速发展。最近几年,很多做工具类的软件公司,都开始在推出云付费服务。比如Postman,Gradle

看了几本技术相关的书,但对于内容消化的根本不够,在实际工作的实践应用也基本没有。当公司UI问我“重构”用通俗易懂的语言描述,我竟答不出来。

工具的熟练掌握,对于强大的Java IDEA IDE 一直在用,可是就使用了最基本的功能,却忽略了它提供的其他好用的特性功能。(比如对版本控制系统的支持,代码质量的检查)
对于自己常用的工具的使用,应该熟练掌握,且信手拈来。使用工具将开发效率最大化的提高。

开发方法:

Software Development Methodologies

Agile Software Development Methodology (Scrum、Kanban)
Extreme Programming (XP) Methodology

https://www.atlassian.com/software-trends 软件趋势的调查中:
High performing teams practice Agile, CD, and use a DVCS (like Git) but only 49% of all teams use all 3 software development trends together. Provide some details on your current process below and see how you compare to others in your industry.

Agile is a software development framework. It breaks projects into chunks of work that are prioritized and delivered iteratively.
Git is a version control system that records every developer’s working copy of the code with a full history of all the changes in a repo.
Continuous delivery aims at building, testing, and releasing software frequently in cycles, ensuring it can be reliably released at any time.
Containers are used to spin up test environments where you can define an image that includes everything needed to run an application.
Code review is a process when an issue is finished, and other developers look over the code to make sure it is ready for production.

Agile、CD、DVCS (Distributed Version Control System) 、Container、Code review 这5个实践是目前的软件趋势。

94% have a branching strategy in place. Learn more about branching strategies and how these everyday workflows improve the quality of your code.
29% said a pull request waits 4 hrs to be reviewed. Pull Requests (PR) are created as a form of code review to notify team members that a feature has been completed and is ready to be reviewed before merging to the master branch. They create a dedicated forum for teams to discuss proposed changes, keeping the team connected and code clean. Check out how your team can benefit from using pull requests.

PR (Pull Requests) (https://www.atlassian.com/git/tutorials/making-a-pull-request/how-it-works)
Most PRs have 1 - 3 reviewers
Teams average 1 PR / day
51% enforce an approval policy, helping ensure clean and production-ready code. (https://developer.atlassian.com/blog/2016/03/code-approval-policies-explained/)

Teams that practice Continuous Delivery make rapid changes and reduce the risk of error.
On average, a team member will create 20 builds / month
The average build time is 18 mins

Here's an inside look at agile teams that release often. Teams attributes include:

~30 issues / sprint
10 day average sprint length
15 days between releases
Say goodbye to a case of the Mondays. Mondays are the most popular release day.

40% of teams practice ChatOps for conversation driven development. If you just said "huh, what is ChatOps?" or "I think I'm doing ChatOps, maybe?" - check out a real life scenario and pro-tips here (http://blogs.atlassian.com/2016/02/inside-atlassian-sre-use-chatops-run-incident-management/) .

CD的好处:
Overall development costs reduced by ~40%
Programs under development increased by ~140%
Development costs per program reduced by 78%
Resources driving innovation increased by 5x

Microservices architecture is the new standard for building applications. Converting your apps to a microservices approach makes them more flexible, more stable, and far faster and easier to update. However, questions arise as to how to make the transition.

The seven-part series on microservices development published in the NGINX blog provided many of the answers. Now, we have created an ebook that combines these blog posts with information on how to use NGINX Plus to bring microservices to life as you develop and deploy your apps.
(https://www.nginx.com/resources/library/designing-deploying-microservices/)

敏捷12原则:http://agilemanifesto.org/iso/zhchs/manifesto.html
The Twelve-Factor App:https://12factor.net/

Fowler Martin
Beck Kent
Robert C. Martin
Chris Richardson
Jeff Sutherland  Scrum 创始人
Matt Stine   Cloud Native 的提出者

科技的进步,IT从业者也越来越多,在科技信息资讯这一块也越来越丰富,有给开发者程序员专门的App,网站,服务等。程序员的大型会议也逐步变多。

DevOps 通过自动化,来避免人工手动处理,
ChatOps
NoOps

Microservices From Design to Deployment 一书中关于对微服务的描述
Microservices are a critical part of a number of significant advancements that are
changing the nature of how we work. Agile software development techniques, moving
applications to the cloud, DevOps culture, continuous integration and continuous
deployment (CI/CD), and the use of containers are all being used alongside microservices
to revolutionize application development and delivery.

Disadvantages
 Deployment becomes more complex
 Many „small“ microservices, dependencies, etc.
 Automation is mandatory
 DevOps – Continuous Integration, Continuous Deployment,
Automated Testing
 Testing, logging, monitoring require new tools with support
for microservices
 In Java EE – problem of fat application server

2017 年计划

1、辞职、重新求职。
2、Java 核心基础知识 (http://docs.oracle.com/javase/tutorial/tutorialLearningPaths.html http://docs.oracle.com/javase/8/docs/ https://docs.oracle.com/javaee/7/tutorial/)
Java SE 8 Lambda

Spring

3、常见算法

协议的深入:HTTP、DNS UDP TCP IP Socket HTTPS HTTP2

4、坚持写技术博客(无论好坏)
5、学习一门编程语言(Python、JavaScript、Node.js)
6、了解一门新东东(未来科技趋势 Internet of Things  IoT,Artificial Intelligence  AI、 Virtual Reality VR、Machine Learning、Data Science DeepMind 人工智能(AI)、大数据(Bigdata)和云计算(Cloud Computing)深层神经网络、TDD,DDD,)
7 微服务实践(网关、服务发现与注册)
8、DevOps的实践(http://www.infoq.com/cn/news/2016/12/2017-DevOps-5-predict)
《DevOps实践》《DevOps实战》

JAX-RS
CDI
WebSockets
JSON-P
Bean Validation
Concurrency Utilities for Java EE
JPA
JTA
EJB Lite
JCache
Servlets
HTTP/2
OAuth 2
Other

KumuluzEE comes with support for several Java EE specifications that we can selectively use in our microservices. As of this writing KumuluzEE comes with the following technologies:

Servlet 3.1
JSP 2.3
EL 3.0
CDI 1.2
JPA 2.1
JAX-RS 2.0
Bean Validation 1.1
JSON-P 1.0
You can choose to include only those that you actually need. This means that you can use only the dependencies that you need, instead of always having the entire runtime present that’s using your memory and slowing your microservice down. The next bigger release will include support for the following additional components:

Websocket 1.1
JSF 2.2
JAX-WS 2.2

AWS对DevOps的描述
https://aws.amazon.com/cn/devops/what-is-devops/

newrelic对DevOps生命周期的理解。
https://newrelic.com/devops/lifecycle

CI/CD
https://blog.snap-ci.com/blog/2016/08/30/5-ways-build-test-deploy-software-fast/
https://fabric8.io/guide/cdelivery.html

https://blog.openshift.com/cicd-with-openshift/

Cloud Native Java Applications on Spring Boot 许晓斌 在DockerCon的演讲。 提到了12原则,pivotal出版的Beyond the Twelve-Factor App

来自JavaONE的分享。
Ten Productivity Tips for Java EE and Spring Developers [CON2633]
https://oracle.rainfocus.com/scripts/catalog/oow16.jsp?event=javaone&search=CON2633&search.event=javaone

GitHub的使用
MySQL的使用

你可能感兴趣的:(2016年总结与2017年计划)