Learn-Map-Full-Stack

前言

  • 这里是筑梦师Winston,本文致力于将自己如何从0到1成为一名前端/全栈工程师的路线图,原版在简书发布,但很多人告诉那篇路线图并不友好,学习路线陡峭。

  • 经过长达90天的自学和实践,我也发现了之前路线图的缺陷和不足,因为简书的样式限定,无法达到本文要求,故在Github长期分享个人经过实践总结的路线图.

  • 我不是大神,也不厉害,我可能成为不了你列表中大神的一员,但我可以成为你列表中和你一起学习的一员。我只会是一个活生生的在努力学习的例子。

本文希望可以对以下人群提供帮助:

  1. 所有在培训机构以及在校大学生、计算机系和非计算机系并对编程感兴趣的人。
  2. 所有想从事程序员行业的非本专业、非科班、转业的社会人群。
  3. 所有在职程序员学习,并想要提升自己的人。

同时本人也希望:

  1. 如果您是一名想要自学,并且还有可能是非科班出身的人,无论您出身如何,我们都始终欢迎您加入我们,一起自学。

  2. 如果您是一名热爱分享,谦虚好学,成熟沉稳的大牛,想要更好的引导即将入行的大学生和转业人士,欢迎您加入我们Learn+Code Club提供您的资源以及宝贵的意见。

  3. 如果您在阅读本文时有什么好的想法及建议,或者发现了错误,以及不妥之处,还请您积极提出issue,我们会及时更新,谢绝恶意灌水。

说明:

  1. 只想要学习前端的同学看到第三阶段前端向即可。
  2. 全栈向可以选择性看完全部。
  3. 后端开发目前只提供部分PHP,Java后台后续会放出。
  4. 本手册只代表个人观点。

全栈学习路线图

准备阶段

开发向

推荐收藏的网站

程序员必备 程序员必备 前端必备 前辈博客 推荐博客 其他
StackOverFlow CNode社区 前端的收藏夹 阮一峰的博客 祈澈姑娘 脚本之家
LeetCode 开源** 前端必备收藏 廖雪峰的博客 筑梦师 站长工具
掘金 CSDN JS前端开发联盟群 张鑫旭的博客 vivian 编程语言排行榜
思否 知识星球 JavaScript参考标准 陈皓的博客 java3y 在线JS代码测试
简书 51CTO 伯乐在线论坛 今日头条技术博客 zhisheng 在线文档查询
知乎 极客导航 MarkDown排版利器 前端农民工的博客 贾顺明
小专栏 慕课网 火狐开发者官方手册 尤小右的博客 幾文山
InfoQ V2EX社区 极客导航-前端 CSS魔法的博客 sindrilin
腾讯ISUX w3cplus W3C-School 小胡子哥的博客 沈唁志

推荐公众号


如何入行

在看下面文章之前,请先看我这篇文章,它阐述了我个人观点以及个人的学习方法,您可以先判断自己是否适合程序员这个行业,不要盲目入行,后悔终生啊。

这里粘贴部分 给没有点链接的人

是否适合程序员

首先,判断自己是否适合程序员这个职业.

在校大学生&应届毕业生

1.是否计算机相关专业?

如果不是计算机相关专业,判断自己是否会适合程序员或者计算机工作的学习.例如:打字速度,不会厌倦电脑,独立钻研的能力.

2.是否在学习C语言等计算机课程还算得心应手?

数学和英语能力,以及计算机基础学的是否扎实,都决定了以后你能达到的高度上限,如果你学的并不扎实,不用担心,你只是会比别人慢一点到达同样高度而已,只要努力学习.

3.是否对着程序员这行或者计算机语言有着浓厚的兴趣?

我个人看法,学习能力是一方面,在勤能补拙的基础上,往往兴趣却是能支持你在程序员道路上越走越长的核心.

社会人士&其他职业

1.是否是发自内心的学习?

不是单纯的因为程序员行业工资高,而是想来学一门技术的.单纯把程序员当成挣钱的工具,会限制你以后能到达的高度.怎么限制?可能没有兴趣两年以后就转行了这种程度.

2.是否适合程序员行业?

挣钱的行业很多,不只程序员,程序员大多996模式,自己是否适应长时间在电脑前工作?

3.是否有着改变人生的想法?

往往社会人员进行转行时要比应届毕业生有着更大决心,否则你不会在这条路上走太远,你需要比大学生更有耐心和毅力进行学习.

程序员需要谦虚、好学、内敛、成熟的人,因为不仅需要不断的学习,还需要人际交流、灵活变通、独立解决问题、主观意识.你才可以达到一般程序猿到达不了的高度.

高工资是需要不断学习的,而不是空口白话就有的高工资

职业方向

  • 安卓应用开发 Android
    • Java SE
    • Kotlin
  • 苹果应用开发 iOS
    • Objective-C
    • Swift
  • 电脑端应用开发 & 硬件开发
    • C
    • C++
    • C#
    • VB
  • UI设计师
    • Photoshop
    • Sketch
  • 前端网页开发 & 小程序开发 Front-End
    • HTML5 +CSS3
    • JavaScript
    • Vue.js | React.js | Angular.js
  • 后端开发工程师
    • PHP
    • Java
    • Python
    • Bash
    • Shell
  • 运维工程师
    • Bash
    • Shell
    • Python
  • 应用架构师 & 产品架构师
  • 音视频开发
    • FFmpeg
    • OpenCV
  • 区块链
  • 大数据
  • 人工智能
  • 技术经理 & 产品经理
  • SDK开发工程师
  • 其他语言
    • GO语言
    • Ruby语言
    • Swift语言
    • .Net语言
    • Lua语言
    • Kotlin语言
    • TypeScript语言

职业历史

  • 2015年3月-2016年6月 全国各地培训机构集中培训iOS开发工程师,导致iOS行业就业苦难。 2017年3月 全国各地培训机构全部取消了对iOS开发的培训,iOS行业回暖。
  • 2016年6月-2017年8月 全国各地集中培训H5前端开发工程师,该行业受到些许影响,但是因为小程序和公众号的兴起,使得H5承受住了这次考验,同年,iOS和安卓开发被培训机构合并为"大前端"课程
  • 2016年11月 大数据行业新兴,但至今未火的原因是师资力量和岗位需求.可能是培训出来的不能达到企业要求,或是企业大部分选择校内直招。
  • 2017年6月 AR、VR行业兴起。直播行业兴起。小视频兴起。故音视频开发人员需求大增。
  • 2017年 人工智能和区块链兴起,但对数学要求比较高,企业招聘大多走校内招聘,要求研究生学历。
  • 其他未提及语言,均为成熟的语言,各个语言领域都有同一个情况:初级API工程师过多,有**有技术的工程师很少,高级工程师紧缺,所以你还在等什么,你只需要稍微努力一点,就可以比很多人优秀。

开发工具编辑器

  • Sublime Text 3
  • VS Code
  • Web Strom
  • IDEA
  • Atom
  • Vim
  • Emacs

概念向

学习态度

如果只是单纯的喊让你去好好学习,认真刻苦的学,一定没有效果,所以我打算晓之以理,动之以情。

可能在学校,你无法体会到一分耕耘一分收获的感觉,你认为那永远是别人的事,那些优秀的人,现在正过着自己想要的生活,可你有没有想过,自己去争取自己想要的生活。说到这里,又有些像鸡汤了,我也听抵制喊口号不做事的人。

我希望你可以行动起来,而不是原地踏步,谁体面的生活背后没有艰辛的努力呢,他人的艰辛你是看不到的。为什么说到这里你没有感触,因为你就没有正经的努力过。

说一下我自己吧,努力前,我过着悠闲的都市生活,公司和家两点一线,3个月看50页书。业务逻辑都能实现,没必要提升自己,但这就好比温水煮青蛙,不进则退。同时也因为身体原因,被迫辞职回家了。

在找到学习方法以后,我每天都充斥在学习当中,当然开始的时候我一周也会玩几次游戏,但在几次学习方法改进之后,游戏这个东西几乎是没碰过了。

还记的高中时,每天都埋在题海的日子吗?你还能想当初一样努力吗?在经过这几年的大学生活洗礼之后.是否还能想当初一样为了自己想上的大学一样,为了自己的生活再奋斗一次?

