比看书还高效,这4种提高编程技能的方式你知道么?

开发 前端
或许你已经编程多年了,但是我敢打赌你依然会碰到处理不了的难题,如果你想要摆脱这种恶性循环,你需要跳出思维框架并挑战自己,这里分享4种提高编程技能的方式,希望对你有所帮助。

拿破仑·波拿巴曾说过一句话:“对于战争,我们需要三样东西,金钱,金钱和更多的金钱。”

编程学习同样需要编程,编程和不断编程,这是让你的编程技能变得更好的方式。

或许你已经编程多年了,但是我敢打赌你依然会碰到处理不了的难题,你可能正在找一份工作,但却不知道如何脱颖而出,你也可能正在参加一个大项目,但却困难重重。如果你想要摆脱这种恶性循环,你需要跳出思维框架并挑战自己,这里分享4种提高编程技能的方式,希望对你有所帮助。

1. 重构现有工具

反馈不足是你编程学习最大的障碍之一,当你刚开始学编程的时候,这并不是什么大问题,你想让你的代码运行起来,你获得的经验越多,你面临的挑战就越多。你需要考虑设计模式、架构、可读性、性能等。你会发现每个问题都有多种解决方案,你需要判断你的解决方案是否合理。

幸运的是,有一种简单的方法可以获得对代码的反馈或考虑问题的不同视角:通过重新构建现有的库或其他工具。

你所需要做的就是找到一些工具(最好是你经常使用的工具),并了解它的功能,然后确定它的核心功能。仔细阅读文档,了解API,确保自己已经可以开始重构了。

你不需要重新构建所有东西,只要一个或几个常见的用例,一般情况下,这个项目做下来需要花你几天时间。

当你完成编程时,有趣的部分就来了,检查分析源码,考虑可能出现的情况和Bug。然后重新打开你创建的工具的源代码,检查你的代码和解决这些问题的方法,你们的解决方案相似么?是更好还是更糟,为什么?尝试去理解代码库背后的决策。

许多库是由资深的程序员创建的,并由社区扩展的,通过检查它们的代码,你可以学习解决问题的新模式和方法,当你试图解决这些问题时,将新知识应用到实践中就会更容易。

2. 结对编程

[[375142]]

 

结对编程是一个有争议的想法,它是一种软件开发技术,两个程序员一起工作,但只有一个人编写代码,另一个审查回顾代码。两人定期交换角色。

缺点很明显:只有一个程序员编写代码,因此需要更多的时间来创建软件,好处就是更好的软件质量。结对编程对软件开发的好处是有争议的,但它对你的编程技能提升的好处是很明显的。

当你写代码时,你的搭档会发现的你模式和思维习惯,你们都需要彼此分析如何创建代码。当你观察别人写的代码时,你可以看到他们的模式和心态,几乎可以肯定的是,你们处理问题的方式是不一样的,所以这是从另一个角度发现问题的方式。

结对编程有一定难度,为了更有效率,你的搭档应该接近你的水平,如果他们资历太浅,就会变成你在之道他们。但如果他们比你资深的多,那他们很可能很快就对你没耐心了,或者干脆什么事情都自己做。

3. 约束自己

有创造力是很难的,你习惯于用一种方法解决问题,甚至不考虑其他方法,这就像自动驾驶一样,作为一名程序员,为了变得更加有创造力,你有无数的方法来约束自己,诸如:

  • 避免一些语言特性(例如,写代码时不使用if或Switch语句)
  • 减少数据的可变性——尽量使用纯函数,甚至可以用一些工具来实现不可变性,比如Immutable。
  • 使用测试驱动开发——TDD是一种强大的技术,它可以让你的代码变得更好,并迫使你改变思维方式。
  • 限制时间,例如给自己三天时间开发应用或参加黑客马拉松等。

约束自己不是最重要的部分,你可以选择看起来有趣的东西,关键是范式的转变,迫使自己重新思考和完善你的方法才是你成长的加速剂。

4. 写技术文章

[[375143]]

假如你已经编程一段时间了,并且自认为很清楚自己在干什么,但实际上并不是这样的,当你在编程时,你就会发现自己不清楚的事情还有很多,并且经常无意识地一遍又一遍地重复这些相同的步骤。

当你用书面的形式解释你编码的过程,你就会开始深入考虑自己的编程方法,开始思考某些代码是否是问题的核心部分,其他代码是否过于冗余和复杂。写作将使你对你的代码有条理、有批判性地思考。你需要对其进行重构和简化,以便为其他人创建有用的学习材料。要深入了解一门学科,没有比教别人更好的方式了,好好利用这个方式,你的成长速度就会超乎你想象。

 

责任编辑:赵宁宁 来源: 程序员书库
相关推荐

2020-09-11 06:39:29

ThreadLocal线程

2020-06-17 08:12:05

Kubernetes容器

2020-04-27 08:31:29

单例模式Python软件设计模式

2020-06-22 07:55:31

编程语言

2021-08-07 15:29:48

区块链比特币技术

2021-05-07 16:19:36

异步编程Java线程

2020-12-28 08:46:38

编程开发技能

2017-07-14 08:46:51

开源编程云计算

2021-03-25 15:07:50

编程技术工具

2021-11-25 07:01:57

.NET开发编程

2021-06-02 05:47:32

程序员编程开发

2019-11-12 14:18:56

PythonWord设计

2021-04-14 14:46:13

前端Chrome插件

2022-10-10 12:53:33

Python模块

2023-10-30 11:53:37

继承JS父类

2020-03-23 08:31:13

网络时延时延网络

2021-09-02 08:24:41

TypeScript 泛型前端

2020-09-10 08:47:41

编程代码开发

2020-06-10 08:33:05

Java 编程语言开发

2020-02-06 10:10:24

python程序代码
点赞
收藏

51CTO技术栈公众号