如何轻松提高编程水平
简介
简介
这篇文章旨在帮助那些像我一样,找不到时间或耐心练习 WebDev 相关技能的人。时间在任何事情上都是宝贵的,我讨厌一遍又一遍地重新学习一些东西。
我想声明的是,本教程并非旨在让你记住所有内容。尝试记住每个 JavaScript 数组方法,或者一些你永远不会用到的特定数据结构,这不值得任何人浪费时间。本教程旨在学习如何编程以及如何学习新技能。
另外,如果你不想花时间阅读这篇文章,你可以在最后找到 TLDR
重复
重复可能是我用过的巩固知识的最佳方法之一。方法是先用一周的时间练习一个问题。例如,如果你周一开始练习,那么周三、周五和周日就应该再练习一次。每隔一天练习一次有助于训练你的大脑,让你每次都能更好地记住信息。
第一周之后,你应该逐渐延长学习时间。比如一整周,几周,甚至一个月。前提是,你没有在任何项目或工作中用到这个新概念。
回顾一下能帮你真正巩固知识。你甚至可能会发现之前练习中忽略的一些内容。一定要在完全忘记之前再回顾一下!
我使用这些方法来练习递归、Async/Await、Redux 和状态机等概念。
了解你的学习方式
每个人都有自己喜欢/最佳的学习新事物的方法。这些方法包括阅读、观看视频、积极练习,或者这些方法的组合。现在,你应该知道哪些方法可以帮助你巩固知识。
就我个人而言,我更喜欢亲自动手的方法。我会尝试自己实现一个新概念,遇到瓶颈时,或者成功后再去查阅相关文章/教程。我发现这种方法能让我更好地理解为什么/如何做一件事。
编码挑战
市面上有很多网站致力于提供各种语言的编程挑战!这些网站非常适合练习/完善你的语言知识。然而,应对这些挑战的方法有对有错。
这些挑战应该只用于练习你的语言知识,仅此而已。不仅如此,你应该只关注那些测试你不熟悉的概念,或者你想尝试以一种独特而非直接的方式解决问题的问题。如果你只解决你已经知道如何解决的挑战,你的水平就不会提高。
如果你刚开始学习一门新语言,我建议你以学习基础知识为主要目标。你应该熟悉字符串操作、数组、类、哈希(对象)、if 语句和循环等概念。
掌握基础知识后,你应该花时间学习特定语言的概念,或者尝试用一种独特的方法解决问题。例如,尝试使用递归而不是 if 语句,或者尝试使用哈希而不是数组来保存数据等等。
我确实需要说明的是,用独特的解决方案来应对挑战确实是一种很好的做法,但除非合理,否则不应该使用复杂的解决方案。你可以用独特的方法解决问题,但一年后你还能理解那句话吗?文档真的可以帮助解释你的思维模式。
找到一个编程挑战网站应该不难,而且网上有很多,你应该能找到你喜欢的。我以前用过codeWars和hackerRank一段时间。不得不说,我找到了一个我爱上的挑战网站,codingame。它的挑战都以电子游戏为主题。他们甚至把挑战游戏化了,推出了一款匹配游戏,让你和其他人一起解决问题。这真的很有趣!
项目
虽然编码挑战是提高语言水平的好方法,但项目才是提升开发水平的途径。项目不仅挑战你构建一些东西,还挑战你构建一个有文档、经过测试、可维护的东西等等。当你需要构建一个网站或一个 API 时,操作对象只能帮你到这一步。
我认为,你的大部分练习时间应该花在构建项目上。在这里,你可以真正地整合所有知识,并培养出适合你职业生涯的技能。在任何项目中,你应该熟悉的主题包括测试、状态管理、文件结构、文档和架构。
还在为构建什么而苦恼吗?不妨尝试重新构建你常用的应用程序或网站。想想现在还没有的东西,自己动手做吧!我最大的心头好项目是为不断增长的万智牌收藏做一个收藏管理器。
感到不舒服
这或许是我想强调的最重要的一点。如果你总是用一成不变的方式构建项目或解决问题,那么你根本学不到任何新东西。你用过 Redux 进行状态管理吗?如果你用的是 React,为什么不试试状态机或 Context 呢?
你很快就会意识到,你遇到的所有问题都没有单一的解决方案。每个工具/框架都有其优缺点。当你正确使用工具时,了解多种解决问题的方法确实能让你的生活更轻松。
例如,使用 Rails 构建一个包含少量自定义功能的基本 CRUD 功能的 API 就有点过了。选择 Node + Express 之类的方案会更好吗?
TLDR
-
不要只是保持知识,还要积极努力去提高它。
-
你不必完美。(但这也不意味着你可以写出糟糕的代码。)
-
做一些你不熟悉的事情。
-
用不熟悉的方法解决问题。(用循环?为什么不用递归?)
-
如果你刚刚擦除了内存,你能理解这段代码吗?(注释所有内容)