你需要每天写代码吗?
你需要每天写代码吗?
就像运动员每天锻炼一样,每天练习写代码可以成就更优秀的你。 最近我看过的博客,基本上每篇都有提到,“你需要每天写代码”。什么主题不重要,关键是要养成每天写代码的好习惯。写得越多,代码就会变得越容易,你也会越擅长编码。 这不仅适用于写代码,写诗和运动,事实上,这句话可应用于任何行业。骑自行车,打篮球,读书,烹饪等等等等。你做的越多,你就会越擅长,熟能生巧就是这个道理。
这也是编程领域的真理。如果你想擅长编程,那么你就必须每天写代码。代码写得越多,你才会觉得它越容易,并且越擅长于编程。就像我在本文中列出的其他任务一样,每天写代码,即使你已经习以为常,却依然很难保持住这个习惯。
“我应该写什么?”这个问题的答案是因人而异的,但这却是你用自己的方式每天写代码所必须先克服的障碍。通常人们编写代码是用来解决问题的,但不是每个人都有问题需要解决。这就像著名的鸡和蛋的问题。那么,你应该从哪里开始呢?
我比较喜欢重写已经存在的东西。有时候,费劲心思想出一个新的不一样的点子是很困难的,甚至是针对现有思想想出一种新的方法路径也不容易。然而,现有可复制的项目很多很多。我的想法是尝试复制项目的总体目标,但用的是我自己的方式。这可能意味着使用不同的语言,或改变它的API,又或者只是采取一些古怪的新方法来解决同样的问题。
这样疯狂的练习写代码让我变得更善于发现问题。例如,大概几周前,我决定用go
写一个Web服务器(类似于nginx
/apache
)。我想要一个又合适又易于使用的配置文件来定义设置。所以,我做了在现在大多数人都会做的选择,我使用了json
,但感觉并不合适。然后尝试了yaml
,但依然不是我想要的。我可能也试过使用ini
格式以及为键和值制定自定义规则,但无济于事。于是为了解决这个问题,衍生出了一个新的项目——一个go
的手动编码配置文件语法和解析器演变成为一个整洁的混合了json
和nginx
的配置文件语法。
不论怎么说,这样一来我就有了一个可用的项目。虽然是通过复制已经存在的东西,其实并没有真正尝试新的内容,但我从这个过程中得到的那个衍生而来的项目,至少能让我一个星期都有理由每天去写代码。这么做不仅能能让我真的写出一些有用的东西——可用于以后我的任何项目,而且也让我也学到了一些我之前并不知道的东西。比如说我学会了如何用go
手动编码一个语法分析器。
最后,“每天编码”这个挑战不是为了每天写一些有用的东西,而是为了每天学习新的东西。学习新的语言,学习新的框架,学习拆开和组合。每天写代码,每天学一点新的东西。随着时间的积累,你不但能学到很多,你也会变得更为优秀。
加油,和我一起快乐编码吧。
- Java基础06 组合
- 警告:MySQL-server-5.6.21-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
- MySQL(五)之DDL(数据定义语言)与六大约束
- Java基础08 继承
- 关于python字典类型最疯狂的表达方式
- centos6.5使用yum安装mysql
- Java基础09 类数据与类方法
- MySQL(四)之MySQL数据类型
- JS魔法堂:ASI(自动分号插入机制)和前置分号
- Java基础05 实施接口
- JS魔法堂:函数节流(throttle)与函数去抖(debounce)
- mysql用户管理
- Java基础10 接口的继承与抽象类
- 纸上谈兵: 数学归纳法, 递归, 栈
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android仿微信通讯录搜索示例(匹配拼音,字母,索引位置)
- Android通过overScrollBy实现下拉视差特效
- Android使用手势实现翻页效果
- Android应用内悬浮窗的实现方案示例
- Android实现View拖拽跟随手指移动效果
- Android中button的onClick事件几种方法
- Android利用Glide获取图片真正的宽高的实例
- Android 自定义AlertDialog对话框样式
- Android自定义一个图形单点移动缩小的效果
- 详解Android实现购物车页面及购物车效果(点击动画)
- Android利用LitePal操作数据库存取图片
- Android 改变图标原有颜色和搜索框的实例代码
- Android自定义滑动验证条的示例代码
- Android实现图片转高斯模糊以及高斯模糊布局
- android多媒体类VideoView使用方法详解