0.忽视了编程终究是以人为本的。是的,机器的确会执行代码,但编程是为人们解决问题的,将他们的需求转换为由其他人读取、维护和修改的代码。
1 .未能花充足的时间练习编程。根据工作或日程安排,可能会花费大量时间在与编程相关的任务上,但实际上这些并非编程本身。
2.停留在正在学习的某个技术的表面。沾沾自喜于自己掌握了足够完成任务的基础知识,对技术的了解却只流于表面,未有触及核心内容。
3.在编程学习中挑挑拣拣,无法持之以恒。一开始学习 Rails,半道儿发现 Phoenix 也不错,哦,学点 JavaScript 吧,这样就能用 Node.js 了......从 TJ 转到 Go 然后坚持了一阵子......说起来 Rust 好不好用来着?
一周内的浏览历史全是这些东西,「Web 开发者还是数据科学家」「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.编写代码并阅读书籍学习编程,但从不阅读他人的代码。OpenSource 为我们提供了一个惊人的资源,可以大大促进对编程和最佳实践的理解。
24.未能接触到其他范例或领域。因为是网页开发人员,就不去了解其他类型的开发。因为你知道面向对象的编程,就不去学习函数式编程。
25.不教别人学到的东西。没有什么能比向别人解释更能巩固自己所学。即使只是为了教学而学习也能提高自己的学习能力。
这样你就了解了以上 25 个误区也可以叫做「陷阱」。哦,实际上是 26 个,程序员都习惯从 0 开始的。