鸡汤到此为止,当你真正决定踏入程序员这个行业后,或是看到我为你推荐的学习路线图,你就会发现,当你仔细规划以后,你的时间是不够用的。请你记住,在你真正成为一个能独立工作的程序员之前,你学习阶段这段时光是最珍贵的,你如果抽出时间去打游戏,你将来会后悔的。你会发现当工作的重负和产品经理无理的需求充斥了你的生活以后,你根本抽不出时间去学习提升自己。

当看了我的学习路线图后,不要惊讶有那么多书,有那么多知识点,我个人已经实际践行了,下面就需要你来证明比我优秀,比我更适合当程序员。

最后一点给所有转业和非科班出身的人说:我们已经在学历和基础上差了那些科班出身的大学生很多了,尽管他们很多都是混日子的,但如何超越他们成为更出色的程序员,非努力和认真缺一不可,如果你在这个时候还心想着规划如何娱乐和游戏,那么你注定要被淘汰。


学习方法

学习力

学习力不同于学习能力,而是将知识资源转换为知识储备的能力,你看了多少书、文章,这是你的知识总量(阅读量),但不是你拥有的.你能够讲出来的知识,就是你所拥有的.


适度学习法

学习一定要找到难度适中,需要一定时间学习才能理解的知识.而且以后能用的上. 从遇到的问题出发,从能实践的领域出发去找适合的认知材料。 不要一上来就阅读数据结构、算法导论这种圣经类的书籍,而是一步一步来.


快速学习法

当我遇到一个自己不会的知识点时,我会进行百度,进行泛读,充分结合各个大神的文章,进行理解,重点是自己个人的理解.做笔记.辩证的看待每个人的文章,然后提炼到自己的笔记里.

遇到难点时,我会询问列表里的大神,是否在工作中也是这个做法.得到答案. 整理以后,可以用自己的话描述出这些知识点. 在讲的过程中,就会发现自己的话有瑕疵,就会去寻找正确的说法,不断修正自己.


输出倒逼输入

如何提高巩固自己的实力,也是本人最喜欢的一个学习方法,在整理自己的笔记之后,尝试把自己的笔记转成文章输出出来,放在博客,简书或者CSDN等技术论坛上. 在输出的同时,在追求完美的同时,就会发现自己的不足,搜罗各种知识点,结合自己的理解.

最后变成自己的输出文章.这就是输出倒逼输入.完美的文章逼着自己学习更多的知识.


弹性时间学习法

我是一步步自学探路过来的,我很清楚你们所谓的自学的情况是什么,几点到几点看什么书,几点到几点看什么视频,从来没有按时完成,然后一拖就石沉大海了。

不要给自己的目标限制死时间,因为一件事可能会被耽误,那么接下来的目标都会耽误,而是要以完成目标、达到目的为中心进行学习。例如我这两天要看完一本书,那么这本书可能会有些难懂,我可能需要再多一天,那么我便三天去看完这本书,我的目的是看完这本书,而不是在有限的时间内,我的重心是学习这本书的知识。

在完成了某两天的目标以后,再完成下一个目标,因为你无法预估你是会提前完成你的目标,还是延后。

这就是弹性时间学习法,以完成目标为重心的学习方法


随机目标学习法

随机目标就是,不要只把学习的重点只放在一个范围内,而是要做好随时跳出去的准备,只有懂得多了,才能更容易理解后面的知识。简单来说,每本书都不可能面面俱到,他不可能把一个业务逻辑所涉及的方方面面都给你讲一遍,有时候需要你自己去延伸,如果你不延伸,你又无法读懂后面的知识。

例如学习HTML和CSS的过程中,可能会涉及到Cookie和Session,那么这两个东西又属于HTTP协议,如果这个时候,你不去延伸一下什么是HTTP协议的话,后面的内容就无法融会贯通。

学习编程语言不是为了看书的数量,刷视频刷代码的次数,而是在于连贯性,越能融会贯通你学习编程语言的速度就越快。


沉浸式学习法

沉浸式学习法,毫无疑问,就是没有任何干扰。这里指的不是外界干扰,就拿我来说,我可以在KFC非常吵闹的地方看书敲代码。却有时无法在家中静下心来想事情。

所谓的沉浸,便是把自己沉浸在学习中,远离游戏,远离来自自身的一切干扰,例如聊天软件非必要不开,例如游戏该戒就戒,现在的努力和刻苦是为了以后更好地生活和打游戏,别因为现在的一时痛快,浪费了整个人生。


