Just like a poet or an athlete practicing code every day will only make you better.

Lately I have been trying to get into blogging more and any article I read always says, “you need to write every day”. It doesn’t matter if what I write down gets published, but forming the habit of trying to write something every day is what counts. The more I write the easier it will become, the more natural it will feel and the better I will get at it.

This really isn’t just true of writing or blogging, it is something that can be said of anything at all. Riding a bike, playing basketball, reading, cooking or absolutely anything at all. The more you do it, the easier it will become and the better you will get.

As the title of the post will allude you to, this is also true of programming. If you want to be really good at programming you have to write code every day. The more code you write the easier it’ll be to write and the better you will be at programming. Just like any other task I’ve listed in this article, trying to write code every day, even if you are used to it, can be really hard to do and a really hard habit to keep.

“What should I write?” The answer to this question is going to be different for everyone, but it is the hurdle which you must first overcome to work your way towards writing code every day. Usually people write code to solve problems that they have, but not everyone has problems to solve. There is usually a chicken and the egg problem. You need to write code to have coding problems, and you need to have coding problems to have something to write. So, where should you start?

For myself, one of the things I like doing is to rewrite things that already exist. Sometimes it can be hard to come up with a new and different idea or even a new approach to an existing idea. However, there are millions of existing projects out there to copy. The idea I go for is to try and replicate the overall goal of the project, but in my own way. That might mean writing it in a different language, or changing the API for it or just taking some wacky new approach to solving the same issue.

More times than not the above exercise leads me to a problem that I then can go off and solve. For example, a few weeks ago I sat down and decided I wanted to write a web server in go (think nginx / apache ). I knew going into the project I wanted a really nice and easy to use configuration file to define the settings. So, I did what most people do these days I and used json , but that didn’t really feel right to me. I then tried yaml , but yet again didn’t feel like what I wanted. I probably could have used ini format and made custom rules for the keys and values, but again, this is hacky. This spawned a new project in order to solve the problem I was having and ended up being forge, which is a hand coded configuration file syntax and parser for go which ended up being a neat mix between json and nginx configuration file syntax.

Anywho, enough of me trying to self promote projects. The main point is that by trying to replicate something that already exists, without really trying to do anything new, I came up with an idea which spawned another project and for at least a week (and continuing now) gave me a reason to write code every day. Not only did I write something useful that I can now use in any future project of mine, I also learned something I did not know before. I learned how to hand code a syntax parser in go .

Ultimately, try to take “coding every day” not as a challenge to write something useful every day, but to learn something new every day. Learn part of a new language, a new framework, learn how to take something apart or put it back together. Write code every day and learn something new every day. The more you do this, the more you will learn and the better you will become.

Go forth and happy coding. :)