本文转载自公众号《阅读核心》(ID:AI_Discovery)拿破仑有一句名言:“战争需要三样东西——钱、钱、更多的钱”这和你在编程中学到的东西是一样的——代码,代码,代码。这是提高你编程技能的唯一可行选择。也许你早就知道这个道理,也许你已经做了多年码农。但是总会有被卡住的时候简而言之,你一直在写代码,收获不大。每个项目都是相似的,所以你解决问题的方式也是相似的。要跳出这个恶性循环,你需要跳出框框思考并挑战自己。这里有一些建议帮助你突破瓶颈1.重建现有工具反馈不足是学习编码的最大障碍之一。一开始,这可能不是什么大问题,因为你会得到一些即时反馈,比如当你想要你写的代码运行,它不会正常运行。Bu您的经验越丰富,您面临的挑战就越多。你需要考虑设计模式、架构、可读性、性能等,你会发现每个问题都有多种解决方案,无法判断你的解决方案是否合理。幸运的是,有一种方法可以直接获得反馈或对编码的不同看法:通过重建现有库或其他工具。你只需要找到一个工具(首选常用工具),并知道它的作用。然后确定其核心功能。仔细阅读它的程序手册,确认你已经掌握了它的API。现在,您已准备好编写代码。您不需要重新创建所有内容-只需重新创建一个或几个最常见的用例。如果进展顺利,应该需要几天时间才能完成。完成编码后,下一部分会更有趣。您检查代码,分析您做出的决定,考虑可能的边缘情况和错误并标记它们。然后打开你重建的工具的源代码,回溯代码和同样问题的解决方案。想想现在的计划和原来的计划有没有相似之处,有没有改进,有没有处理的不对,为什么。您尝试了解库代码背后的决策。许多库是由成熟的程序员创建并由社区扩展的。通过检查其代码,您可以了解解决问题的新模式和新方法。下次遇到类似问题时,您将把新知识付诸实践。2.结对编程结对编程是一种颇具争议的方法。这是一种软件开发技术,通常需要两个程序员一起工作,但只有其中一个人编写代码,而另一个人则观察和审查整体工作。两个程序员的角色定期互换。这种方法的缺点很明显:只有一个程序员,所以软件创建时间更长;但好处是软件的质量会写的更好。也许结对编程对软件开发的好处值得商榷,但它对学习的帮助是显而易见的。当你写代码的时候,对方会注意你的思维方式和思维方式。分析创建代码的过程,这对你们俩都是一个挑战。通过观察其他人编写代码,您可以了解他们的思维模式。您不太可能对问题有相同的解决方案,因此这是学习另一种看待问题的方式的绝好机会。结对编程可能很棘手。为了使它更容易和更有效,你应该找到一个与你水平相当的配对伙伴。如果他们太初级,你需要不断地单方面指导他们;如果他们太熟练,他们会很快感到无聊并承担一切。3、克制自己的创造力是少见的。一旦习惯了一种解决问题的思路,就连替代方案都不去想,就像装上自动变速器一样。程序员并不是唯一与创造力作斗争的职业。对于作家来说,创造力更是一个大问题。为了激发创造力,他们开发了一些技巧。约束是激发创造力的最佳技巧之一。对于作家来说,这个限制可能是文章的字数(比如用少于十个字写一个故事);或者它可能是关于单词的使用(例如文章中没有出现以“S”开头的单词)。作为程序员,有无数种方法可以通过限制自己来获得创造力,例如:避免某些语言特性(例如代码中不出现if和switch语句)。降低数据可变性——尽可能使用纯函数,甚至可以使用Immutable等相关工具来实现不变性。使用测试驱动开发——这是一种强大的技术,可以优化您的代码并提示您改变思维方式。限制时间(例如,给自己三天时间开发应用程序或参加黑客马拉松)。自律的重点不是约束,你可以选择任何你感兴趣的方法,但重点是范式转变。这种限制迫使您重新考虑基本原理。重新思考、提炼想法,你就会成长。4.写技术文章长时间的编程工作会让你觉得自己很了解自己的工作。但我可以向你保证你没有。在写技术文章的过程中,你会被震撼到。您过去常常认为编程中的许多事情是理所当然的,不假思索地一遍又一遍地重复相同的步骤。在以书面形式解释编程过程时,您开始考虑您的假设和方法,质疑某些代码是否是问题的核心,而其他代码是否多余或过于复杂。写作让您更有条理和批判性地思考您编写的代码,重构和简化它以创建对其他人有帮助的学习材料。这样做有什么意义?你在学习。看起来你是在教别人,但你实际上是在学习。没有比教别人更好的方法来深入了解一门学科。好好利用这一点,你会突飞猛进!
