Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于编程,你的练习是不是有效的? #19

Open
phodal opened this issue Jun 19, 2016 · 9 comments
Open

关于编程,你的练习是不是有效的? #19

phodal opened this issue Jun 19, 2016 · 9 comments

Comments

@phodal
Copy link
Owner

phodal commented Jun 19, 2016

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就相到了这个问题,以及我是怎么做的?

对于我来说,提升技能的项目会有四种:

  • 纯兴趣驱动的项目。即我的Idea列表上的一个个酷炫的项目,先满足自己再说。
  • 理论驱动的项目。这一类的项目会比较少,因为我们需要牵强地驱动出这样的项目,然后以理论的方式驱动它。
  • 兴趣结合理论型。有一个长长的Idea列表,难免有些时间会和将要学习的理论有很大的交集。这种的练习效果是最好的。
  • 整合成文章、电子书。这一步主要是为了分享、巩固知识点、讨论。

简单地来说,就是:

  • 刻意的理论练习
  • 兴趣实践

两种不同的走向,上面的第三点和第四点,算是获得一些更好的效果。开始之前,让我们再次讨论一下情绪周期的问题。

编程与情绪周期

如果你每天都有很多可支配的自由时间时,你也会观察出情绪周期这件事。

所谓“情绪周期”,是指一个人的情绪高潮和低潮的交替过程所经历的时间。

这种周期看上去就好像是一图所示,但是总体上好像会长一点。

情绪周期

这一点在我的GitHub上看起来就有点明显了,至少它是一年的一个周期:

GitHub与编程的情绪周期

对于我来说,我会交替写代码和写博客、电子书。因为它以一定的规律在迭代着:

  • 适合写大量代码的日子
  • 适合学习理论的日子
  • 适合玩游戏《文明》、看电影、睡觉的日子。一般来说,这种事件的出现天数比较少。

主要还是集中在前两点上,代码练习与理论学习。

练习与计划

持续性

对于练习来说,需要保持相当高的持续性。很明显的一点是,参考我的GitHub的连击。对于我的连击来说,主要有下面的两个意图

  • 装逼
  • 驱使不断自己练习

如果有一个很好的动机来驱动自己去练习编程,那么GitHub的连击就是一个很好的入口。当然,GitHub已经不再显示连击多少天了。

在我们达到所谓的10000小时之前,我们还需要这么久:

10000.png

这只算上了工作上的时间,如果我们还有一半的时间也在练习上面,那么就会缩短为2.4年?

答案是:不可能!

怀孕需要10 个月,但是显然即使10 个人同时努力,也不能在一个月内生下孩子。

为了保证更好的练习效果,我们需要在每次短暂的时候之后,休息一段时间。为了实现这个我们可以用两种方式:

  • 多喝水。无论是学习还是工作,喝水总是有利于大脑思考,还有利于你多上厕所。多走动,可以防止你有各种职业病。
  • 采用所谓的番茄工作法——可以找个借口让自己休息。

番茄工作法

不断地休息,才能让下一个练习走得更往,这样才能保证好的练习效果。

练习之前,你需要知道三件事

  1. 练习要有计划才会有效果的!
  2. 练习要有计划才会有效果的!
  3. 练习要有计划才会有效果的!

对于不同的类型来说,你需要不同的练习计划。

编程:使用新技术、新思想

在练习编码的过程中,使用一些新的技术和新的编程思想可以帮助我们走出舒适区。当然如果你要在项目上用上新技术的时候,你也会采取相似的练习来做这样的事。而这也是大部分人尝试新技术的开始,如在每个新的编程语言的入门手册上,他们都会来一个经典的:

helloworld.png

然后我们就会做一些类似的项目来快速上手这个语言,如以前我们用Java实现了一个Blog系统,我们就可以用Node.js实现一个Blog系统。同样的,我们也很容易将其应用到不同的语言环境中。

假定,你在A项目上使用了Java语言,而你们的新项目使用了是类似于A的业务,那么你就可以采用新技术或者思想来实现。

理论:练习和总结

理论本身有可能很难理解,从而很难应用。因此,在学习理论的最好方式还是应用,而要构建一个好的场景并不是一件容易的事。

我们需要不断地探索过别人实践过的一些例子,模仿一些相似的用法,然后创建自己的类似的项目。同样的,我们还是可以基于我们以前实践过的项目,在那之上做一些改进来学习理论知识。

理论还有一点比较麻烦的是,记住它。在我们练习了很多之后,我们可能很快地就忘记它了。因此,你需要笔记或者博客来做这样的事。

不过,我还是觉得博客比私有化的笔记会有一点,好的东西应该分享出来。既然你都已经保存了,那说明它很重要。既然它对你很重要,那么它也对别人很重要,要不你怎么会保存呢?

最好是能写一些文章来发现自己了解了多少,如果是一系列的理论,那么就可以整理成电子书了。

@lipengzhou
Copy link

受益匪浅,谢谢。

@Still-Maos
Copy link

棒棒棒

@wjqnet
Copy link

wjqnet commented May 20, 2017

thanks

@Pomelo1001
Copy link

Best wishes for you!

@KaiWang2048
Copy link

哈哈哈

@Jolie6988
Copy link

智力周期图,情绪周期图怎样得到的?

@phodal
Copy link
Owner Author

phodal commented Nov 21, 2017

@Jolie6988 没有认真测量过。但是能明显感觉到这种周期,在两三周的时间里会写很多代码,没有看书的想法,在两三周里会去读书,没有动力写代码。

@HotBloodMan
Copy link

666

@JackyLee1976
Copy link

非常不错。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants