10个10倍提高编程技术的有用技巧

> 云栖号资讯:【[点击检查更多作业资讯](https://yqh.aliyun.com/?cate=%E8%B5%84%E8%AE%AF)】
> 在这儿您能够找到不同作业的第一手的上云资讯,还在等什么,快来!
![4C008BA0_F767_4c7a_87E3_2ED233751BC1](https://yqfile.alicdn.com/e07bd0c8488ffed7428056cedb182e17cd10bb31.png)
软件开发是一项报答颇丰、价值极高的作业技能。不管你日子在国际何处,软件开发都很简单进行长途作业,并且只需你满足优异,你就有资历取得一份年薪从 10 万到 20 多万美元不等的高薪作业。
https://medium.com/javascript-scene/what-to-pay-javascript-developers-in-2020-2292eb346f3b
一些有尖端收入的 JavaScript 开发人员年收入乃至挨近 50 万美元。但要想有资历获取如此丰盛的薪水,你必须在自己所从事的作业上做到无可挑剔的肯定优异。
即便你现已是一个专业的软件开发人员,你依然需求知道怎么学习编程。一旦挑选了软件开发这一作业,就注定挑选了一条终身学习的路途。
作为一名软件编程导师,我有时机一窥数百名软件开发人员的学习进程。最让我震动的是,有些人的学习速度竟然比其他人快那么多。一些只要很少或许没有编程布景的人,学习新概念的速度能够到达其他有 10 年以上编程经历的人的 10 倍以上。今日我要同享的隐秘是,你也能够到达这样的惊人学习速度。
这儿我会逐个提醒一些学习的隐秘,希望能助你一臂之力以骑上火箭的速度去把握软件开发这门手工。
**编 程**
学习编程的最好办法便是去着手编程。进入一个开发环境(例如:web 开发环境 CodeSandbox 和 JavaScript 编译环境 Babel),并编写一些代码。假如你正在阅览一本书或一篇博客文章,并且遇到了一个代码示例,请在代码编辑器(例如:Visual Studio Code 和 Quokka)中把这些代码输入进去,并测验让它们作业。一旦你让代码开端作业,就开端进一步耍弄这些代码吧。比方,能够改动其间一部分代码,也能够试着想想其他办法来使用这些代码,或许用相同的技能来做其他作业。所以请纵情地去享用耍弄代码的趣味吧。
例如:
- 星球大战游戏编程
https://studio.code.org/s/starwars/stage/1/puzzle/1
- Flexbox 塔防游戏
http://www.flexboxdefense.com/
- Codepip

Home


- Screeps
https://screeps.com/
照猫画虎给你带来的才智对错常有限的。最好的学习办法是 学以致用。
**动 力**
要想做好一件事,最好的办法便是着手去做。你需求有学习的动力和决计。取得动力的一个办法是给自己留够时刻和耐性去把握一些常识。你并不需求当即成为专家。这就像学习一种乐器。你不能盼望自己一坐到钢琴前就马上变成下一个德彪西,但你能够在第一次坐下来弹钢琴就把握 C 大调音阶。
相同地,你也不可能坐下来,当即用程序写出下一个 Instagram、抖音(TikTok)或要塞英豪(Fortnite)。
当你开端把握每一个小常识点时,你会意识到自己能够做到这部分了。这样继续下去你会做得很棒的。你能够开端看到你的方针开端逐渐完成,然后你会更有动力去寻求那个方针。
请坚持下去。
**专 注**
我看到过许多开发人员企图一次就把握一切的东西,可是往往却迅速地就得到了一事无成的成果。他们的前进慢得像是在冰川中困难苦楚的匍匐,而不像为了夺冠的奋力短跑冲刺。
假如你想快速学习某样东西,你就不能把你的注意力涣散到一切方面,而是将注意力聚集在最必要的当地。一开端请只挑选一种编程言语(例如 从 JavaScript 开端),一个结构(例如 从 React 开端),一本书,一门课程,一个主题,等等。不管你挑选什么,专心于一件事,直到你彻底把握了它,然后再转移到其他作业上。
我一向告知人们,在你开端学习另一门编程言语之前,至少要花一年的时刻彻底专心于一门编程言语。而几十年前,为了保持在业界的竞争力,一个典型的软件开发人员的确需求在他们的作业生涯中学习多种编程言语。
尽管学习一门以上的编程言语的确能够教会你用多种办法看待事物,乃至让你加深对自己首要编程言语的了解,但现在,一门单一的编程言语(JavaScript)就足以协助你度过作业生涯中的大部分年月。
来自招聘司理的主张:你所拿手的技能便是你最有价值的技能。假如你终身都致力于成为一个通才,不断地在不同的编程言语之间跳来转去,事实上你就人为地约束了自己技能通晓和收入添加的可能性。
**阅 读**
对软件开发人员最有用的许多常识都来源于书本。YouTube 上有许多优异的视频和课程,但书本依然是软件开发文明和常识的规范载体。我向你特别引荐以下价值极高的书本:
- JavaScript 编程精编(Eloquent JavaScript)
- 编写软件(免责声明:这是本文作者自己的作品。该书的印刷版别在 亚马逊上有出售。)
https://leanpub.com/composingsoftware
- 代码大全:第二版(Code Complete: 2nd Edition)
- 代码整齐之道(Clean Code: A Handbook for Agile Software Craftsmanship)
- 测验驱动开发(Test Driven Development By Example)
- 重构第二版(Refactoring: Improving the Design of Existing Code 2nd Edition)
**复 习**
假如你想把一个新概念从一个听起来很耳熟的主见变成自己的长时刻回忆,对一个主题进行温习将会让你收获颇丰。大多数学习者所犯的过错是,他们很快就读完了一本书或一篇博客文章,但往往第二天就迅速地忘记了他们从前读过的内容。假如你读了一些风趣的东西并且想把它们记住,请必须在第二天温习这些东西。针对这些常识进行自我调查。然后隔一天再次进行自我调查。再过一天,再调查。如此接连 4 天重复这样做,你把这次所学变成长时刻回忆的时机就能大大添加:
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5126970/
**归纳运用多种前言**
有些人经过阅览来学习的作用最好,而有些人经过看视频来学习的作用最好,可是假如你把这些不同的学习前言混在一重用——看视频,然后阅览,然后去依据一些交互式代码课程进行一番操练,你就能从多个视点和多个比如来加深这些概念。经过归纳运用多种学习前言,你自然而然地就完成了对常识的温习,并且在温习的进程中还能进行一些有用的操练。
**构建项目**
对一个概念的单纯学习并不意味着你就把握了怎么在实践的使用程序中使用该概念。一旦你对着操练题编写了几周的代码,这时你就该脱离书本构建一些自己的东西了。关于做什么需求给你出出主见吗?别去写一个我们早就耳熟能详的 todo 使用程序记载待办事项,主张能够测验着去完成一个“记载回绝”的使用程序(The Rejection APP):
https://github.com/learn-javascript-courses/rejection/
**注重准则胜过结构和编程言语**
结构和 API 都是改变很快的事物。但软件规划的根本准则却是经久不衰的。所以应该去学习那些跨过编程言语栅门的编程准则。
举一些比如:
- “一个需求上的小改变应该只会引发代码完成上的一个小改变。”(引自 《软件开发实用手册(A Practical Handbook for Software Development)》)
- 只做一件作业 (DOT)——从 Doug McIlroy 的“一次只做一件作业,把这件作业做好(DOTADIW)”中简化而来——一个函数应该只履行一个使命。因而,一个函数不应该既获取数据又处理数据,并制作到屏幕。这个函数应该只获取数据,或许只处理数据,或许只制作到屏幕。(所以,是时分把你的 React 组件拆分红更小的部分了!)
- “对接口编程,而不是对完成编程。” ——四人帮(Richard Helm、Ralph Johnson 和 John Vlissides),《规划形式》
- “优先挑选对象组合而不是类承继。”——四人帮,《规划形式》
- 要防止同享可变状况。
- “过早发作的优化是万恶之源。”~Donald Knuth
- “你并不需求它(YAGNI)”——请不要为实践上还不需求的东西去编写代码。
**同享、记载和辅导**
“Hoenikker 博士从前说过,任何一个科学家,假如不能向一个八岁的孩子解说清楚他在做什么,他 / 她便是个江湖骗子。~Kurt Vonnegut——《猫的摇篮》
学习怎么编码仅仅软件开发作业的一部分罢了。当你与其他开发人员协作时,你的代码会被其他人审理,他们有时会对你的挑选提出质疑。当你企图阐明自己的目的时,你可能会发现自己并没有透彻地了解一些内容来保卫自己的态度。所以,请操练在项目中向你的搭档和其他合作者解说、记载和教授这些概念。
**操练,操练,再操练!**
任何经过后天尽力学会一项技能的人都知道,实践出真知。但要想让技能得到进一步磨炼,你就不能仅仅对你现已熟知的概念进行操练。你还需求应战自己,逾越你所了解的范畴。假如你不断地在自己现在才能的边际进行尽力操练,你将会变得鹤立鸡群。
《巅峰:关于专业常识的新科学隐秘》(Peak: Secrets from the New Science of Expertise) 这本书里深入研究了故意操练这一活动,并为之供给了丰厚的见地,你能够将这些常识使用到日常日子中,然后更好地进行操练。我强烈引荐你去阅览这本书,这样你就能够让自己的操练时刻和副业项目变得更有成效。
在作者的个人网站上有许多关于 JavaScript 软件开发的课程。能够经过这些课程去学习专业开发人员所需求的概念,然后让自己作业生涯更上一层楼。
https://ericelliottjs.com/premium-content
** 作者介绍**
Eric Elliott 是 《编写软件》(Composting Software) 和 《JavaScript 使用程序规划》(Programming JavaScript Applications) 两本书的作者。他是 EricElliottJS.com 和 DevAnywhere 的联合创始人。他教授开发人员根本的软件开发技能。他为加密钱银项目打造开发团队和供给专业主张,并为 Adobe Systems、Zumba Fitness、《华尔街日报》、ESPN、BBC,以及包含 Usher、Frank Ocean、Metallica 等在内的尖端唱片艺术家供给软件方面的支撑。
> 【云栖号在线讲堂】每天都有产品技能专家同享!
> 课程地址:https://yqh.aliyun.com/zhibo
> 当即参加社群,与专家面对面,及时了解课程最新动态!
> 【云栖号在线讲堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时刻:2020-05-17
本文作者:Eric Elliott
本文来自:“[InfoQ 微信大众号](https://mp.weixin.qq.com/s/f9Izp4J2W1WoSRaqOtTwCg)”,了解相关信息能够重视“[InfoQ](https://mp.weixin.qq.com/s/f9Izp4J2W1WoSRaqOtTwCg)”