拿破仑·波拿巴曾说过一句话:“对于战争,我们需要三样东西,金钱,金钱和更多的金钱。”
编程学习同样需要编程,编程和不断编程,这是让你的编程技能变得更好的方式。
或许你已经编程多年了,但是我敢打赌你依然会碰到处理不了的难题,你可能正在找一份工作,但却不知道如何脱颖而出,你也可能正在参加一个大项目,但却困难重重。如果你想要摆脱这种恶性循环,你需要跳出思维框架并挑战自己,这里分享4种提高编程技能的方式,希望对你有所帮助。
1. 重构现有工具
反馈不足是你编程学习最大的障碍之一,当你刚开始学编程的时候,这并不是什么大问题,你想让你的代码运行起来,你获得的经验越多,你面临的挑战就越多。你需要考虑设计模式、架构、可读性、性能等。你会发现每个问题都有多种解决方案,你需要判断你的解决方案是否合理。
幸运的是,有一种简单的方法可以获得对代码的反馈或考虑问题的不同视角:通过重新构建现有的库或其他工具。
你所需要做的就是找到一些工具(最好是你经常使用的工具),并了解它的功能,然后确定它的核心功能。仔细阅读文档,了解API,确保自己已经可以开始重构了。
你不需要重新构建所有东西,只要一个或几个常见的用例,一般情况下,这个项目做下来需要花你几天时间。
当你完成编程时,有趣的部分就来了,检查分析源码,考虑可能出现的情况和Bug。然后重新打开你创建的工具的源代码,检查你的代码和解决这些问题的方法,你们的解决方案相似么?是更好还是更糟,为什么?尝试去理解代码库背后的决策。
许多库是由资深的程序员创建的,并由社区扩展的,通过检查它们的代码,你可以学习解决问题的新模式和方法,当你试图解决这些问题时,将新知识应用到实践中就会更容易。
2. 结对编程
结对编程是一个有争议的想法,它是一种软件开发技术,两个程序员一起工作,但只有一个人编写代码,另一个审查回顾代码。两人定期交换角色。
缺点很明显:只有一个程序员编写代码,因此需要更多的时间来创建软件,好处就是更好的软件质量。结对编程对软件开发的好处是有争议的,但它对你的编程技能提升的好处是很明显的。
当你写代码时,你的搭档会发现的你模式和思维习惯,你们都需要彼此分析如何创建代码。当你观察别人写的代码时,你可以看到他们的模式和心态,几乎可以肯定的是,你们处理问题的方式是不一样的,所以这是从另一个角度发现问题的方式。
结对编程有一定难度,为了更有效率,你的搭档应该接近你的水平,如果他们资历太浅,就会变成你在之道他们。但如果他们比你资深的多,那他们很可能很快就对你没耐心了,或者干脆什么事情都自己做。
3. 约束自己
有创造力是很难的,你习惯于用一种方法解决问题,甚至不考虑其他方法,这就像自动驾驶一样,作为一名程序员,为了变得更加有创造力,你有无数的方法来约束自己,诸如:
- 避免一些语言特性(例如,写代码时不使用if或Switch语句)
- 减少数据的可变性——尽量使用纯函数,甚至可以用一些工具来实现不可变性,比如Immutable。
- 使用测试驱动开发——TDD是一种强大的技术,它可以让你的代码变得更好,并迫使你改变思维方式。
- 限制时间,例如给自己三天时间开发应用或参加黑客马拉松等。
约束自己不是最重要的部分,你可以选择看起来有趣的东西,关键是范式的转变,迫使自己重新思考和完善你的方法才是你成长的加速剂。
4. 写技术文章
假如你已经编程一段时间了,并且自认为很清楚自己在干什么,但实际上并不是这样的,当你在编程时,你就会发现自己不清楚的事情还有很多,并且经常无意识地一遍又一遍地重复这些相同的步骤。
当你用书面的形式解释你编码的过程,你就会开始深入考虑自己的编程方法,开始思考某些代码是否是问题的核心部分,其他代码是否过于冗余和复杂。写作将使你对你的代码有条理、有批判性地思考。你需要对其进行重构和简化,以便为其他人创建有用的学习材料。要深入了解一门学科,没有比教别人更好的方式了,好好利用这个方式,你的成长速度就会超乎你想象。