Baby steps

I'm fairly new to Arduino too, but I have a coding background (C/C++, C#, VB etc etc etc...). I was pleased to discover that my programming skills from regular computers are very transferrable to the Arduino platform. This is good news for you because it gives you the option to hone your coding skills by writing regular (non uP related programs) on a normal PC (and run them on the PC too). In fact it's possible to take chunks of standard C code from a PC application and dump them straight into the arduino IDE and make them work with only a little tweaking needed.

I don't know what PC platform you use (Windows/Mac/Linux/other) but I tend to do most of my day-to-day coding (for my job) on Linux. Writing C apps on linux is pretty similar to writing code for the Arduino, except that your IO and resources are obviously more limited on the Arduino. The coding environment is familiar to any C/C++ coder, although the Arduino IDE itself is painful to use in my opinion.

Writing code for arduinos does make you consider resource usage a lot more than you would on a PC, which can only be a good thing.