就像运动员每天锻炼一样,每天练习写代码可以成就更优秀的你。
最近我看过的博客,基本上每篇都有提到,“你需要每天写代码”。什么主题不重要,关键是要养成每天写代码的好习惯。写得越多,代码就会变得越容易,你也会越擅长编码。
这不仅适用于写代码,写诗和运动,事实上,这句话可应用于任何行业。骑自行车,打篮球,读书,烹饪等等等等。你做的越多,你就会越擅长,熟能生巧就是这个道理。
这也是编程领域的真理。如果你想擅长编程,那么你就必须每天写代码。代码写得越多,你才会觉得它越容易,并且越擅长于编程。就像我在本文中列出的其他任务一样,每天写代码,即使你已经习以为常,却依然很难保持住这个习惯。
“我应该写什么?”这个问题的答案是因人而异的,但这却是你用自己的方式每天写代码所必须先克服的障碍。通常人们编写代码是用来解决问题的,但不是每个人都有问题需要解决。这就像著名的鸡和蛋的问题。那么,你应该从哪里开始呢?
我比较喜欢重写已经存在的东西。有时候,费劲心思想出一个新的不一样的点子是很困难的,甚至是针对现有思想想出一种新的方法路径也不容易。然而,现有可复制的项目很多很多。我的想法是尝试复制项目的总体目标,但用的是我自己的方式。这可能意味着使用不同的语言,或改变它的API,又或者只是采取一些古怪的新方法来解决同样的问题。
这样疯狂的练习写代码让我变得更善于发现问题。例如,大概几周前,我决定用go写一个Web服务器(类似于nginx/apache)。我想要一个又合适又易于使用的配置文件来定义设置。所以,我做了在现在大多数人都会做的选择,我使用了json,但感觉并不合适。然后尝试了yaml,但依然不是我想要的。我可能也试过使用ini格式以及为键和值制定自定义规则,但无济于事。于是为了解决这个问题,衍生出了一个新的项目——一个go的手动编码配置文件语法和解析器演变成为一个整洁的混合了json和nginx的配置文件语法。
不论怎么说,这样一来我就有了一个可用的项目。虽然是通过复制已经存在的东西,其实并没有真正尝试新的内容,但我从这个过程中得到的那个衍生而来的项目,至少能让我一个星期都有理由每天去写代码。这么做不仅能能让我真的写出一些有用的东西——可用于以后我的任何项目,而且也让我也学到了一些我之前并不知道的东西。比如说我学会了如何用go手动编码一个语法分析器。
最后,“每天编码”这个挑战不是为了每天写一些有用的东西,而是为了每天学习新的东西。学习新的语言,学习新的框架,学习拆开和组合。每天写代码,每天学一点新的东西。随着时间的积累,你不但能学到很多,你也会变得更为优秀。
加油,和我一起快乐编码吧。