Answer by Les Matheson:

In my job, I interview lots of programmers who are applying for work.  I'm one of those people who torment programmers with coding problems during interviews.
Here's a view that I think a lot of us programmer-torturers share:  I don't really care what API's you know.   I don't really care if you speak 18 coding languages, or whether you know SQL.   There are two things that really, really matter when I interview a candidate:
[a] Can they solve problems with code
[b] Can they conduct intelligent and honest conversations about the code they're writing?
[a]  Is mostly about algorithms and problem solving.   Some people, when given a coding problem, will whip right through it and make a couple of mistakes, but as they're working, they're talking, and often they catch the mistakes before I do.   At the other end of the spectrum, I've suffered through looooong exercises in which it was clear that the candidate simply doesn't have enough coding experience to even get close to a working solution.
There are people in the middle ground too, but where I work the bar is pretty high: about 4% of the candidates we talk to on the phone make it through the phone-screen coding exercise.   Most simply can't work the problems with the efficiency we expect, and these are often *not* very difficult problems in terms of computer science.
A "kick-ass" programmer is intelligent and has the ability to solve problems with code.  This isn't about what languages or APIs you know — you can always google tools.  It's about being able to formulate the steps and construct the data structures which are the core bread-and-butter of programming.
All of the top-notch employers in this field are paying attention to that question:  "how does this person solve problems with code."    That's where you should focus your extra effort if you want to improve.
And keep your resume < 2 pages.  Nobody cares how many APIs you've used.

I feel like a half-baked programmer. How can I improve my skills?