来自: 简书
作者:知米丶无忌
链接:http://www.jianshu.com/p/814d05ddb54a
(点击尾部阅读原文前往)
已获转载授权
画个图很重要
服务器端开发是开发者中技术性偏强,对逻辑思维要求更高的一个细分方向,不同于前端,移动端等等,后者很多在做偏UI的事情,而服务器端处理的只有逻辑和业务。所以从长远的职业规划来讲,从事服务端开发作为技术道路的起点对长期是很有利的。
web服务器端根据服务的种类会逐渐细分:小型公司小型业务一般是简单工程化,简单部署,开发选型多种多样(php,Java,Python,Node.js...)这时候招的服务端主要还是看对语言的熟悉程度,一般要求是快速搞定。
中到大型公司随着业务复杂度上升开始进行架构上的拆分,做一些服务化,中间件,近些年又有专门做数据分析(大数据,机器学习)的数据分析师,其实也是从服务器端演化出来的。在一些公司中甚至web容器的业务逻辑开发(本人做的事情)被称为前端,而真正的后端是做数据分析、推荐系统、算法支持等等。这时候招聘web服务端往往要求业务架构能力,如何解耦和模块化一个工程,如何做分布式。
内功篇
实际上普通的web服务端开发掌握个语言,学两个框架基本就可以上手了,但是后续提高必须很好的掌握所有相关基础,这个基础就包括了协议层(TCP/IP),操作系统知识。
比如大流量下如何配置nginx服务器参数? 流量进来服务器会有各种各样的问题:连接恢复的连接风暴、高并发秒杀型应用如何做限流、内存吃紧如何优化、连接数cpu内存各种被占满如何分析瓶颈在哪?这时候只知道几个框架的人完全是一头雾水,必须从计算机的更底层去分析原因。
初入职场先只能面试普通服务器端开发(非资深)攒点项目经验,形成自己的一套分析问题的方法论,设计和架构一个复杂系统的经验。
内功包括:
某一方向的服务器端语言和成熟框架:
建议传统一点的,比如Java,PHP。一些前沿的还不稳定不适合你玩,比如Python、Node.js(Javascript)、GO、scala。必须精通,没得商量。
常用框架需要精通,否则招你进去没法快速上手干活也不会招你。
如Java栈的需要了解Spring, MyBatis, 容器Tomcat,Jetty
扩展
分布式RabbitMQ(ActiveMQ), zookeeper ,hadoop目测以后会成为必备技能,做了解。工具类jar包apache系列:common-lang.jar, common-io.jar, common-bean.jar。搜索ElasticSearch(lucene, solr)
Python栈的需要了解django, Flask 至少其一
PHP栈我只知道一个Lavarel,囧
适当的全栈全栈是趋势,起码要懂一点页面的东西,包括html, Javascript, css
常用的JavaScript框架和标准:CommonJs, jQuery, Bootstrap
扩展(选择性了解):Angular, React, vue, Backbone, zepto (适可而止,一入前端深似海)
相关工具
协作:Git使用
数据库
MySQL必须精通,没得商量。nosql需要了解:MongoDB, Redis, Memcached 原理和基本部署方式和使用方式。