进击全栈开发学习计划

309 阅读3分钟

毕业两年,大部分时间都是在做ReactNative混合应用开发,随着混合开发的复杂度不断提升,以及接连不断,越来越多的复杂问题出现,发现需要投入大量精力去学习的方向和我自身对软件的理解有比较大的区别。

为什么要做全栈?

  1. 首先并不是刻意想去做全栈,只是随着不断的学习和了解发现,一些复杂的问题是在各端孤立地思考只能解决一些常规开发遇到的问题,而真正更有价值的问题需要更宏观的视角。
  2. 我比较喜欢完整去做一个自己的产品,我有非常多的想法和创意。
  3. 软件中最大的问题就是沟通问题,如果涉及到跨端沟通而不能理解对方,就会出现很多自认为正确无意义的争论,而且最后得出的结论也可能是取决于哪方更会争论、以及在公司的地位,而不是真正的最优解。
  4. 产品的业务逻辑,以及需要哪些数据,应该是前端最清楚的,而且多变的业务逻辑往往是由核心类聚合而成的,比如一个商品详情页,由商品类、留言类、用户类聚合而成的,而这块聚合方式会随着版本迭代不断的变化,传统的开发模式,聚合处理交给后端,每个版本的业务逻辑都要和后端沟通,调整字段,并且如何封装字段还可能有争论,后端可能考虑通用性,前端可能考虑业务数据的便捷性等等很多问题,而这一块数据聚合如果交给前端来做,比如加一层node用来前端聚合数据前端用,想想都爽死。

前后端合作大体上有三个阶段:

  1. 后端核心数据管理、业务逻辑、视图层,一套mvc全撸了。
  2. V层交给前端,后端提供接口暴露数据。
  3. 也就是我理想的分层方式,后端服务化、只提供按照类划分的核心业务数据,而数据聚合到具体业务上应该由前端node层来做。

学习计划

梳理后端知识体系

就是经常听说后端的一些名词,可能分类不准确,希望有大神给纠正

后端语言

  • node、koa、express
  • java || Go

数据库

  • MySQL
  • NoSQL
  • Radis

运维层

  • Docker
  • linux
  • nginx

网络层

  • http
  • tcp
  • Restful
  • graphql

架构

  • 微服务
  • 分布式
  • 集群
  • 加密

具体学习方法

  1. 查询文档、博客、等通俗简短的资料,弄懂后端的几个概念是什么
  2. 略读快速过一遍《Growth: 全栈增长工程师指南 》、《深入浅出node.js》、《高性能MySQL》、《鸟哥的Linux私房菜》、《循序渐进学Docker》《Redis入门指南》。
  3. 做出项目,并同时反复查阅书和官方文档,尽快熟悉
  4. 仔细阅读各项技术的权威指南并在掘金上记录