创意孵化梦想”——中国移动北京
后端开发

想成为现代后端开发工程师吗?24步就可以搞定!

  今天的网站开发已经大不同以往,有很多的东西会对进入此领域的人造成困惑,这就是我们写这系列文章的原因给大家指导如何在开发过程中胜任特定的角色。

  大约1周以前,我们发布了一篇名为“现代前端开发--2018”,同时我们承诺了会发布一篇“后端以及开发运维路线图”。兑现这一承诺,这篇文章就是关于现代后端开发者的。如果你还没有查看过前端开发路线图,可以去瞧瞧先。

  在此之前,后端路线图就是简单粗暴的给出了你需要掌握的技术,而没有清晰的方向以及学习的合理顺序。我们像前端一样以循序渐进的方式重绘了后端路线图,希望给你更好的指导。

  言归正传,我们开始吧。详细的路线图在下面的图片中,同时我会逐步的详细讲解。

  开始之前,虽然我们没有将HTML/CSS列举在路线图中,但是我们还是建议用户具备基础的HTML/CSS技能,至少能够写一些基本的HTML/CSS。

  语言的选择有很多种,为了方便您的选择,我将它们进行了分类。对于刚接触后端开发的新手,我强烈建议你们选择一门脚本语言,因为它们的需求很多且上手较快。最好的选择当然是Python,它的需求正在急速增长,有大量的职位可供选择。

  最后的学习方法就是动手实践。一旦你选择了语言,然后对其有了基本的了解,开始使用它。运用它进行尽可能多的练习,写一些小程序练手,熟悉它。下面是一些小例子,可以帮助你开始。

  一旦你了解了语言的基础,同时用它写过些示例程序,接着学习该语言的包管理器。包管理器可以帮助你使用第三方库,同时你也可以通过它发布自己的库以供他人使用。

  每一种语言有其规范以及最佳实践。你需要掌握这个东西。比如Python有PEP8跟Google Python代码规范。Node.js各社区有不同的规范。其他语言的状况也大同小异。

  务必要掌握安全最佳实践。读读OWASP指南,了解不同的安全问题,同时要知道如果避免这类问题。(你选择的语言)

  现在你已经掌握了语言基础,最佳实践,安全相关以及包管理,你可以去开发自己的库供他人使用了。如果你用Python,你需要发布在Pypi,如果是Node.js,你需要发布在Npm。

  测试分很多种,要了解每一种测试的类型以及其目的。但是现在,首先学习单元测试以及综合测试,应用在你的程序中。此外,还要了解不同的测试术语,比如mocks,stubs等等。

  学习利用关系型数据库保存你的数据。在学习之前,首先掌握数据库相关的术语。比如: keys,indexes,normalization,tuples等。

  可供选择的数据库很多,你只需要掌握一个,其他的也会变得很简单。流行的有MySQL,MariaDB(MySQL分支,与之非常相似),PostgreSQL。推荐选择MySQL开始。

  创建一个简单的应用,运用你所学的一切。实现一个想法,可能是创建一个简单的博客站点,实现一下的特性:

  根据你的项目类型以及你的语言的不同,你可能会需要一个框架辅助开发。(也可能不需要)。每种语言都有不同的选择,选择一个合适的即可。

  如果你选择了Python,建议你选择Django,对于微框架,建议Flask。

  首先了解什么是NoSQL,以及它们与关系型数据库的差别,同时为什么需要它们。NoSQL数据库也有多种选择,了解并比较它们之间的特性以及不同之处。常用的有MongoDB,Cassandra,RethinkDB,Couchbase。建议选择MongoDB开始。

  学习如何在你的程序中实现应用级的缓存。了解如何利用Redis或Memcached实现缓存,同时在你的博客应用中实现缓存功能。

  学习不同的认证以及认证方式。你需要明白它们是什么,它们的不同点,以及它们适用的场景。

  学习消息代码,了解什么时候以及为什么使用它们。有很多可供选择,最知名的是RabbitMQ & Kafka。建议从RabbitMQ开始学习。

  随着应用程序规模的增长,简单的查询已经无法满足要求。这个时候,你需要用到搜索引擎。同样有多种选择,每一种有自己的特点。

  Docker可以为你的开发提供巨大的便利。它可以让你的开发环境与生产环境保持一致,可以让你的系统保持干净,可以加速你的编码,可以测试部署。Docker的好处,请自行google。从现在开始,学习Docker。

  到了这个时候,你可能已经处理过服务器相关的问题。这一步骤主要是了解不同的服务器之间的差异,局限,以及不同的调优方法。

  虽然不是必须,但是具备Web Sockets的技能是有好处的。学习编写实时的web应用。可以在博客应用中,实现即时更新blog列表。

  Graph模型具备非常好的灵活性在处理数据间的关系的时候。Graph数据库提供高速&高效的存取以及查询。学习了解Neo4j或者OrientDB。

  在你的学习以及实践过程中,肯定会碰到路线图里没有提及的东西。你只需要保持开放以及饥渴去学习新的东西。

  时刻谨记,学习的关键是实践。多动手!刚开始的时候,你可能会感觉不大好,随着你的坚持以及时间的推移,你会变得越来越好。

  文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

  你正在学习编程,那么“爬虫”绝对是你不可忽视的。那么,学习python爬虫之前需要哪些准备?

  “Dlib是一个现代化的C ++工具包,包含用于创建复杂软件的机器学习算法和工具”。它使您能够直接在....

  Python写swap很方便,就一句话(a, b = b, a),于是写基于比较的排序能短小精悍。刚....

  Python开发技术详解 周伟,宗杰等编著 机械工业出版社 随书附带程序

  懂原理侠:抱歉我起了个这么蠢的名字。但是,进阶到这一步,已经可以算是入门了,可以找一份能养活自己的工....

  有时,不能使用短名字的原则也会有一些例外。当一些意义明确但是较长的变量名重复出现时,为了让代码更简洁....

  Python是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度和代码的清晰程度。它可以用来....

  一个人学一门技术的速成方法就是不学那些所谓“没用”的东西,直接告诉他最终结论和操作方式。但是很多东西....

  从 2018 年 9 月起,编程将成为所有高中生学习和掌握的内容。不仅如此, 编程语言 Python....

  在AI蓬勃发展的今天,IT巨头都在悄悄布局,做为IT人的你,是否也准备好了?虽说Python不是进入....

  设置参数位置,将最常用的参数放在前面,将相似的放在一起。例如: JavaScript 的 histo....

  这是一份来自 85 个国家的超过 1,000 名参与者得出的数据:这是最新的 JAXenter 调查....

  而且因为Python很棒,我们可以在__init__模块中做很多事情,甚至是很奇怪的事情。假设我们不....

  定义当用户试图获取一个不存在的属性时的行为。这适用于对普通拼写错误的获取和重定向,对获取一些不建议的....

  对于 dict 和 list 等数据结构的对象,直接赋值使用的是引用的方式。而有些情况下需要复制整个....

  运维的标准化和流程化首先要以文档的形式进行展示,并且能够指导日常运维工作。国有国法,家有家规,冰箱洗....

  谈装饰器前,还要先要明白一件事,Python 中的函数和 Java、C++不太一样,Python 中....

  同样兼容所有平台的Atom被称为是“21世纪可破解的文本编辑器”。开源的Atom拥有时尚的界面、文件....

  我们就把计算机理解为一个人,这个人很死板,只能按照你给他的详细命令进行工作。而这个人工作速度特别特别....

  由于添加了这个正则化项,各权值被减小了,换句话说,就是神经网络的复杂度降低了,结合“网络有多复杂,过....

  本文主要介绍的是python程序的执行过程,首先介绍的是编译过程,其次介绍的是过程图解及编译字节码,....

  本文开始介绍了python和Python优缺点,其次阐述了python可以用来做什么开发,最后分析了....

  语音识别源于 20 世纪 50 年代早期在贝尔实验室所做的研究。早期语音识别系统仅能识别单个讲话者以....

  urllib.parse – 用于打破统一资源定位器(URL)的字符串在组件(寻址方案,网络位置,路....

  根据 Hacker News 招聘趋势排名,公司对掌握 Python 技能的人员越来越干兴趣,其次是....

  作为一个数据分析师,应该信奉一句话----一图胜千言。不过这里要说的并不是数据可视化,而是一款全....

  本文总结了日志、JSON解析、单测、XML解析、字节码处理、数据库连接池、集合类、邮件、加密、嵌入式....

  作为一个数据分析师,应该信奉一句话----一图胜千言。不过这里要说的并不是数据可视化,而是一款全....

  对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。本文通过 Python....

  最近有一篇文章 “摩拜单车创始人套现 15 亿:你的同龄人,正在抛弃你” 在朋友圈刷屏,一时引起众多....

  回想一下,微软创始人比尔·盖茨 13 岁学习编程,Facebook 创始人扎克伯格 11 岁开始学习....

  比如量级稍微大些的数据,Office的性能根本不能满足需求,而用 Python 可以轻松地处理、分析....

  Python,是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,Python已经成为继J....

  表情包不仅仅是一种符号,更是一种文化;是促进社交乃至社会发展的动力之一,就像懒。

  人们对于新事物的快速理解一般基于此新事物与生活中某种事物或者规律的的相似性,但这个promise并没....

  在 Flask 中获取请求参数需要使用request等几个全局对象,但是这几个全局对象比较特殊,它们....

  我们应该意识到,许多策略不只是针对句子分割,而是针对分割的边界确定之后应该做什么。例如,我们可能会采....

  我从一篇pix2code论文和另一个应用这种方法的相关项目中获得灵感,决定把我的任务按照图像标注方式....

  什么是数据挖掘?数据挖掘指的是对现有的一些数据进行相应的处理和分析,最终得到数据与数据之间深层次关系....

  Python语言是最受欢迎的web语言之一,特别是近几年,python语言广泛的运用于各类网站开发、....

  Python 的学习,知识涵盖极为广泛,对不同应用目标的学习,进阶的路线有很大的差异,以下分别介绍常....

  在AI开发中使用Lisp语言,是因为它的灵活性使快速建模和实验成为可能,这反过来又促进了Lisp在A....