How to practice programming

Hi,

I was really enjoying the HandmadeCon. And there were a lot of things that were really good. One of those things was that Mike Acton was suggesting that every programmer should be practicing coding to improve. This really hit home and I got to thinking how I should do this. So maybe we could list some ways to practice in this topic.


Let me start by saying that I'm not a game programmer by trade. I don't even program C on a daily basis. So in a way, every coding session I do in C, I kind of see as practice. So my hobby project of making a game is practice in my book ;)
But I do get his point about throwing away your progress after your practice session, so you can start fresh the next time. Instead of it turning into a project.

I just don't really see myself coding the same thing every day for 30 minutes and erasing the result. Just to do it again the next day. But maybe it is something I should try to find out if it has any merit.


Another way of practicing that I could see myself doing is Project Euler. These are seperate programming problems. Most of them mathematical. I've already done some in the past, but am thinking of doing more of them. And I will probably switch to C, in order to get maximum effect.

This is more goal oriented, which could help me to keep going. It also helps practicing analytic skills, as most problems require you to analyse the subject and delve into the details, before you can really find an algorithm.


So what do you think about practice?

Mox
+1 for Project Euler.

Some other ideas:

Use your favorite algorithm textbook or website and randomly select an algorithm to implement. First challenge is to write a program to do the random selection :)

dailyprogrammer has three challenges per week. As per usual reddit quality, some are quite fun to do and clearly explained, while others are poorly explained which makes programming them difficult. I suppose it mimics software dev in the real world in that regard.

Edited by BrokenOpCode on
Everyone practices differently as you might have guessed.

When I practice my musical instruments (guitar, piano, bass, and a few others), I usually do a warm-up (fingers) exercises, scales (and all the modes), practice pieces (Sor or Bach etudes), and a short song if I have time. If I need to practice an actual piece, I will do after this and usually is small sections and in a random order. This is to make sure I know the piece at any point.

I kind of do the same with programming. Warm my hands up, create a blank project, read algorithms, implement them, do a small project.

A small project could be make a small game (tetris, space invaders, pong), a parser, build number increment, simple file type conversion.

One thing I also like to do is try the Ludum Dare. The next on is this weekend!!! For others you do not know, the Ludum Dare is a competition where you make a game in a weekend (48 hours) from scratch. That means all code, art, music, etc. has be made in that time.

The Ludum Dare is great way to practice your understanding of making games quickly and efficiently. Also, you can have fun doing it too!
What I've sort of been thinking on this topic is this: I think I am going to think of something I dread doing but do all the time, doesn't matter what language/project/etc. it is, and practicing doing it everyday so that when it comes time to do that thing that I'm normally very slow at, I can be much faster at that thing. The two things I think need to be considered for doing this are:

1. What is the thing that slows me down the absolute most

2. Is practicing that thing going to benefit my overall workflow, meaning if I am super slow at it but I only do that thing maybe once every few months, then it isn't worth it probably to practice 15-30-60 minutes a day doing it if it only saves me a little time once in a while.

Anyway, that's where I'm at with it.
Practice programming on InterviewBit with a timer. It’s split into categories and guides you on what topics to do when. The average time per question feature is a good indicator of how good you currently are. You will find more specific guidance on the InterviewBit platform directly.

Also if you are preparing for coding interviews they provide company-specific questions e.g. facebook interview questions asked previously.