在读代码大全2的过程中,中间有很大一部分感觉不实用,本以为后面没有有价值的内容了,没想到在第33章个人性格中看到了很多有必要分享的内容,本文是求知欲相关内容的整理。

image.png

编程是一个持续学习的过程,程序员需要不断追求新知识。求知欲对程序员的成长至关重要。

求知欲的重要性

  • 技术环境每隔几年就会发生变化,如果没有强烈的求知欲,程序员就会落伍
  • 成功的程序员会刻意培养求知欲,并把学习作为首要任务

培养求知欲的方法

  • 做实验探索新事物

  • 学习他人解决问题的方法

  • 研读优秀代码,向专业程序员请教

  • 阅读文档、书刊杂志等资料

  • 参加交流活动,与同行讨论

专业成长的阶段

程序员可以通过专业成长的阶段来检查自己的求知欲和技能水平,这包括:

  • 入门级:掌握基础语法

  • 中级:熟练使用一种以上语言

  • 高级:精通语言和技术

  • 技术专家:注重团队协作与交流

持续学习和增强求知欲是程序员不断进步的动力源泉。我们应反思自己在哪个阶段,并且主动掌握提高技能的方法。


下面是一些培养求知欲的方法。

在开发过程中建立自我意识

  • 通过阅读和观察来深入理解软件开发的全过程,增强自我认识,以不断进步。

  • 不要被简单重复的工作所束缚,要保持对新知识的渴望和自我提升的积极性。软件行业知识更新迅速,如果不及时学习,三年后就会落伍。

  • 如果当前工作无法提升技能,可以考虑换一份能够学习新知识、激发自我潜能的工作。软件职位需求量大,有很多选择机会。

试验探索

  • 通过设计小程序来试验和验证语言特性,可以更直接地观察特性的工作方式。相比在大项目中直接应用不太熟悉的特性,这种试验方式更可靠。

  • 如果小程序的运行结果与预期不符,不要气馁,这正是发现问题和学习的机会。应该利用小程序深入探究原因,而不是直接在大项目中应用。编程中制造错误并从中吸取教训也是提高的一个途径。

  • 试验小程序可以帮助我们安全地探索新事物。它允许我们迅速地犯错并获得反馈,从失败中获得经验教训。这比在重要项目中直接应用新技能要明智得多。

学习他人的解决方案

  • 解决问题是编程工作的核心。Herbert Simon的实验发现,人们并不总能自己想出最佳的解决方案,即使这些方案很容易被教授。

  • 我们不必坚持独立发明轮子,可以学习如何通过研究他人的解决方案来改进自己的问题解决能力。这可能比自己做无谓的重复尝试更有效。

  • 借鉴他人成功的经验可以帮助我们跳过不必要的绕路,直接获得可用的解决方案。我们仍然需要对他人的方案进行批判性思考和吸收,而不是生搬硬套。

做好前期分析和计划

  • 在行动前进行充分的分析和计划是很重要的,但也不能过度暴露在“分析麻痹”中。

  • 在部分情况下,我们需要及时地结束分析,启动行动,以免错失良机。程序员更多地会存在只分析不行动的问题。

  • 我们应该在行动前构思出一个合理的计划,进行必要的分析来评估可行性。但当计划已经成熟时,就应果断执行,而不是无休止地分析。

  • 适当的分析和计划可以使我们的行动更有针对性和效率,减少不必要的试错成本。但过分追求完美主义也会导致计划永远无法实施。我们需要在二者间求得平衡。

