六星云课堂:零基础转行IT,如何学好编程语言?

世界著名的记忆专家和大脑教练吉姆·奎克在《无限可能:快速唤醒你的学习脑》中讲到,“你能够控制它(动力),并且可以遵循正确的方法不断地创造它”,他在书中给出了公式:内在动力=目的×精力×S3。

S3指的做事三个步骤,顿悟—环境—微小的改变。从这个公式中,我们能够知道要从哪几个方面入手,来培养自己工作和学习的动力。
首先给自己设定一个相对明确的中短期的目标
这一点十分重要。目标会为我们的行动提供导向,也让我们的思路更加清晰。
我们可以根据目标推导出所需要做的事情,来确保所做的每一分努力都有意义。每走一步,都可以让自己意识到距离目标更加接近,这样成就感就会被持续不断地反馈给我们,无形中就会产生坚持下去的动力。
抓紧行动
选定目标后,就应当即刻开始行动,不要有过多迟疑和思考。
很多时候,完美主义和拖延都是让人丧失动力的元凶,我们会惧怕过程中出现错误,最终没有好结果,于是目标设立之初的动力就在恐惧和拖延中被消磨殆尽。
所以,应当趁着我们的热情还未消散便立刻开始,将思考留在过程中,在行动中不断修正。
做好精力管理
每个人的精力都是有限的。如果想做的事情太多,就会分散精力,从而产生疲劳感。而且这样一来,每一件事的效率都会降低,以至于回馈给我们的成就感也会降低,动力自然更低,从而进入恶性循环。
所以我们要做的将精力集中,灌注到一件事情上。就像李小龙曾说过:“会一千种腿法的人不可怕,可怕的是能将一种腿法练一千次的人。”无论什么时候做好一件事都比半途而废地做十件事更有价值。
另外,也需要做到张弛有度,不要最开始凭借势头埋头苦干,到最后却因为疲惫而产生怠惰。适度休息,可以更有效率,也让动力更加持久。
寻找外在动力,和优秀的人同频
人类具有社会属性,在人群中反而可以更好地发现自我,也更容易被外界的人所激起斗志。高瓴资本的张磊曾说过:“与谁同行,比要去的远方更重要。”
加入一个优秀的圈子,与优秀的人同频,借此来帮助我们提高认知,提升眼界和水平,从而快速成长,在这过程中也会为我们提供源源不断的动力。

那对于程序员来说,我们应该具体学习哪些呢?
1.我们学习编程的目的
一开始,很多小伙伴学习编程的目的很简单。程序员工资高福利好待遇好!!随后一大批小伙伴前来学习编程,不管是什么专业,无论有没有基础,都开始加入学习编程的行列。这种无脑操作的结果就是小伙伴的学习效率低下。即使他们找到了一份编程工作,他们也应该因为自己的能力问题而离开这份工作。所以大家不要盲目跟风。
在学习之前,你必须首先确定你的目标是什么,以及你为什么要学习编程。您对编程感兴趣或有能力自己做。确定你要发展的领域,并有针对性地学习相关领域知识。学习相关的编程思想。否则,你最终会因为编程技能不足而失去学习编程的兴趣,浪费你的时间。
2.有兴趣学习编程
我们都知道,无论我们学什么,或者你突然想学什么、做什么,都是因为你对这件事或与这件事有关的事情有一定的兴趣,所以你就有了一定的动力。会坚持下去。而一旦你感兴趣的兴奋消失了,你就会对你正在做的事情保持沉默,直到令人讨厌,这就是我们所说的“三分钟热度”。
对于编程,我们需要的是我们对其他事物的兴趣所需要的持久性。因此,编程不是一朝一夕就能实现的。学了hello world就不用再写游戏了,所以我们一开始就要说清楚。你想学编程吗?问问你的心,是不是三分钟兴趣引起的热情。
3.选择适合你的语言和学习方式
学习编程首先要确定要学习哪种编程语言,以及如何通过培训课程、在线课程或书籍来学习该语言。通过哪个渠道来学习,是每个小伙伴都需要面对的选择。至于如何选择语言上手,大多选择web前端上手。
HTML、CSS、JavaScript 三大件,完全掌握。不懂得就直接查 MDN。HTML重点掌握语义化。区分块级和内联标签。其他查文档就好了。还有就是定义 head 里面一些meta 了解下。
CSS。重点看盒子模型,定位,层级,过渡,动画和 transform。知道原理和规则。大部分工作都是照着设计稿化。掌握上面几个99%还原也不难。接下来重点学习几种常见的布局。完了之后去搞flex。最后搞下sass、less。基本就差不多了。
JavaScript。重点来了,红宝书看一遍掌握基础,进阶去看《你不知道的 JavaScript》。就这两套足够了,别搞那么多。每个知识点搞懂。ES6基本没啥问题。

十多年前,那时候的我们苦于资料太少,不知道学什么;十多年后,这时候的我们苦于资料太多,不知道学什么。
1. 基础是程序员的内功
提到程序员的基础,不外乎是操作系统、编译原理、数据结构、算法这些课程,很多程序员会认为这些课程平时工作也用不上,还需要学习么?
负责任地说,这些基础课程学习的好坏,是程序员能力差异的一个重要分水岭;如果你觉得单纯地看书比较枯燥,可以试试在 LeetCode 上刷刷题。
2. 应用提升类
这里建议大家还是从本职工作出发,先学习本领域的应用提高类技术、框架;比如我是 Java 程序员,除了学习 Java 本身的语言特性和新版本特性之外,我还可以学习现在比较流行的 Spring、Spring boot,了解 DevOps(Docker、Jenkins),除了学好关系型数据库之外,还可以看看 Redis、ES 这些非关系型数据库,接触一下分布式架构、微服务,这里还需要学习消息队列、负载均衡、分库分表等等等等了...如果你心有余力,可以再学习一门脚本语言。
如果你致力于成为一个全栈工程师,还需要了解前端的知识;这里我就不能给你们什么建议了,我个人的精力有限,已经好久没有接触过前端的内容了。
总之,一定把有限的精力投入到值得投入的地方。
3. 技术不能脱离业务场景
程序开发的本质是解决业务问题,所以程序员一定要养成业务思维的面试,在敲代码之前,一定要对项目本身的业务逻辑有一个全面的了解:系统是做什么用的?使用者是谁?上下游系统都有哪些?自己的项目在整个业务流程中的位置和作用是什么?等等等等...
4. 掌握第一手资料离不开英语
建议大家在学习的时候,最好是查看最原始的资料,而不是【只看】被人消化理解过的“二手资料”;比如你要学习Spring Boot的话,最好的资料就是官网的文档,其次才是买一本中文版Spring Boot的书
但是当你不断地找到“第一手资料”的时候,会发现大部分内容都是英文的,所以“查阅英文文档”是程序员的必修课。
以上就是本次分享的全部内容,想学习更多编程技巧,欢迎持续关注六星云课堂!