快捷键&笔记

那么高效的开发,为什么推荐Mac呢,因为快捷键太方便了,我会将常用的终端,文本编辑器设置快捷键,快速调用. 关于笔记,我本人会开启三个笔记窗口,使用的是Omni outliner.

  1. 自学笔记,该笔记针对并记录在书中的问题,以及书中重点.
  2. 视频笔记+学习日志,该笔记针对每天的学习中遇到的问题,以及在各个视频当中汲取的知识点的笔记.
  3. 输出笔记,例如:全栈工程师开发入门笔记,该笔记按照文章输出规范整理,每一个知识点,都可以成为一篇文章输出,不整理好不写入笔记,这就是我的财富.一定要漂漂亮亮的.

压力学习法

说一个在高质量群听到的把,我97年在群里算年龄小吧,但是当我得知比我小6个月,已经在16年拿到了16K 15薪的时候,那个压力,虽然我不喜欢攀比,但当你知道,很多人都比你强的时候,你自己就会很冷静,时刻明白自己还要努力很多.就不会把时间放在娱乐上.

就是压力,让我现在可以把一整天的精力都放在学习上,而不是打游戏,看电影,环境很重要.


学习途径

规划了个人目标以后,我们可以开始程序员的学习了.那么怎么进行学习呢,我是一个小白,我怎么知道该学习什么呢.找个人带带吗?

自学:

自学往往需要一个良好的学习环境,以及高效的学习方法,往往需要大量的时间成本,大量时间成本最适合大三大四的学生,在最后的两年进行自学,完全可以达到毕业后寻找工作的程度.

但是你要做到不被寝室的人干扰哦. 自学大概需要2年的时间成本,社会人士0基础可能需要更长.请慎重考虑

找人带:

相对社会转业人士,往往迫切的需要投入程序员行业开始赚钱.那么怎么办呢.这时候就体现你的人脉了.

首先寻找自己人脉中的程序员,看看有没有更好的推荐以及实习机会.找到人带,往往是最好的途径,可由于目前互联网经济快速发展,程序员并没有空带实习.大公司都喜欢培养985 211的迎接毕业生.

最快的方法是快速入门一门语言,然后找一个实习工作,看看人脉当中有没有这个机会. 如果没有,而且又想转行的,只能考虑下面这个了.

培训:

首先说明一下,我并不推荐培训,为什么这么说呢.

个人看法:很多人都觉培训机构坑,是因为培训机构根本不会看你适不适合程序员这个行业,就会把你拉去学习,有些人对计算机一窍不通,听说高工资,被拉过去以后交了钱也学不会,这就是培训机构被骂的原因.培训机构只想挣钱,并没有在人上面进行把关.

如果你觉得自己的确适合程序员这个行业,而且还有着刻苦学习,克服困难的毅力,那我只能勉强同意你来培训机构进行学习.

如果没有,你还是选择别的行业吧,程序员真的不是随便培训一下,你就很厉害了.

在培训机构,还有一个重点就是,你不能被老师灌输思维,一定一定一定要有自己的理解和体会,不然出来也是废物.

培训机构的学习氛围还是不错的,大家都是交钱过来学习的,而不会在那里玩游戏.玩游戏注定被淘汰. 培训机构也有好坏,这里小提几个个人认为不错的:黑马,小码哥,老男孩,兄弟连等.其他那几个知名,耳熟能详的不推荐,你懂我意思吧.


学习动力

学习动力这里不多说了,如果你觉得你学习动力不够,觉得需要和一个人比着学习,那就请毫不吝啬的加我好友吧。

我目前日常基本都在看书,研究前端开发和Node后台开发,隔几天就会更新朋友圈.


线下交流

「编程微刊」是一个专门为IT程序员提供实时资讯的技术分享类公众号。其作者祈澈姑娘是一名前端开发妹纸,会编程,会摄影,爱好写作和厨艺。

祈澈姑娘现常驻于简书,有着5万+粉丝,连载的「前端技术」知识和实践代码分享,「从零开发小程序」专题,偶尔还会更新随笔,欢迎大家多多关注。

这个是我个人公众号,公众号回复'书单',即可获得本人收藏的所有技术书籍,技术书籍共享仅供交流学习使用。