自从我12岁的时候,发现Microsoft Word中的“另存为Web页面”选项后,我就开始自学Web开发。我先学的是HTML,接着是CSS和JavaScript,然后是一些PHP和Rails的皮毛。 (近段时间,我投入了Meteor的怀抱。)
我也考虑过接受正式和系统的教育,但是,最后我发现:
- 费用太高。
- 我有课堂环境恐惧症。
- 已经学了不少,没必要学重复的东西。
自学的过程实际上并不轻松。我不但需要学习如何编写代码,还得探索学习的方法——学习如何去学习,这也是我今天要讨论的主题。
下面是我自学Web开发的五个步骤。
1.选择你感兴趣的Web开发领域。
光靠看书和看视频教程是成不了Web开发人员的。 Web开发是一个很大的领域,如果你想一下子掌握各个方面,只会让你精疲力尽,失去信心,从而半途而废。
在你掌握了这个知识领域之后,再去学习其他领域的就会简单得多——这是一个真理,你毋庸置疑。
不过,在你掌握了HTML和CSS之后,想要学什么就看你的兴趣了。也许你觉得Rails无所不在,很有用处,也许你认为JavaScript框架有看涨的趋势。就像我现在之所以学习Meteor,是因为我喜欢它的实时功能。理由,其实无所谓。总之一句话,兴趣是最好的老师,它也是保持学习积极性的唯一途径。
当然如果你感觉没什么特别让你感兴趣的,那么不妨去学一些相对比较普及的技术,如JavaScript和PHP。
2.请无视大多数资深Web开发人员的“指导”。
资深Web开发人员通常会提供一些善意的建议,但是对于初学者而言,却是完全不切实际的。这是因为:
- 你是初学者,而他们不是。
- 他们默认为你已经掌握了足够多的基础知识。
- 重点放在了一些你可能永远不会遇到的方向上。 (例如,扩展到数百万用户时会出现什么样的问题。)
就像这篇文章请不要对程序员初学者说这些话中的观点,没错,这些经验丰富的Web开发人员固然给出的是非常棒的建议,但是你也得问问自己:是不是真的实用,是不是真的适合你?
3.给自己制定一个明确又可实现的项目。
在学习了Web开发相关的基础知识后,不妨试试离开书本和教程来尝试自己创建一些东西。这么做的好处是:
- 获取亲手创建的快感。
- 发现知识的薄弱点。
- 学习如何真正解决问题。
你想要创建什么都可以,唯一要做到的是要确保项目越小越好。
此外,还应该对项目目标有一个定义,即,项目到了何种程度就算是done了。(并不需要十全十美,因为没有发布的需要。)
选择的web开发领域不同,制定的项目也会不尽相同,不过下面这些项目可供参考:
- 待办事项列表app。
- 私人博客工具。
- 运动锻炼跟踪工具。
基本上,只要项目的主要目的是跟踪一些基本数据,那对初学者而言就是测试知识的好方法。
4.投入特定的日常练习量。
很多初学者在学习Web开发时,进步大则干劲足,进步慢则往往会选择放弃。
这通常是因为初学者将“进步”当成了目标,依赖于进步得到的满足感来支持自己继续学习。然而,进步实际上是不可预测的。量变才能达到质变,掌握基本知识,不断的学习,哪怕是没有显著的进步,其实你也已经提升了自己。
我的建议是使用另一种方法:
每天投入一定量的学习和练习web开发的时间。至少二十分钟,但是也没有强制的限制或要求。你完全可以根据自己的需要合理地规划每天的时间。
5.大量的练习材料。
练习得多了,自然就能掌握技能——相信很多人在学习Web开发初始就听到过这样的说法和观点。“如果你想成为开发人员的话,你必须写大量的代码,”但是,你不知道的是,这里指的代码并不一定要是你自己写出来的。
所以,你必须好好掌握这些练习材料,吃透它们——细细琢磨你借鉴的每一行代码的目的——即使你是在“死记硬背”,你依然是在学习。
很多人不知道的是,语法并非是Web开发的难点。虽然它是初学者的绊脚石,但是以后,棘手的内容会变成如何思考如何解决问题。特别具有讽刺意味的是,初学者想出的解决方案往往比专业人士的更为复杂。
基于这方面的原因,涉猎大量的练习材料的好处有:
- 你可以看到不同的开发人员如何解决不同的问题。
- 你可以看到不同的开发人员如何解决类似的问题。
这样一来,当你以后做自己的项目时,就可以:
- 确定实际问题的核心。
- 找到解决问题的关键。
你可能已经想不起任何具体可借鉴的解决方案,但是这并不重要。大部分问题其实你已经以某种形式解决过了,至于语法和细节,那都不是个事儿。
结论
虽然我只是在大方向上分享了我的自学经验,但是,我多么希望当初我自学的时候,能有人指点我行进的方向。
如果你已经开始了你的自学之旅,欢迎分享你的历程,以及,Good luck!
- 本文固定链接: https://www.zxbcw.cn/post/3107/
- 转载请注明:必须在正文中标注并保留原文链接
- QQ群: PHP高手阵营官方总群(344148542)
- QQ群: Yii2.0开发(304864863)