本文转载自公众号“读芯术”(ID:AI_Discovery)
为什么有的软件开发人员年薪能达到10万-20万美元以上,一些收入最高的JavaScript开发人员年收入接近50万美元?为什么有些几乎没有编码背景的人,学习新概念的速度要比其他具有10年以上经验的人快10倍以上?他们是怎么做到的?
掌握这些秘诀,学习如同坐火箭,你也可以实现。
1. 编码
学习编码最好方法就是编码本身。直接进入开发环境,并编写一些代码。如果你正在读一本书或文章,遇到了一个代码示例,直接在代码编辑器中将其键入并尝试使其正常运行。
运行成功之后,就可以在此基础上随意发挥。改变一切,尝试其他应用方式,或使用相同技术执行其他操作,关键是要玩代码。
书本中的知识只会留在空中,最好的学习将来自实践。
2. 驱动力
做好某事的最佳方法就是充分地实践。你需要有动力并决心学习,激发动力的一种方法是让自己有时间和耐心来掌握一些东西。
无需马上成为专家。就像学习乐器一样,你不可能坐在钢琴旁就马上成为下一个德彪西,但你可以在初次练习时掌握C大调音阶。
同样,你不会坐下来立即开发出下一个Instagram,TikTok或Fortnite。
在开始学习每节小课程时,坚信自己一定能掌握并精通今天的内容。找到自己的目标并坚持下去,朝着这个目标不断前进。
3. 专注
我见过很多开发人员试图一次掌握所有内容,却一无所获。他们的进度令人难以置信,缓慢如冰川爬行,而不是百米冲刺。
如果想快速学习一些东西,除了基本知识外,更重要的是集中注意力。选择一种语言(最好以JavaScript开头),一种框架(最好以React开头),一本书,一门课程,一个主题,等等。无论你选择什么,专注于它,直到对它有足够的掌握为止,再去学习其他的东西。
在专心学习一种语言之前,至少要一年时间,然后再发展另一种语言。几十年前,软件开发人员在其职业生涯中实际上需要学习多种语言,才能在该领域保持竞争力。但如今,一种语言(JavaScript)可以助你度过大部分职业生涯。虽然学习多种语言确实可以提供看待事物的不同方式。
专长的技能就是最有价值的技能。如果你致力于成为通才,从一种语言到另一种语言,那么你很难要求自己的精通程度。
4. 框架和语言的价值原则
框架和API的变化很快。软件设计原则却是永恒的。要学习可以跨越语言障碍的原则。
例如:
- “需求的微小变化应该只会导致结果的微小变化。” (摘自《软件开发实用手册》)
- “过早的优化是万恶之源。” ——唐纳德·努斯(Donald Knuth)
- “你不需要它(YAGNI)” —不要为不需要的东西编写代码。
- 只做一件事情(DOT)——简化自道格·麦克罗伊的“只做一件事,并把它做好(DOTADIW)”,即一个函数应该完成一项工作。它不应获取数据、处理数据并绘制到屏幕上。它应该只获取数据,或仅处理数据,或仅将数据绘制到屏幕上。
- “编写接口的程序,而不是继承的程序。” —《设计模式》
- “优先考虑对象组成而不是类继承。” —《设计模式》
- 避免共享的可变状态。
5. 阅读
尽管在线上有很多不错的YouTube视频和课程,但是书籍是软件开发文化和知识的标准载体。以下几本书尤其有价值:
- 雄辩的JavaScript(Eloquent JavaScript)
- 编写软件(Composing Software)
- 代码整洁之道(Clean Code: A Handbook for Agile Software Craftsmanship)
- 测试驱动开发(Test Driven Development By Example)
- 代码大全(第2版)(Code Complete: 2nd Edition)
- 重构:改进现有代码的设计(第2版)(Refactoring: Improving the Design of Existing Code 2nd Edition)
6. 回顾
温故很重要,若想将一个新概念从听起来很熟悉变为长期记忆,必须时常回顾。很多人犯的错误是,他们很快阅读了一本书或一篇博客文章,然后在第二天迅速忘记了阅读的内容。
如果阅读了一些想记住的有趣的东西,第二天回顾一下,考考自己然后在第二天、第三天再次测试。连续进行4天,将学习的内容转换为长期记忆的概率就大大增加了。
7. 混合媒介
有些人通过阅读来学习的效果最好,而其他人则是通过观看视频。但若将它们组合在一起:先观看视频,然后阅读一些内容,最后通过一些交互式代码课程进行练习,那么可以从多个角度和示例中重复这些概念。你自然会不断地复习,在此过程中还可以进行一些练习。
图源:unsplash
8. 共享,记录和指导
尼克尔博士曾经说,任何无法向八岁的孩子解释自己在做什么的科学家都是骗子。
学习如何编码只是其中的一部分。当与其他开发人员合作时,代码将被其他人检查,有时他们会质疑你的选择。在尝试解释时,可能会发现对自己的立场不够了解。在构建项目时,练习向同事和其他协作者解释,记录和讲授概念。
9. 构建项目
学会概念并不意味着知道如何在实际应用中使用它。经过数周的编码练习后,就该构建自己的东西了。你可以尝试操作TheRejection App,而不是无处不在的todo应用程序。
10. 练习,练习,再练习!
任何学习过一项技能的人都知道,练习是关键。但是要想变得更好,不能仅练习已经知道的概念。还需要挑战自我,并超越熟悉的领域。如果不断地在自己现有技能的边界进行练习,就能够脱颖而出。
图源:unsplash
软件开发是一项很有价值的工作,只要不断追求卓越,高薪离你并不遥远。