学习成功案例

  • 研读优秀程序和项目可以让我们像欣赏艺术品一样,从中学习精妙的设计与实现。尽管完整研读复杂系统需要大量时间,我们仍可通过理解高水平代码的设计思想和局部细节来学习。

  • 软件工程作为一个年轻的学科,成功和失败的经验还比较有限。我们应更多地学习其他成熟工程领域中设计优秀案例的启发,并借鉴其系统化的知识积累过程。

  • 研究他人遇到的具体问题和解决方案,以案例的形式总结并传播开来,是软件工程积累经验的重要途径。我们可以从中学习如何应对可能遇到的问题。

  • 许多优秀的编程书籍和文献都包含大量案例分析。我们应积极地通过阅读学习他人的经验教训,不必全部自己去重复探索。

  • 除了阅读案例,我们也可以直接学习优秀程序员的实际代码,分析他们的编程思维和风格。将自己的代码与之比较,找到差距及改进方向。

  • 值得让有经验的程序员评估我们的代码,给出修改意见,锻炼我们的编程能力。我们需要谦虚接受意见,进而提高。

  • 借鉴他人成功案例可以帮助我们站在巨人的肩膀上,避免重复发明轮子,更快获得成长。但我们也需要进行创新,而不只是复制使用。

阅读文档

  • 许多程序员不愿花时间阅读文档,但高质量的文档中包含大量有价值的信息。我们需要克服对文档的偏见,仔细阅读。

  • 即便文档质量参差不齐,也可以从中发现不易注意但却重要的内容。熟读文档可以避免重复劳动,节省时间。

  • 现代语言和框架的文档通常会包含大量使用指南和示例代码,仔细阅读可以快速上手。我们应该把文档视为学习资源,并坚持定期阅读。

  • 在遇到问题时查阅文档要优于直接发问,可以训练我们的自学能力。及时阅读文档更新也让我们随时掌握最新信息。

  • 文档学习需要耐心和毅力,但回报也很可观。这可以让我们更快地掌握新工具,避免重复劳动,是持续学习的重要一环。

广泛阅读

  • 大部分程序员每年读很少书,但阅读是持续学习的关键。哪怕每周花一点时间阅读计算机相关书籍,也能让你在这个行业脱颖而出。

  • 定期阅读一些计算机科学的经典书籍和前沿期刊可以帮助我们跟上行业发展趋势,对新技术和理论建立知识框架。

  • 即便只是略读一些博客文章和论文也有裨益。知识点的重复加深可以帮助我们建立系统的理解,培养学习能力。

  • 阅读的习惯不需要一蹴而就,我们可以从每周读少量书籍开始培养。时间积累下来,我们的知识储备会得到显著丰富。

  • 良好的阅读习惯不仅可以帮助我们获取知识,还可以训练持续学习和思考能力,使我们成为行业中的佼佼者。

与同行交流

  • 参加编程兴趣小组、社区活动,可以结识有共同学习目标的朋友,互相促进。

  • 在线编程论坛和社群中参与讨论,就某个技术问题展开理解,都是提升编程技巧的好方式。

  • 我们可以主动与更有经验的程序员交流,请教他们的专业见解,并让其评估我们的代码。谦虚求教是快速进步的捷径。

  • 即便是与水平相当的程序员聚会讨论,也可以通过脑力激荡获得新的思路。遇到困难时求助他人要优于闭门独思。

  • 参加学术会议,聆听前沿理论报告,可以拓展技术视野。与优秀的同行交流可以帮助我们节约学习时间,加速成长。

向专业程序员看齐

  • 程序员的专业成长可以分为初级、中级、高级和顶级四个阶段:

    • 初级程序员能够使用一门语言的基础语法,编写简单程序。

    • 中级程序员可以熟练运用一到两门语言编程,对基础知识有深入的理解。

    • 高级程序员需要对核心语言和技术有精通的掌握,解决复杂问题的能力较强。

    • 顶级程序员不仅有出色的硬技能,也拥有高水准的软技能,如团队协作、传播交流等。他们编写的代码可读性强,充当技术导师角色。

  • 我们应该根据自身所处的阶段,找到需要提升的方向。努力学习新知识,改进软技能,向专业程序员看齐。

  • 秉持谦虚求教的心态接受评估和改进,才能在这个行业中不断进步,达到更高的专业水准。这需要持之以恒的努力,但回报也非常值得。