Most of my life I have told people that I'm not a "coder." This is partially because I don't want the responsibility and eventual headache of figuring out a complex system on behalf of someone else and partially because I have never been efficient when attempting to code. I thought that my inefficiency was what kept me from really creating programs - but I'm starting to change my mind.
Programming is a difficult feat, but not as difficult as learning another language. Sure, different programming systems are referred to as "languages," but they are still mostly in abbreviated English. And unlike other languages, there are not the same nuances to learn or pronunciations to memorize. Additionally, language is used mainly in real-time, wherein code is not. Few people code while the program is actually running, although I'm sure some folks attempt to!
Since code is not as time sensitive as language, non-linear experimentation is both possible and probably yields the best results. Imagine being a writer and taking different paragraphs out of context to make sure they work independently, regardless of where they appear in a novel. Coders are able to take a large and complex problem and break it down into individual elements. Each of these elements can then be tested independently (or somewhat independently) before being completely linked together.
I have a very Machiavellian coding style. I see the outcome as a distant goal and do anything I can to get there. That means I break standards and conduct all the time - sometimes writing ten lines where I can write one. I simply want something to work. A part of this is impatience. A part of this is, perhaps, the fear that if I don't get there quickly I'm going to lose interest and never finish. So my source becomes very sloppy and quite embarrassing - although few people would even know that!
Lately, however, as I take another iOS class (programming mobile games for iPhone or Android) and review some of my Flash work, my ability to understand code, visualize and plan, and execute has started to shift. The process is no longer about simply getting something done - it's about doing it the right way. I've been working off of wireframes and write-ups, instead of simply attacking a blank space with an idea. I've been paying attention to the process from a meta-view instead of simply solving tiny problems. And, most of all, I've been coding and coding in my spare time. It turns out that the most valuable way for me to become a better programmer is to program more often and not just every year or two.
The feeling is liberating, since I've avoided programming for so long that my own projects have suffered for lack of a true developer. I sit on design documents that have never been realized - but that's changing every day. The barrier of entry is much smaller than I've been telling myself and others - and deep down, I think I'm happy to be a "coder."