学习编程的过程中可能会遇到“25”个“坑”,不仅初学者可能中招,专业人士有时也难以逃脱,我自己也毫不例外。
0. 忽视了编程终究是以人为本的。是的,机器的确会执行你的代码,但编程是为人们解决问题的,将他们的需求转换为由其他人(或你自己线下)读取,维护和修改的代码。
1. 未能花充足的时间练习编程。 根据工作或日程安排,你可能会花费大量时间在与编程相关的任务上,但实际上这些并非编程本身。
2. 停留在你正在学习的某个技术的表面。 沾沾自喜于自己掌握了足够完成任务的基础知识,对技术的了解却只流于表面,未有触及核心内容。
3. 在编程学习中挑挑拣拣,无法持之以恒。一开始学习rails,半道儿你发现phoenix也不错,哦,学点javascript吧,这样就能用node.js 了......从tj转到go然后坚持了一阵子......说起来rust好不好用来着?
很快,一周内你的浏览历史净是这些东西,“凯发游戏入口官网者还是数据科学家”,“clojure死了吗?”,“clojure 对比 elixir”,“crystal足够成熟吗”,“golang有什么好的架构”,“phoenix 对比 buffalo”,以及“kotlin ”与网页开发。
4. 在线阅读书籍和观看课程,却不练习相应的技能,因此很快就会忘记它们。
5. 不关心基础知识。如果没有对象关系映射(o/r mapping)的辅助,连最基本的sql连接都搞不定。
6. 缺乏足够的耐心或自律来完成学习过程和掌握任何技术所需的步骤。 (码农翻身老刘:《学习还是要死磕啊》)
7. 疲于应付日常编程中的各种问题,缺乏继续学习的长远规划安排。
8. 浪费太多时间在各种框架和库(如angular,react和vue)中进行选择,而不是仅仅认准一个,使用它,并且只有在你真正需要时才切换其他。 基本上讲,一心只想找到能一劳永逸的万能钥匙,而不愿意先充分利用手头资源。
9. 无法认识到现代编程需要多语言协作的性质。 在大多数领域,期望一种编程语言成为解决所有问题的灵丹妙药是荒诞不经的。 同样,过于执着把自己分类成x或y程序员,而不是"偏爱x或y语言的程序员"。
10. 害怕尝试新技术。不要只是阅读某些新兴技术(例如区块链或聊天机器人)相关的文章,而是自己动手打开虚拟机试用一下,即使它涉及到你不熟悉的编程语言或api(应用程序编程接口)。
11. 自己没有先行思考而后再进行搜索,谷歌上的确能找到办法,但是看到别人给出的办法之后又很懊恼,觉得自己应该能依靠自己的脑子想出来。
12. 学习时没有进行许多零碎练习和开展项目。
13. 因害怕被评判,而不敢与他人分享代码或让他人检查自己的代码。
14. 不向更有经验的开发人员寻求一对一辅导。
15. 期望在不切实际的时间内一次学习所有东西(例如,一个月内掌握ios开发)。
16. 对于事业心强的人而言,不去尝试那些貌似无利可图的有趣项目。
17. 因为害怕给人以愚蠢或菜鸟的印象(事实并非如此)而不去发问。
18. 如果在创建程序时只是将一些类库粘合在一起,而不是用更复杂的语言来写“高级”算法,就觉得自己不是真正的程序员。
19. 让习得最佳实践的欲望阻碍你掌握特定语言或技术的基础知识的能力。 例如,在开始创建项目之前,感觉自己需要了解有关设计模式的整本书或掌握tdd / bdd。
20. 完美主义。 让完美成为“足够好”的敌人。 从不交付任何东西,一直卡在最后阶段。 (但保持平衡很重要,所以不要为了交付而交付可怕的破碎软件。)
21. 与前一点相关,忽略了编程是循序渐进的:应该先使其工作,然后再让其变快,再让代码简洁明了。期待从一开始就有一个绝佳的凯发游戏入口官网的解决方案是不可能的。
22. 觉得自己做的不够好,如果你不是传统观念中“程序员”的形象,那可能就有些不妙——因为如果没有与你形象类似(比如,女性,少数族裔等)的成功例子供你参考,你更倾向于觉得自己“不优秀”。这就解释了女性和少数族裔在科技界的重要性——他们为他人提供标杆,增加他们向上的信心和动力。
23. 编写代码并阅读书籍学习编程,但从不阅读他人的代码。open source为我们提供了一个惊人的资源,可以大大促进我们对编程和最佳实践的理解。
24. 未能接触到其他范例或领域。就因为你是网页开发人员,就不去了解其他类型的开发。就因为你知道面向对象的编程,就不去学习函数式编程。
25. 不教别人你学到的东西。没有什么能比向别人解释更能巩固自己所学。即使只是为了教学而学习也能提高你的学习能力。
这样你就了解了以上25个陷阱。哦,实际上是26个,程序员都习惯从0开始的。
结论
这一切都是想说:
你已经够好了。你绝对可以做到。要做的就是当心这些陷阱,制定计划,投入其中,然后一步步来。
在学习编程(或提高当前水平)时,我推荐使用编码/阅读/教学法。 也可以在学习中对一个实际的项目和其他小练习进行编码。 然后阅读书籍以及其他人的代码。 最后,在线或面对面教授他人你学到的东西。你不需要成为专家就可以做到这些了。